baigujing

一个方法对应一个栈,下面见图

 

 

 

 

先传入了一个参数1,从右到左的传参数,在调用call的方法内存地址,然后,她会先把下一行执行的代码push进栈中,也就是下一行的地址:0020142c

最后的add esp,4,其实就是我们刚刚给栈中传入了一个参数,所以咱们得维护栈的平衡

咱们看看方法内部

 

 

先保存上一个方法的栈底指针,

push ebp

在把上一个方法的栈顶指针作为这个方法的栈底指针,mov ebp,esp

sub esp,0d8  在给本方法分配局部变量的大小

 

mov eax,dword ptr ss:[ebp+8]  把上一个,也就是传进入的参数赋值给eax

 

最后在 mov esp,ebp.     把这个方法的栈底指针分配给栈顶指针

pop ebp   在把保存的栈底指针分配给ebp

 

retn  这句话其实是:pop eip   把eip的地址改变

分类:

技术点:

相关文章:

  • 2021-09-21
  • 2021-04-15
  • 2021-09-10
  • 2021-09-21
  • 2021-11-18
  • 2021-12-18
  • 2021-09-21
猜你喜欢
  • 2021-09-21
  • 2021-09-21
  • 2021-09-21
  • 2021-09-21
  • 2021-09-21
  • 2021-09-21
  • 2021-09-21
相关资源
相似解决方案