首页 > 解决方案 > 什么是图像库(在 windows PE 文件中)

问题描述

我在 MSDN 上阅读了有关 PE 格式的文档,其中指定:

加载到内存时图像第一个字节的首选地址;必须是 64 K 的倍数。DLL 的默认值为 0x10000000。Windows CE EXE 的默认值为 0x00010000。Windows NT、Windows 2000、Windows XP、Windows 95、Windows 98 和 Windows Me 的默认值为 0x00400000

我不太明白这一点。什么是“首选地址”?Windows 在创建新进程/加载可执行文件时如何使用此字段?

标签: windowsportable-executable

解决方案


它是虚拟内存中应加载可执行文件的地址,以避免对代码中的绝对跳转指令进行任何调整。操作系统可能会将模块加载到不同的地址(例如,如果同一程序所需的 2 个 DLL 具有相同的映像库),但在这种情况下,代码需要在加载时进行修补。

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms809762.aspx(在此处搜索 ImageBase)。


推荐阅读