根据definitions的_IMAGE_OPTIONAL_HEADER
和_IMAGE_OPTIONAL_HEADER64
,AddressOfEntryPoint
是 32 位 DWORD
适用于 PE32 和 PE64 文件格式。
为什么是AddressOfEntryPoint
对于只有 32 位的 PE64 文件?难道不应该是64位来覆盖整个虚拟地址空间吗?
最佳答案
您链接到的文档显示:
A pointer to the entry point function, relative to the image base address.
相对于基地址,这意味着图像可以位于地址空间中的任何位置。
这确实间接意味着入口点距基地址的偏移量不能超过 4GB,但这不是限制。由于其他原因,PE 镜像的大小不能大于 4GB。例如,SizeOfImage
是一个 DWORD
,这意味着图像大小限制为 4GB。
关于winapi - 为什么 64 位可移植可执行文件的入口点地址只有 32 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36137372/