跟踪eip和esp

本文为张银奎老师《代码调试》一书中关于的栈实验,记录下照猫画虎的学习过程。

代码:

汇编如下:

 

bp a!main 设置断点    g执行到这个断点

 

0:000> r eip,esp
eip=00401020 esp=0013ff84

 

0:000> dd esp l1
0013ff84  00401115

 

p单步执行一次

 

0:000> r eip,esp
eip=00401022 esp=0013ff80

 

esp中压入一个int所需空间,向下减去4

 

t进入函数

 

0:000> r eip,esp
eip=00401000 esp=0013ff7c

 

esp又减去4个字节,压入了函数的返回后的地址  可以用dd esp l1显示返回地址的内容

0:000> dd esp l1
0013ff7c  00401027

 

光标定位到ret 4一行,ctrl+F10执行到这一行,观察eip和esp

0:000> r eip,esp
eip=0040101a esp=0013ff7c

 

esp内容和刚进入函数时一样,栈保持平衡。

 

p单步执行,到达c3 ret

 

0:000> r eip,esp
eip=00401027 esp=0013ff84

 

esp增加了8,和刚进入main时一样,参数被被调用函数func清理。

 

0:000> dd esp l1
0013ff84  00401115

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值