mov eax , ebx // eax = ebx
lea eax , [ebx + 30] // eax = ebx + 30
push pop //入栈,出栈
pushax popax //全部入栈,全部出栈
add eax,5 // eax += 5
sub eax, 5 //eax -= 6
inc eax // eax += 1
mul //乘法
div //除法
堆栈的学习
ESP 栈顶指针
EBP栈底指针 (本层CALL的栈底)
改变堆栈的操作
push eax // sub esp , 4 mov [esp] , eax
pop eax // mov eax , [esp] add esp , 4
call 1234 //push eip jmp 1234
return 8 //pop eip add esp , 8 eip表示下步要执行的地址
add esp , xxx
sub esp , xxx
栈底指针的学习
在逆向过程中,如果遇到
mov eax , [ebp + 8]
这样的如何去跟
这样的就需要把[ebp + 8]看成一个整体来处理
跟进CALL里面看,可以看到这样的代码
push ebp //在栈中保
lea eax , [ebx + 30] // eax = ebx + 30
push pop //入栈,出栈
pushax popax //全部入栈,全部出栈
add eax,5 // eax += 5
sub eax, 5 //eax -= 6
inc eax // eax += 1
mul //乘法
div //除法
堆栈的学习
ESP 栈顶指针
EBP栈底指针 (本层CALL的栈底)
改变堆栈的操作
push eax // sub esp , 4 mov [esp] , eax
pop eax // mov eax , [esp] add esp , 4
call 1234 //push eip jmp 1234
return 8 //pop eip add esp , 8 eip表示下步要执行的地址
add esp , xxx
sub esp , xxx
栈底指针的学习
在逆向过程中,如果遇到
mov eax , [ebp + 8]
这样的如何去跟
这样的就需要把[ebp + 8]看成一个整体来处理
跟进CALL里面看,可以看到这样的代码
push ebp //在栈中保