我面临着一个很大的问题。我需要修补可执行文件以修改其行为。该程序是用 C 编写的,直到现在我一直在使用 IDA 来编辑它,但是那样我就无法替换整个函数等。在我看来,最简单的方法是创建一种加载程序,它将在程序运行之前加载程序并对其进行修补。这会节省我很多时间,而且所有的编辑都会容易得多。
问题是我找不到任何关于如何做到这一点的文章。你们中的任何人都可以解释我应该如何处理这个过程吗?加载器将用 C/C++ 编写。
我面临着一个很大的问题。我需要修补可执行文件以修改其行为。该程序是用 C 编写的,直到现在我一直在使用 IDA 来编辑它,但是那样我就无法替换整个函数等。在我看来,最简单的方法是创建一种加载程序,它将在程序运行之前加载程序并对其进行修补。这会节省我很多时间,而且所有的编辑都会容易得多。
问题是我找不到任何关于如何做到这一点的文章。你们中的任何人都可以解释我应该如何处理这个过程吗?加载器将用 C/C++ 编写。
尝试这个过程是完全不合常规的。
LD_PRELOAD
来实现你的目标吗?由于 UNIX 的“源代码可用”理念,没有多少工具可以帮助修补二进制文件 - 传统上,选择的工具是一个名为adb
- 调试器的程序(第 7 版 UNIX 手册称“adb - 调试器” ')。它允许您编辑二进制文件。
然而,人们很少像你想要做的那样做出重大改变,主要是因为这是一项非常艰苦的工作,而且通过重新编译原始源代码来做到这一点更简单、更可靠。