【发布时间】:2010-09-19 12:32:11
【问题描述】:
它总是在代码段的最低地址吗?
【问题讨论】:
标签: windows portable-executable entry-point
它总是在代码段的最低地址吗?
【问题讨论】:
标签: windows portable-executable entry-point
不,不一定。 PE 入口点在IMAGE_OPTIONAL_HEADER 结构中定义,在AddressOfEntryPoint 字段中:
一个指向入口点函数的指针,相对于图像基地址。对于可执行文件,这是起始地址。对于设备驱动程序,这是初始化函数的地址。入口点函数对于 DLL 是可选的。当不存在入口点时,此成员为零。
链接器可以将其设置为它想要的任何值,只要它是一个有效的相对于 PE 的虚拟偏移量。一些编译器和链接器可能有将入口点放在文本/代码部分开头的约定,但对它没有 OS 或 PE 格式要求。
【讨论】:
AddressOfEntryPoint。我正在生成没有数据目录或节表的小型可执行文件。经过反复试验,我发现该条目可能直接指向 PE 标头之后,但不会指向一个小的额外偏移量。