我试图通过编写一个简单的exe包装器来很好地理解PE格式。
我的第一步是编写一个exe加载器,它将exe文件作为参数并将其加载到其地址空间中。 我的问题是许多exe没有基本重定位表,因为它们希望以他们喜欢的图像库地址加载。在我的加载器(以及后来的,我想象的简单打包器)的情况下,加载器已经加载到0x400000,这迫使原始exe加载到另一个地址(因此需要重定位)。
我试着看看UPX是如何做到这一点但我在源代码中迷失了。
我可以看到的一个解决方案是重新定位解包器(或加载器)以使其加载到一个地址,该地址可以保留首选的exe映像库地址,以避免任何后续的重定位,但它看起来有点复杂。
还有其他方法吗?
UPX如何做到这一点?
是否可以重建exe的基本重定位表?
祝你好运, 马克西姆