Windows PE确定入口点虚拟地址

时间:2013-03-23 18:31:37

标签: windows x86 portable-executable entry-point

我正在检查带有'PE Editor'的Windows可执行文件,它将Entry point显示为0x15B8,我们如何将此入口点的地址确定为虚拟地址?

1 个答案:

答案 0 :(得分:1)

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

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

我不确定你在运行这个环境的是什么环境,但如果你正在使用一个实时运行的程序:这是一个实现细节,但是在NT上你可以将HMODULE强制转换为指针那是模块的加载地址。您还可以根据它读取PE头。例如,您可以将AddressOfEntryPoint成员添加到HMODULE的地址并找到一个入口点...如果不是加载时间信息,您需要将类似字节偏移量放入文件中,你必须解析节标题以找到文件中的位置。