Win7 ASLR 绕过

逆向工程 视窗 开发
2021-06-26 18:17:32

条件:假设一个修补程序具有printf()来自动态加载的硬编码地址msvcrt80.dll它在 XP 上工作得很好,但 Win7 随机化地址空间 (ASLR),所以这个技巧变得不可能,程序会因调用我的硬编码printf()地址而崩溃

我应该怎么做才能printf()在 win7 中检索它的 IAT RVA以使其工作?

1个回答

如果您可以修补程序的映像,则实际上不需要对地址进行硬编码。您可以简单地将另一个导入条目添加到已经存在的导入表中,并由加载程序自动修补它。

请参阅Iczelion关于导入表的教程以进一步指导您。

当然,如果您尝试从 shellcode 执行此操作,则需要遍历加载程序数据,定位 DLL 映像。PEBLdr成员应该会帮助您解决这个问题。

如果您愿意提供有关您究竟要做什么的更多详细信息,我会更新答案;“如何打败 ASLR”这个问题没有简单的答案。