Linux上ELF64二进制文件的静态修补

问题描述 投票:0回答:1

我有一个静态的可执行ELF64二进制文件。我想重写某些功能并更改其处理方式。这将导致添加新功能。现在,我需要使用新的处理方法来修补此可执行文件。

我知道这不是一个新问题,但我找不到任何有效的结论性方法:

  1. LD_PRELOAD没有用,因为我正在使用静态二进制文件。
  2. eresi / elfsh不适用于X86-64 ELF二进制文件
  3. pwntools和其他elf工具缺少修补和扩展段的功能。
  4. 不需要Pin,Valgrind和其他类似工具提供的运行时检测。运行时检测会影响运行时性能。我的可执行文件将在同一台计算机上生成为数千个进程。 (性能达到5%还是可以的)

https://www.blackhat.com/presentations/bh-asia-02/Clowes/bh-asia-02-clowes.pdf

没有说明上下文中使用的工具,而是说明问题说明和技术方面。

我还有其他选择吗?

linux static binary instrumentation
1个回答
0
投票

热修补将更容易实现,并为您提供a greater range of choice,但听起来您已经考虑了这一点,并决定通过替换符号来对二进制文件进行修补。

静态二进制修补程序更易于开发,但它们给用户带来了更多负担。考虑elfpatch。为了使用此工具修补名为myelf的可执行文件,以用自己的返回0的函数替换名为myfunc()的函数,您可以这样做:

elfpatch.py --apply --symbol-file symbols.txt myelf

这里symbols.txt的内容为:

myfunc b800000000c3

b800000000c3return 0;的x86机器代码。只要已修补的函数很简单,这就足够简单,但是函数变得越复杂,过程就越复杂,尤其是在必须保留并调用原始函数以及该函数调用其他函数的情况下。在其他图书馆...

© www.soinside.com 2019 - 2024. All rights reserved.