我正在使用“PE 编辑器”检查 Windows 可执行文件,它显示入口点为 0x15B8,我们如何确定该入口点的地址为虚拟地址?
问问题
1812 次
1 回答
2
入口点是相对于模块的加载地址存储的。
ImageBase
模块可以通过设置字段中的字段来声明其首选地址IMAGE_OPTIONAL_HEADER
(请参阅此页面)。但是,操作系统可以自由选择另一个地址,或者因为首选地址正在使用中,或者现在因为 ASLR。
我不确定你在什么环境下运行它,但如果你用一个实时运行的程序来做这个:这是一个实现细节,但在 NT 上你可以将一个HMODULE
转换成一个指针,这就是加载地址模块。您还可以基于此读取 PE 标头。因此,例如,您可以将AddressOfEntryPoint
成员添加到的地址HMODULE
并找到一个入口点...如果不是加载时间信息,您想要文件中的字节偏移量之类的东西,您必须解析节标题找到它在文件中的位置。
于 2013-03-23T20:05:23.223 回答