1

我试图通过编写一个简单的 exe 打包程序来很好地理解 PE 格式。

我的第一步是编写一个 exe 加载器,它将一个 exe 文件作为参数并将其加载到其地址空间中。我的问题是许多 exe 没有基本重定位表,因为它们希望在其首选的图像基地址处加载。对于我的加载程序(以及后来我想象的简单打包程序),加载程序已经加载到 0x400000,这会强制将原始 exe 加载到另一个地址(因此需要重新定位)。

我试图看看 UPX 是如何做到的,但我迷失在源代码中。

我可以看到的一种解决方案是重新定位解包器(或加载器)以使其加载到一个地址,该地址将使首选的 exe 映像基地址可用以避免任何以后的重新定位,但这似乎有点复杂。

还有其他方法吗?

UPX 是如何做到的?

是否可以重建 exe 的基本重定位表?

最好的问候,马克西姆

4

0 回答 0