如何在Windows上获取参与ASLR的可执行文件的(重定位)入口点?
假设已加载可执行文件并且它已参与ASLR。
PE头在没有ASLR的情况下加载时提供可执行文件的入口点。但是,ASLR应该是“随机的”,所以标题不能说明新的入口点吗?
我如何在内存中找到我的ASLR可执行文件,以便例如我可以检查它并(可能)修改它。
答案 0 :(得分:2)
如果您的代码在要找到其主模块的进程的上下文中运行,则可以调用GetModuleHandle或GetModuleHandleEx,传递NULL
而不是模块名称。
请注意,在32位或64位Windows中,“模块句柄”实际上是指向模块虚拟地址的指针。 (在16位Windows中不是这样。)
如果您的代码在单独的流程中运行,则可以使用EnumProcessModules所述的here。