我學習逆向,整理的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...