コードに逆コンパイルしたい ELF ファイルがありC
、結果のコードに簡単な変更を加えてC
ELF に再構築します。
逆コンパイルされたC
コードは、人間が完全に読める必要はありません。例えば、変数名や関数名が難読化されて出てきても大丈夫です。
Linux でこれを行うには、どのツールを使用できますか?
PS:C
アセンブリ言語への逆コンパイルが不可能または簡単でない場合は、アセンブリ言語への逆コンパイルを検討しますが、アセンブリ ソースを微調整するのは非常に困難です。
更新: ELFC
を取得するために次のプログラムを使用していると思われるかもしれません。a.out
ここで、さらに、この元の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;
}