图像基础是什么(在 windows 个 PE 文件中)

What is the image base (in windows PE files)

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

The preferred address of the first byte of image when loaded into memory; must be a multiple of 64 K. The default for DLLs is 0x10000000. The default for Windows CE EXEs is 0x00010000. The default for Windows NT, Windows 2000, Windows XP, Windows 95, Windows 98, and Windows Me is 0x00400000

这个我不太明白。什么是 "preferred address"? windows 在制作新的 process/loading 可执行文件时如何使用该字段?

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

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