首页
社区
课程
招聘
[求助]《加密与解密(第4版)》110页 表4.3 疑问,恳请前辈们指点下迷津
2019-10-6 14:35 8474

[求助]《加密与解密(第4版)》110页 表4.3 疑问,恳请前辈们指点下迷津

2019-10-6 14:35
8474
有几点疑问,恳请前辈们指点下迷津!
1.C程序默认函数调用约定为C规范,即参数传递顺序从右到左依次入栈,清参操作由调用者执行,没错吧!~
2. 上表4.3是一段C程序的汇编实现,主程序参数入栈不应该是push y push x之前吗 ?
3. 右边MyAdd函数部分,sub esp, 4 为局部变量分配空间没问题,倒数第二条指令 add esp, 4 是在清理局部变量吗?可是倒数第三条mov esp, ebp已经把栈顶指针还原到分配局部变量之前的状态了,即便是想执行本该由主程序完成的清参操作,那也应该是add esp, 8 
搞不懂add esp, 4这条指令想干嘛?似乎 ret 前还少了条 pop ebp 


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (14)
雪    币: 17421
活跃值: (5004)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
jishuzhain 7 2019-10-6 14:41
2
1
add esp, 4这条指令是为了平衡站(函数自己清理),因为前面是sub esp, 4 。
雪    币: 17421
活跃值: (5004)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
jishuzhain 7 2019-10-6 14:47
3
0
请仔细阅读下调用约定就知道原因了,基础还是很重要的。
雪    币: 164
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_P&L 2019-10-6 15:05
4
0
jishuzhain add esp, 4这条指令是为了平衡站(函数自己清理),因为前面是sub esp, 4 。
可是add esp,4 的上一条指令mov esp,ebp已将栈恢复到了分配局部变量之前的状态了
雪    币: 9609
活跃值: (3452)
能力值: ( LV12,RANK:319 )
在线值:
发帖
回帖
粉丝
堂前燕 1 2019-10-6 16:59
5
1
add esp, 4 和pop ebp 都会使esp+4 从而清除开辟的局部变量(然后esp指向call保留的返回地址),后者捎带还原了ebp。
mov esp,ebp是将栈恢复到了push ebp后的状态,此时esp指向的是保存的ebp。画个图就很清楚了。cdecl不清理参数
雪    币: 164
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_P&L 2019-10-6 18:04
6
0
堂前燕 add esp, 4 和pop ebp 都会使esp+4 从而清除开辟的局部变量(然后esp指向call保留的返回地址),后者捎带还原了ebp。 mov esp,ebp是将栈恢复到了push ebp ...
谢谢,请楚了!
还有个问题,C规范下函数参数的传递按照从右到左顺序入栈,那这里主程序不该先push y吗 ?
最后于 2019-10-6 18:08 被wx_P&L编辑 ,原因:
雪    币: 15
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_milmminf 2020-11-19 16:44
7
0
我没搞懂最后的堆栈ebp地址要比esp低啊
雪    币: 3499
活跃值: (2806)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haogl 2020-11-19 17:00
8
2

传一张我之前的学习笔记图片,应该能很清楚的表达这个问题!

最后于 2020-11-19 17:15 被haogl编辑 ,原因:
雪    币: 1451
活跃值: (14614)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
SSH山水画 3 2020-11-19 17:04
9
0
haogl 传一张我以前的学习笔记图片,应该能很清楚的表达这个问题!
一看就是师从海哥
雪    币: 3499
活跃值: (2806)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haogl 2020-11-19 17:16
10
0
是滴是滴,以前学的那些教程坑了我,完全不懂原理,学了海哥的教程,终于能看懂原理了。
雪    币: 3499
活跃值: (2806)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haogl 2020-11-19 17:21
11
1

再分享两张,好教程让我很想往下学,所以做了详细的笔记,为了能随时温故知识!

最后于 2020-11-19 17:21 被haogl编辑 ,原因:
雪    币: 47
活跃值: (108)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_wvmssgil 2022-4-23 23:16
12
0
haogl 是滴是滴,以前学的那些教程坑了我,完全不懂原理,学了海哥的教程,终于能看懂原理了。[em_67]
冒昧问一下是啥教程,有什么关键词我好搜索一下吗
雪    币: 3499
活跃值: (2806)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haogl 2022-4-24 08:27
13
0
mb_wvmssgil 冒昧问一下是啥教程,有什么关键词我好搜索一下吗
滴水逆向 基础教程
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2022-4-24 10:21
14
0
了解下调用约定和函数栈桢这么个东西就知道了。
雪    币: 47
活跃值: (108)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_wvmssgil 2022-4-24 23:00
15
0
haogl 滴水逆向 基础教程
感激不尽
游客
登录 | 注册 方可回帖
返回