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

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

2019-10-6 14:35
8784
有几点疑问,恳请前辈们指点下迷津!
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 


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 17428
活跃值: (5009)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
2
add esp, 4这条指令是为了平衡站(函数自己清理),因为前面是sub esp, 4 。
2019-10-6 14:41
1
雪    币: 17428
活跃值: (5009)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
3
请仔细阅读下调用约定就知道原因了,基础还是很重要的。
2019-10-6 14:47
0
雪    币: 164
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
jishuzhain add esp, 4这条指令是为了平衡站(函数自己清理),因为前面是sub esp, 4 。
可是add esp,4 的上一条指令mov esp,ebp已将栈恢复到了分配局部变量之前的状态了
2019-10-6 15:05
0
雪    币: 10941
活跃值: (4577)
能力值: ( LV12,RANK:404 )
在线值:
发帖
回帖
粉丝
5
add esp, 4 和pop ebp 都会使esp+4 从而清除开辟的局部变量(然后esp指向call保留的返回地址),后者捎带还原了ebp。
mov esp,ebp是将栈恢复到了push ebp后的状态,此时esp指向的是保存的ebp。画个图就很清楚了。cdecl不清理参数
2019-10-6 16:59
1
雪    币: 164
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
堂前燕 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编辑 ,原因:
2019-10-6 18:04
0
雪    币: 15
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我没搞懂最后的堆栈ebp地址要比esp低啊
2020-11-19 16:44
0
雪    币: 4255
活跃值: (3496)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8

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

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

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

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