码迷,mamicode.com
首页 > 其他好文 > 详细

栈学习(一)

时间:2020-03-14 11:18:48      阅读:48      评论:0      收藏:0      [点我收藏+]

标签:address   流程   ESS   com   学习   src   字节   空间   接下来   

技术图片

以上是帧指针的示意图:下面是函数调用的示意图


技术图片

字节差取决于程序位数,32位为4,64位为8


技术图片

push ebp
mov  ebp,esp    //接下来开辟栈空间,和保存寄存器值,后者赋值前者

技术图片

i386函数的标准进入和退出指令序列
push ebp
mov  ebp,esp
sub esp,x  //开辟栈空间,x个字节数 
push [reg1]
。。。。
push [regn]//保存必要参数
。。。。。。。//函数的实际内容
pop [regn]
。。。。
pop[reg1]
mov esp,ebp
pop ebp //两句经常用leave指令代替
ret  //取ebp之下的ret_address 返回(强调:这里指中整个函数结束后,如果此值被修改,只会在函数运行到ret是起作用,如'aaaa'则可能之前函数流程就被挟持,在之前就已经得到flag,之后返回不返回main意义不大)

栈学习(一)

标签:address   流程   ESS   com   学习   src   字节   空间   接下来   

原文地址:https://www.cnblogs.com/zuoanfengxi/p/12490668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!