我正在研究一个ASM项目,我想知道一个可移植的可执行程序在原始内存中的入口点 . 原始内存我的意思是静态内存,就像我用十六进制编辑器编辑原始.exe文件一样 . 从程序的PE表中,我可以查找名为“EntryPoint:”的条目,但该条目包含程序在内存中加载后的入口点!我需要找到程序在磁盘中寻找原始内存中的第一条指令的位置 . 有些程序在.text部分的第一个地址开始执行,这是很平常但并不总是发生,这就是为什么我想知道入口点 .
为了解决这个问题,我正在使用Windows API中的MapViewOfFile函数并在内存中加载example.exe程序,然后查找其原始内容 .
我目前正在使用Radasm与MASM合作
谢谢 !
1 回答
入口点由PE头中的
AddressOfEntryPoint
给出,它为您提供入口点的虚拟地址 . 如果你想弄清楚文件中的位置,你需要通过section表找出哪个部分包含那个虚拟地址 - 这是VirtualAddress
和VirtualSize
的部分,这样AddressOfEntryPoint
是> =VirtualAddress
和offsetAddressOfEntryPoint - VirtualAddress
是<VirtualSize
.找到后,只需计算
PointerToRawData
偏移量即可找出它在文件中的位置 .