【问题标题】:About the entry point of PE in Windows关于PE在Windows中的入口点
【发布时间】:2010-09-19 12:32:11
【问题描述】:

它总是在代码段的最低地址吗?

【问题讨论】:

    标签: windows portable-executable entry-point


    【解决方案1】:

    不,不一定。 PE 入口点在IMAGE_OPTIONAL_HEADER 结构中定义,在AddressOfEntryPoint 字段中:

    一个指向入口点函数的指针,相对于图像基地址。对于可执行文件,这是起始地址。对于设备驱动程序,这是初始化函数的地址。入口点函数对于 DLL 是可选的。当不存在入口点时,此成员为零。

    链接器可以将其设置为它想要的任何值,只要它是一个有效的相对于 PE 的虚拟偏移量。一些编译器和链接器可能有将入口点放在文本/代码部分开头的约定,但对它没有 OS 或 PE 格式要求。

    【讨论】:

    • 我发现在使用 Windows 7 时无法任意设置AddressOfEntryPoint。我正在生成没有数据目录或节表的小型可执行文件。经过反复试验,我发现该条目可能直接指向 PE 标头之后,但不会指向一个小的额外偏移量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多