我有一个静态的可执行ELF64二进制文件。我想重写某些功能并更改其处理方式。这将导致添加新功能。现在,我需要使用新的处理方法来修补此可执行文件。
我知道这不是一个新问题,但我找不到任何有效的结论性方法:
https://www.blackhat.com/presentations/bh-asia-02/Clowes/bh-asia-02-clowes.pdf
没有说明上下文中使用的工具,而是说明问题说明和技术方面。
我还有其他选择吗?
热修补将更容易实现,并为您提供a greater range of choice,但听起来您已经考虑了这一点,并决定通过替换符号来对二进制文件进行修补。
静态二进制修补程序更易于开发,但它们给用户带来了更多负担。考虑elfpatch。为了使用此工具修补名为myelf
的可执行文件,以用自己的返回0的函数替换名为myfunc()
的函数,您可以这样做:
elfpatch.py --apply --symbol-file symbols.txt myelf
这里symbols.txt的内容为:
myfunc b800000000c3
b800000000c3
是return 0;
的x86机器代码。只要已修补的函数很简单,这就足够简单,但是函数变得越复杂,过程就越复杂,尤其是在必须保留并调用原始函数以及该函数调用其他函数的情况下。在其他图书馆...