反汇编 函数的调用和实现_笔记

调用call时 会让栈push 返回地址 相对就的 esp +4

 

进入call 后 先保存 ebp

然后 把esp 给了ebp 当前函数堆栈从此开始

接下来 就是esp 减多少了. esp减多少就是这个函数的栈多大 从epb 开始加上这个值就是这个函数所用栈的范围.如果没变量 esp 不减, 如果有1个int esp-8 , 有2个int esp -c.

再下来就是保存环境了.

push ...

 

相对应函数结尾

 

pop ...

 

函数结尾时的ret  这个指令会让 esp +4. 如果有这样的表达式 ret 4 执行这个指令会让esp+4+后面的这个数. 

 

 

断在函数入口时看栈:

1 返回地址

2 第一个参数

3 第二个参数

4 .....

 

ebp 记录了函数进来时 esp 的值

ebp+4 记录了栈返回的地址.

epb+8 第一个参数

epb+12 第一个参数

epb+C 第三个参数

 

epb-8 epb-C epb-14   //这类的东西就是它的局部变量



esp 上面的上变量, 下面的是参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值