《反汇编基础》调用函数时栈的操作

《反汇编基础》调用函数时栈的操作
-------------------------------------------以下转自boxer------------------------------------------00401060     push              ebp      ;保存ebp,                执行这句前ESP = 0012FF84,EBP = 0012FFC0
;push的结果是esp总减少,执行后ESP = 0012FF80,EBP = 0012FFC0
00401061     mov               ebp,esp      ;将esp放入ebp中此时ebp和esp相同,即执行后ESP =  EBP = 00 12FF80


;原EBP值已经被压栈(位于栈顶),而新的EBP又恰恰指向栈顶
;此时EBP寄存器就已经处于一个非常重要 的地位 ,该寄存器中存储着栈中的一个地址(原EBP入栈后的栈顶),
;从该地址为基准,向上(栈底方向)能获取返回地址、参数值,向下(栈顶方向)能获取函数局部变量值,
;而该地址处又存储着上一层函数调用时的EBP值!

------------------------------------------------------------------------------

00401063     sub               esp,40h      ;把esp往上移动一个范围
                                                                               ;等于在栈中空出一片空间来存局部变量
                                                                               ;执行这句后ESP  = 001 2FF 40
00401066     push              ebx      ;下面3句都是保存3个寄 存器
00401067     push              esi
00401068     push              edi
00401069     lea               edi,[ebp-40h]    ;把ebp-40h加载到edi中, 目的是保存局部变量的区域
0040106C     mov               ecx,10h
00401071     mov               eax,0CCCCCCCCh    ;从ebp-40h开始的区域初始化成全部0CCCCCCCCh,就是int3断点

00401076   rep stos    dword ptr [edi]  ;拷贝字符串,初始化局部变量空间

感谢xingg分享原文地址,逢上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值