我有一个ELF文件,我想将其反编译成C
代码,并对生成的C
代码进行简单更改并将其重建为ELF。
反编译的C
代码不一定完全是人类可读的。例如,如果变量和函数名称被混淆,那就可以了。
我可以使用哪些工具在Linux上完成此操作?
PS:如果反编译为C
是不可能或不容易的,我愿意考虑反编译为汇编语言,虽然调整汇编源代码对我来说非常困难。
更新:您可以假设我正在使用以下C
程序来获取a.out
ELF。现在,进一步假设我丢失了原始的C
来源。所以,我现在想把它反编译成(一个可能混淆的)C
来源,在这个来源中,我至少能够改变字符串"world"
,"Hello"
和{ {1}},或者能够扭转"Bye"
陈述的意义等。
if
答案 0 :(得分:4)
这将给你(差不多)一个汇编代码翻译:
objdump --disassemble <elf file>
我说几乎是因为输出包含一些注释,如二进制文件位置标记,不能直接作为汇编程序的输入,但它很接近。
答案 1 :(得分:2)
您为处理器编写了一个模拟器,然后通过模拟处理器运行elf指令。它通常不是太多的任务,因为即使是CISC处理器也有相对较小的包含指令集,可以执行简单的操作。
当您完成这项工作后,请查看更有效的解决方案,例如输出C代码以匹配说明。