关于Windows中PE的入口点

发布于 2024-09-24 05:07:08 字数 21 浏览 5 评论 0原文

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

Is it always at the lowest address of code section?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

樱娆 2024-10-01 05:07:08

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

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

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

No, not necessarily. The PE entry point is defined in the IMAGE_OPTIONAL_HEADER structure, in the AddressOfEntryPoint field:

A pointer to the entry point function, relative to the image base address. For executable files, this is the starting address. For device drivers, this is the address of the initialization function. The entry point function is optional for DLLs. When no entry point is present, this member is zero.

A linker can set this to be whatever it wants to be, as long as its a valid relative virtual offset into the PE. Some compilers and linkers might have the convention of putting the entry point at the beginning of the text/code section, but there's no OS or PE format requirement for it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文