改进已编译二进制文件的最佳方法是什么?

逆向工程 C 二进制 修补
2021-07-07 01:49:43

就像我想修补 PE 中的函数一样。

现在我这样做的方法是使用 LordPE 插入一个新部分,然后编译我想在此处添加的任何内容并修补原始代码以链接到那里,但有没有更好的方法?

我不知道,也许是某种方式将二进制文件导出到 ASM 文件,然后我可以用 GCC 编译回来。

因为就像我想对二进制文件进行重大更改一样 - 我正在考虑并行化一部分代码。谢谢。

2个回答

对我来说,如果计划的更改相当大,解决这个问题的最佳方法是创建一个 DLL(您似乎在讨论 Windows,尽管这可以在大多数环境中工作)。

然后,您只需要修补对修改过的或新的功能函数的调用。首先编辑导入表或使用 .dll 动态加载 DLLLoadLibrary和函数GetProcAddress

将文件导出到 ASM 然后重新编译需要很长时间,非常复杂,只有在你有一个像样的活跃智能组时才应该这样做。相信我,我已经做到了。我们将程序逆向设计为可编译的源代码。这个项目花了太长时间。

如果您的更改很小,我建议您进行代码挖掘。只需创建一个 PE 部分跳转到它并进行更改,然后跳回。关于如何扩展 PE 二进制文件的教程

我以前在大型项目中这样做过。通常一个好的清理方法是使用 DLL 注入。

您可以让您的函数覆盖 .exe 的一部分并让您的函数发生。我将发布一些示例以及一个 youtube 系列,其中详细介绍了该做什么。

我会让你知道这些方法可能很危险,需要管理员权限才能注入进程。