我有一个 ELF 文件,我想将其反编译为C
代码,并对生成的C
代码进行简单的更改并将其重建为 ELF。
反编译的C
代码不需要完全是人类可读的。例如,如果变量和函数名称被混淆,那没关系。
我可以使用哪些工具在 Linux 上完成此任务?
PS:如果C
无法反编译成或者不容易,我愿意考虑反编译成汇编语言,尽管调整汇编源代码对我来说非常困难。
更新:您可能会假设我正在使用以下C
程序来获取我的a.out
ELF。现在,进一步假设我已经丢失了这个原始C
来源。所以,我现在想将它反编译为(可能是混淆的)C
源代码,在其中我至少能够更改字符串"world"
、、"Hello"
和等小东西"Bye"
,或者能够反转if
语句的含义等。
#include <stdio.h>
#include <string.h>
char buf[256];
const char *Hello = "Hello";
const char *Bye = "Bye";
const char *Who = "world";
char * greet(const char *greeting, const char *str) {
strcpy(buf, greeting);
strcat(buf, ", ");
strcat(buf, str);
strcat(buf, "!");
return buf;
}
int main(int argc, char *argv[]) {
int sayHello = 0;
if(sayHello) {
printf("%s\n", greet(Hello, Who));
} else {
printf("%s\n", greet(Bye, Who));
}
return 0;
}