首页
社区
课程
招聘
[求助]《加密与解密》第三版,p81有一处不懂,求指导?
发表于: 2017-2-14 10:47 4724

[求助]《加密与解密》第三版,p81有一处不懂,求指导?

2017-2-14 10:47
4724
C源码:
int add(int x,int y)
{
    int z;
    z=x+y;
    return z;
}

汇编代码:(解释说,push reg 指令取代 sub esp,4)


图中,汇编代码,这个函数其中有两个push 一个pop,并且,
最后pop拿到了ebp的值,这跟入栈的顺序不符合啊,难道中间谁弹了栈?

《加密与解密》第三版,第81页

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1385
活跃值: (5609)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
2
哎,堕落了。
2017-2-14 13:58
0
雪    币: 439
活跃值: (1223)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
图片挂了??
2017-2-14 14:40
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mov esp,ebp  这句就把局部变量的栈都给销毁了。再pop 就对了    只要关注esp的变化就对了  不仅仅是push pop会改变esp的值  像mov esp,.....                       add esp,.....      sub esp,...... 都会改变的
2017-2-14 15:20
0
雪    币: 1385
活跃值: (5609)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
5
哦,意思就是说,因为上面的,mov esp,ebp
把原来的数据,堆栈的指针位置变更了,所以也就不需要pop出ecx了,因为他已经调出堆栈了。
所以最后pop就拿到ebp的值了。

应该就是这样了,感谢!
2017-2-14 16:20
0
雪    币: 2375
活跃值: (433)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看汇编会搞xposed有帮助么?
2018-2-10 21:00
0
游客
登录 | 注册 方可回帖
返回
//