常見指標和陣列的反彙編 x86

2021-08-15 03:05:48 字數 2572 閱讀 6583

我學習逆向,整理的vc6編譯出來指標和陣列一些常見的反彙編筆記。由於我是新手,肯定有一些疏漏不完善的,我遇到了會實時更新的。

一級指標定義
5:        int n = 2;

0040d428 mov dword ptr [ebp-4],2

6: int *p1 = &n;

0040102f lea eax,[ebp-4]

00401032 mov dword ptr [ebp-8],eax

二級指標定義
7:        int **p2 = &p1;

00401035 lea ecx,[ebp-8]

00401038 mov dword ptr [ebp-0ch],ecx

使用一級指標給變數賦值
8:        *p1 = 5;

0040103b mov edx,dword ptr [ebp-8]

0040103e mov dword ptr [edx],5

使用二級指標給變數賦值
9:        **p2 = 3;

00401044 mov eax,dword ptr [ebp-0ch]

00401047 mov ecx,dword ptr [eax]

00401049 mov dword ptr [ecx],3

使用一級指標讀取變數的值
12:       temp = *p1;

0040d44f mov edx,dword ptr [ebp-0ch]

0040d452 mov eax,dword ptr [edx]

0040d454 mov dword ptr [ebp-8],eax

使用二級指標給讀取變數的值
13:       temp = **p2;

0040d457 mov ecx,dword ptr [ebp-10h]

0040d45a mov edx,dword ptr [ecx]

0040d45c mov eax,dword ptr [edx]

0040d45e mov dword ptr [ebp-8],eax

陣列的定義和賦值
5:        int intarr = ;

0040d428 mov dword ptr [ebp-14h],0 # intarr[0]

0040d42f mov dword ptr [ebp-10h],1 # intarr[1]

0040d436 mov dword ptr [ebp-0ch],2 # intarr[2]

0040d43d mov dword ptr [ebp-8],3 # intarr[3]

0040d444 mov dword ptr [ebp-4],4 # intarr[4]

給陣列裡的元素賦值
9:        intarr[1] = 2;

0040d451 mov dword ptr [ebp-10h],2

讀取陣列裡的元素
10:       temp = intarr[3];

0040d458 mov ecx,dword ptr [ebp-8]

0040d45b mov dword ptr [ebp-18h],ecx

陣列元素自增
16:       intarr

[2]++;

0040d471

movecx,dword

ptr[ebp-18h]

0040d474

addecx,1

0040d477

movdword

ptr[ebp-18h],ecx

使用陣列給指標初始化
7:        int *pint = intarr;

0040d44b lea eax,[ebp-14h]

0040d44e mov dword ptr [ebp-1ch],eax

指標自增
18:       pint++;

0040d47a mov edx,dword ptr [ebp-28h]

0040d47d add edx,4

# 指標的加減法 = 加減數 * sizeof(指向的型別)

0040d480 mov dword ptr [ebp-28h],edx

常見運算的x86反彙編分析 2

c語言中的模運算是基本的運算,我們來看看debug模式下vs2008對下面的這句 求模運算的反彙編 int b a 8 1.0041366e 8b 45 f8 mov eax,dword ptr a 2.00413671 99 cdq 3.00413672 33 c2 xor eax,edx 4.0...

x86彙編CF和OF的區別

1.溢位標誌位of 帶符號數的算術運算結果,若超出了8位或16位數所能表達的範圍時,of 1,表示產生溢位 否則of 0.8位數應該在 128至 127之間,16位數在 32768至 32767.2.進製標誌位cf 當指令執行的結果在最高位出現進製或借位時,cf 1 否則為0.最高位進製了不就是溢位...

x86彙編中巨集的使用

定義格式 巨集指令名 macro 形式引數 形式引數 巨集體 endm 注意事項 先定義後使用 macro與endm成對使用 使用舉例 write string macro a lea dx,a mov ah,9 int21h endmrclf db 0dh,0ah,write string rcl...