天天看點

elf檔案反編譯C語言,如何将ELF可執行檔案轉換為C代碼?生成的C代碼不需要是人類可讀的...

我有一個ELF檔案,我想反編譯成C代碼,并對生成的C代碼進行簡單的更改,并将其重建為ELF.

反編譯的C代碼不需要完全是人類可讀的.例如,如果變量和函數名稱被混淆,那就沒關系.

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

PS:如果反編譯為C不可能或不容易,我願意考慮反編譯為彙編語言,雖然調整彙編源對我來說非常困難.

更新:您可以假設我正在使用以下C程式來擷取我的a.out ELF.現在,進一步假設我已經失去了這個原始的C源代碼.是以,我現在想把它反編譯成(一個可能混淆的)C源碼,其中我至少能夠改變字元串“world”,“Hello”和“Bye”之類的小東西,或者能夠反轉if語句的意義等

#include

#include

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;

}