首页
社区
课程
招聘
[求助]疑惑(读《加密与解密》第三版)
发表于: 2009-10-19 19:53 4054

[求助]疑惑(读《加密与解密》第三版)

2009-10-19 19:53
4054
《加密与解密》第三版,PE文件格式一章,输入函数的调用一节。
call         00401164
...........
:00401164
jmp dword ptr [00402010]
书上说这是低效方法,解释为编译器无法区别输入函数的调用和普通函数调用,对每个函数调用,编译器使用同样格式的call指令
call xxxxxxxx
xxxxxxxx是链接器填充的实际地址,是代码中实际地址。然后说为了因果平衡,链接器必须产生一块代码来取代xxxxxxxx,简单方法就是像上面所示调用一个jmp stub.
我实在想不通因果平衡指的是什么,请各位指点指点小弟。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
2
楼主太抠字眼了……
所谓“为了因果的平衡”,这里其实指的就是“为了能够在这种情况下正确地实现调用”。
我们要达到的效果其实是call dword ptr [XXXXXXXX],但是编译器对call指令只能直接搞成call YYYYYYYY,所以为了使这个call YYYYYYYY能达到与call dword ptr [XXXXXXXX]等效,我们就必须使这个YYYYYYYY是对应jmp dword ptr [XXXXXXXX]的代码。
也就是说,调用是由call YYYYYYYY发起(起因)的,而由于YYYYYYYY处是jmp dword ptr [XXXXXXXX],从而使这个调用最后达到了与call dword ptr [XXXXXXXX]等效的结果
2009-10-21 16:40
0
雪    币: 354
活跃值: (157)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
轩辕小聪,你不只帮了我一次啊,感谢
2010-9-23 12:00
0
游客
登录 | 注册 方可回帖
返回
//