几天前我开始玩PE格式。我已经完成了小型 PE 加载器,它能够根据它们的虚拟地址将部分加载到内存中。例如,我有.text
关于虚拟地址0x1000
的部分,或.data
关于0x2000
. 使用我的小汇编代码,我在某个空闲位置 ( 0x10000
) 上加载了 PE 文件,并从它的位置加载了 PE 部分。所以,部分.text
在0x11000
(0x10000 + 0x1000
)上,.data
在0x12000
等等......但是当我从位置引用我的汇编数据时.code
,我发现(在反汇编中)它指向0x402000
. 在互联网上,我找到了特定于每种图像类型的图像库之类的东西......但我不明白如何.exe
加载到0x402000
例如,当在 Windows 中运行大量可执行文件时。有人为什么会这样,它是如何工作的,我如何在我非常基本的系统中理论上实现它?
请帮忙。