1

我有一个可执行文件,它需要一个 dll 文件作为依赖项。我想知道是否可以实际修补需要 dll 的 PE 文件,该 dll 将从位于内存或资源中的指针读取入口点。如果这可能,我该怎么做?

谢谢你的帮助 :)

4

1 回答 1

2

它不仅仅是依赖可执行文件所需的 DLL 中的一个入口点。当DllMain加载 DLL 时,系统(PE 加载器)会简单地调用它。动态加载器解析导入地址表等结构中的导入地址,在运行时应用程序甚至可以通过GetProcAddress.

理论上可以将 DLL 重新定位/定位到内存的一些未使用部分,并将对其函数的所有引用修补到重新定位的代码,但这非常困难,需要对操作系统有深入的了解。我不确定你在寻找什么样的答案。实现这一目标所需的步骤?这将是非常重要的,我不知道它之前已经做过(我见过的最接近的是用于 .NET 程序集的 ILMerge)。本质上,您正在将代码转换为 DLL 在编译时是否已静态链接的等价物。

于 2012-10-04T22:53:50.263 回答