bcv*_*saf 2 windows portable-executable
我在 MSDN 上阅读了有关 PE 格式的文档,其中指定了:
加载到内存时图像第一个字节的首选地址;必须是 64 K 的倍数。 DLL 的默认值为 0x10000000。Windows CE EXE 的默认值为 0x00010000。Windows NT、Windows 2000、Windows XP、Windows 95、Windows 98 和 Windows Me 的默认值为 0x00400000
我不太明白这一点。什么是“首选地址”?在创建新进程/加载可执行文件时,windows 是如何使用这个字段的?
它是虚拟内存中应该加载可执行文件的地址,以避免对代码中的绝对跳转指令进行任何调整。操作系统可能会将模块加载到不同的地址(例如,同一程序所需的 2 个 DLL 具有相同的映像库),但在这种情况下,代码需要在加载时进行修补。
有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms809762.aspx(在那里搜索 ImageBase)。
| 归档时间: |
|
| 查看次数: |
3415 次 |
| 最近记录: |