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