我是逆向工程的新手,经过一番研究,我没有找到一种明确的方法来做自己想做的事情。

我有一个ELF文件,但没有原始文件生成它的代码。这真的很简单,只打印一些数字。我想对它打印的数字范围做些小改动。我已经将其反汇编并弄清楚必须在哪里进行更改,但是我不确定如何进行此更改。

是否可以编辑反汇编的代码并仍然生成可执行文件?还是应该找出十六进制文件中要更改的相应信息并使用十六进制编辑器?

#1 楼

由于问题中没有提供有关二进制的详细信息,因此只能给出一般性答案。听起来您正在尝试静态修改可执行的ELF二进制文件。这也称为修补。这不同于动态修改或程序运行时检测。

工具和示例

可用于修补的工具包括gdbradare2,ERESI套件,xxdhexedit

Radare2

使用radare2在Linux中修补elf二进制文件

教程1-简单修补程序

修复了Bug使用r2的二进制文件

GDB

使用gdb修改二进制文件

使用GDB修改可执行文件

xxd

进行反向十六进制转储

hexedit


修改Linux ELF二进制文件-更改Callq地址

类似的问题:
>
如何更改esp中的值?

如何为现有的二进制可执行文件添加功能?

有哪些可用的库可以静态修改ELF?可执行文件?

评论


谢谢!那是一个很好的完整答案。事实证明,我所需要的真的很简单。我使用objdump来检查需要更改的内容的十六进制,并使用hexedit对其进行了编辑。但是您的回答将帮助我学习更高级的技术。

–franchzilla
17 Mar 28 '17 at 21:48