0

我面临着一个很大的问题。我需要修补可执行文件以修改其行为。该程序是用 C 编写的,直到现在我一直在使用 IDA 来编辑它,但是那样我就无法替换整个函数等。在我看来,最简单的方法是创建一种加载程序,它将在程序运行之前加载程序并对其进行修补。这会节省我很多时间,而且所有的编辑都会容易得多。

问题是我找不到任何关于如何做到这一点的文章。你们中的任何人都可以解释我应该如何处理这个过程吗?加载器将用 C/C++ 编写。

4

1 回答 1

1

尝试这个过程是完全不合常规的。

  • 你为什么不只是重新编译更改?
    • 来源不可用是通常的原因。
  • 它是一个封闭源程序吗?
    • 如果是这样,您可能会通过尝试违反许可条款。
  • 源丢失了吗?
    • 备份和版本控制发生了什么?
  • 它是用共享库中的关键代码构建的吗?
    • 如果是这样,您可以考虑用新功能替换共享库吗?
  • 你能用它LD_PRELOAD来实现你的目标吗?

由于 UNIX 的“源代码可用”理念,没有多少工具可以帮助修补二进制文件 - 传统上,选择的工具是一个名为adb- 调试器的程序(第 7 版 UNIX 手册称“adb - 调试器” ')。它允许您编辑二进制文件。

然而,人们很少像你想要做的那样做出重大改变,主要是因为这是一项非常艰苦的工作,而且通过重新编译原始源代码来做到这一点更简单、更可靠。

于 2010-12-12T16:00:43.897 回答