c++代码.png
add函数开始
跳转到add内部
image.png
image.png
栈初始 栈底=栈顶 ,栈顶是低地址
所以 push 栈顶值会减小
- 根据函数调用约定 参数入栈 push
push 0x5
push 0x3
调用 call 会 push 当前 EIP
push ebp 将原来的栈底的值先 push 保存
mov ebp,esp 将当前栈顶 视为 函数内的栈底
sub esp,0x1C 将栈顶抬高,为函数内局部变量留出存储空间
...
...
...
函数结束
mov esp,ebp 将栈顶还原(由于函数内的栈底 是原来的栈顶值)
pop ebp 将栈底值还原
retn 会 pop eip
因为push了两个参数为了保持堆栈平衡,call结束回来后
add esp,0x8

c++代码.png
add函数开始
跳转到add内部









网友评论