如何将ELF可执行文件转换为C代码?生成的C代码不需要是人类可读的

时间:2013-06-22 05:07:17

标签: c linux transform elf

我有一个ELF文件,我想将其反编译成C代码,并对生成的C代码进行简单更改并将其重建为ELF。

反编译的C代码不一定完全是人类可读的。例如,如果变量和函数名称被混淆,那就可以了。

我可以使用哪些工具在Linux上完成此操作?

PS:如果反编译为C是不可能或不容易的,我愿意考虑反编译为汇编语言,虽然调整汇编源代码对我来说非常困难。

更新:您可以假设我正在使用以下C程序来获取a.out ELF。现在,进一步假设我丢失了原始的C来源。所以,我现在想把它反编译成(一个可能混淆的)C来源,在这个来源中,我至少能够改变字符串"world""Hello"和{ {1}},或者能够扭转"Bye"陈述的意义等。

if

2 个答案:

答案 0 :(得分:4)

这将给你(差不多)一个汇编代码翻译:

objdump --disassemble <elf file>

我说几乎是因为输出包含一些注释,如二进制文件位置标记,不能直接作为汇编程序的输入,但它很接近。

答案 1 :(得分:2)

您为处理器编写了一个模拟器,然后通过模拟处理器运行elf指令。它通常不是太多的任务,因为即使是CISC处理器也有相对较小的包含指令集,可以执行简单的操作。

当您完成这项工作后,请查看更有效的解决方案,例如输出C代码以匹配说明。