如何在Windows上获取参与ASLR的可执行文件的(重定位)入口点?

时间:2017-05-11 05:35:01

标签: windows binary executable loader aslr

  

如何在Windows上获取参与ASLR的可执行文件的(重定位)入口点?

假设已加载可执行文件并且它已参与ASLR。

PE头在没有ASLR的情况下加载时提供可执行文件的入口点。但是,ASLR应该是“随机的”,所以标题不能说明新的入口点吗?

我如何在内存中找到我的ASLR可执行文件,以便例如我可以检查它并(可能)修改它。

1 个答案:

答案 0 :(得分:2)

如果您的代码在要找到其主模块的进程的上下文中运行,则可以调用GetModuleHandleGetModuleHandleEx,传递NULL而不是模块名称。

请注意,在32位或64位Windows中,“模块句柄”实际上是指向模块虚拟地址的指针。 (在16位Windows中不是这样。)

如果您的代码在单独的流程中运行,则可以使用EnumProcessModules所述的here