windows - 什么是图像库(在 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 在创建新进程/加载可执行文件时如何使用此字段?
解决方案
它是虚拟内存中应加载可执行文件的地址,以避免对代码中的绝对跳转指令进行任何调整。操作系统可能会将模块加载到不同的地址(例如,如果同一程序所需的 2 个 DLL 具有相同的映像库),但在这种情况下,代码需要在加载时进行修补。
有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms809762.aspx(在此处搜索 ImageBase)。
推荐阅读
- postgresql - 在 Postgres 过程中,创建文章和标签,然后返回创建的文章和标签
- css - 如何格式化具有最小高度的 div 并使用 CSS Grid 使子 div 顶部对齐?
- ocr - C# - 无法访问已被使用的文件 - Iron OCR
- python - Python - 按时间分组的数据框
- javascript - 如何在提示符的新行中显示每个数组元素?
- reactjs - 错误 react-hook-form TypeError: target.addObserver is not a function
- typescript - 如何从ionic4的内部存储加载ePub?
- javascript - FullPage.js 导航
- r - 按第一个字符串选择/分组,直到特定符号
- webpack - Webpack + HTMLWebpackPlugin 用于多个 HTML 文件