在BSD / Unix上动态修补可执行文件

时间:2010-12-12 15:51:23

标签: unix assembly reverse-engineering bsd patch

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

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

1 个答案:

答案 0 :(得分:1)

尝试这个过程完全是一种常规。

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

由于UNIX的“源是可用的”哲学,没有很多工具可以帮助修补二进制文件 - 通常,选择的工具是一个名为adb的程序 - 一个调试器(第7版) UNIX版手册说'adb - debugger')。它允许您编辑二进制文件。

然而,人们很少做出重大改变,因为它听起来像你想做的,主要是因为它是非常辛苦的工作,通过重新编译原始来源更简单,更可靠。