一 mov 和 lea
mov:
mov eax , [ 00401000] ---[] 是取出里面的值
eax=[00401000]
mov :把后面的值赋给 eax
lea:去掉中括号,取出地址 (只是地址)
lea eax, [ 00401000]
eax=00401000
二 Push Pop Sub Add
Push(改变堆栈,存放数据):
Push epb==> sub esp,4 + mov[esp],epb (mov[esp],epb 把epb值放到esp这个地址里)
Pop(弹出数据):
Pop xxx ==>mov xxx,[esp] + add esp ,4 (mov xxx,[esp] 陈esp地址里的值给xxx)
Sub(减): Sub eax,1 ==>eax=eax-1
Add(加): Add eax ,1 ===> eax=eax + 1
三 Call和堆栈的关系
eip寄存器:指令指针寄存器,代码寄存器,保存着我们将要执行的代码
Call xxx(地址):
push了Call这行代码的下一行代码。
push EIP + jmp(某个地址)
本来是在51FCBC这个位置, 如何去到67D6A0 jmp无条件跳转
Return :
pop eip