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