2

我正在使用“PE 编辑器”检查 Windows 可执行文件,它显示入口点为 0x15B8,我们如何确定该入口点的地址为虚拟地址?

4

1 回答 1

2

入口点是相对于模块的加载地址存储的。

ImageBase模块可以通过设置字段中的字段来声明其首选地址IMAGE_OPTIONAL_HEADER(请参阅此页面)。但是,操作系统可以自由选择另一个地址,或者因为首选地址正在使用中,或者现在因为 ASLR。

我不确定你在什么环境下运行它,但如果你用一个实时运行的程序来做这个:这是一个实现细节,但在 NT 上你可以将一个HMODULE转换成一个指针,这就是加载地址模块。您还可以基于此读取 PE 标头。因此,例如,您可以将AddressOfEntryPoint成员添加到的地址HMODULE并找到一个入口点...如果不是加载时间信息,您想要文件中的字节偏移量之类的东西,您必须解析节标题找到它在文件中的位置。

于 2013-03-23T20:05:23.223 回答