首页 文章

如何在RAW内存中找到(PE)可执行入口点?

提问于
浏览
0

我正在研究一个ASM项目,我想知道一个可移植的可执行程序在原始内存中的入口点 . 原始内存我的意思是静态内存,就像我用十六进制编辑器编辑原始.exe文件一样 . 从程序的PE表中,我可以查找名为“EntryPoint:”的条目,但该条目包含程序在内存中加载后的入口点!我需要找到程序在磁盘中寻找原始内存中的第一条指令的位置 . 有些程序在.text部分的第一个地址开始执行,这是很平常但并不总是发生,这就是为什么我想知道入口点 .

为了解决这个问题,我正在使用Windows API中的MapViewOfFile函数并在内存中加载example.exe程序,然后查找其原始内容 .

我目前正在使用Radasm与MASM合作

谢谢 !

1 回答

  • 2

    入口点由PE头中的 AddressOfEntryPoint 给出,它为您提供入口点的虚拟地址 . 如果你想弄清楚文件中的位置,你需要通过section表找出哪个部分包含那个虚拟地址 - 这是 VirtualAddressVirtualSize 的部分,这样 AddressOfEntryPoint 是> = VirtualAddress 和offset AddressOfEntryPoint - VirtualAddress 是< VirtualSize .

    找到后,只需计算 PointerToRawData 偏移量即可找出它在文件中的位置 .

相关问题