Assembly 如何在原始内存中找到(PE)可执行入口点?
我正在做一个ASM项目,我想知道一个可移植可执行程序在原始内存中的入口点。我所说的原始内存是指静态内存,就像我用十六进制编辑器编辑原始.exe文件一样。从程序的PE表中,我可以查找名为“EntryPoint:”的条目,但该条目在加载到内存中后包含程序的入口点!我需要找到程序在原始内存、磁盘中查找第一条指令的位置。有些程序从.text部分的第一个地址开始执行,这很常见,但并不总是发生,这就是我想知道入口点的原因 为了处理这个问题,我使用windows API中的函数MapViewOfFile,在内存中加载example.exe程序,然后查找它的原始内容 我目前正在使用雷达与MASM合作Assembly 如何在原始内存中找到(PE)可执行入口点?,assembly,portable-executable,Assembly,Portable Executable,我正在做一个ASM项目,我想知道一个可移植可执行程序在原始内存中的入口点。我所说的原始内存是指静态内存,就像我用十六进制编辑器编辑原始.exe文件一样。从程序的PE表中,我可以查找名为“EntryPoint:”的条目,但该条目在加载到内存中后包含程序的入口点!我需要找到程序在原始内存、磁盘中查找第一条指令的位置。有些程序从.text部分的第一个地址开始执行,这很常见,但并不总是发生,这就是我想知道入口点的原因 为了处理这个问题,我使用windows API中的函数MapViewOfFile,在内
谢谢 入口点由PE标题中的
AddressOfEntryPoint
给出,它提供入口点的虚拟地址。如果您想找出文件中的位置,您需要遍历section表,找出哪个节包含该虚拟地址——即带有VirtualAddress
和VirtualSize
的节,以便AddressOfEntryPoint
为=VirtualAddressOfEntryPoint
且偏移量AddressOfEntryPoint-VirtualAddress
为<虚拟化
一旦您找到了,只需计算
指针或WDATA
+偏移量,以确定它在文件中的位置。入口点由PE头中的入口点的地址给出,它给出了入口点的虚拟地址。如果您想找出文件中的位置,您需要遍历section表,找出哪个节包含该虚拟地址——即带有VirtualAddress
和VirtualSize
的节,以便AddressOfEntryPoint
为=VirtualAddressOfEntryPoint
且偏移量AddressOfEntryPoint-VirtualAddress
为<虚拟化
一旦找到了它,只需计算指针或wdata
+偏移量即可确定它在文件中的位置