【问题标题】:Why is the entry point address of a 64 bit portable executable only 32 bits?为什么 64 位可移植可执行文件的入口点地址只有 32 位?
【发布时间】:2016-03-21 17:04:08
【问题描述】:

根据_IMAGE_OPTIONAL_HEADER_IMAGE_OPTIONAL_HEADER64definitionsAddressOfEntryPoint 对于 PE32 和 PE64 文件格式都是 32 位 DWORD

为什么 PE64 文件的 AddressOfEntryPoint 只有 32 位?不应该是64位来覆盖整个虚拟地址空间吗?

【问题讨论】:

  • 节不能大于 4 GB,这是一个基本的操作系统限制。所以 32 位就足够了。

标签: winapi linker binaryfiles portable-executable


【解决方案1】:

您链接到的文档说:

一个指向入口函数的指针,相对于图像基地址。

与基地址相对,这意味着图像可以位于地址空间中的任何位置。

这确实间接暗示入口点与基地址的偏移量不能超过 4GB,但这不是限制。由于其他原因,PE 映像的大小不能超过 4GB。例如,SizeOfImageDWORD,这意味着图像大小限制为 4GB。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 2018-03-16
    • 1970-01-01
    • 2020-09-16
    • 2022-12-01
    • 2022-11-12
    • 2010-09-08
    • 2023-03-14
    相关资源
    最近更新 更多