执行retn、call、leave指令的时候,esp和eip的变化情况

windows 32位汇编的环境下

0A10FF61 call      0A11FFAA
0A10FF66 MOV EAX,DWORD PTR SS:[EBP+3C]

  1. call

 

esp = esp - 4



[esp]
= 0A10FF66   //将返回地址压入栈中
 
  eip = 0A11FFAA    //跳转到函数地址
 

 

 

 

 2. retn

 


eip
= [esp]
esp
= esp - 4 //将esp中的数据出栈到eip中

 

 

 3.  leave

 


 


mov esp,ebp
pop ebp
//还原函数栈

 

 

posted on 2010-08-10 21:21  rainduck  阅读(2627)  评论(0编辑  收藏  举报

导航