10

コードに逆コンパイルしたい ELF ファイルがありC、結果のコードに簡単な変更を加えてCELF に再構築します。

逆コンパイルされた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;   
}
4

2 に答える 2

10

これにより、(ほぼ) アセンブリ コードの変換が得られます。

objdump --disassemble <elf file>

出力にはバイナリ ファイルの位置マーカーなどの注釈が含まれており、アセンブラへの入力として直接使用できないため、ほぼそう言っていますが、近いです。

于 2013-06-22T05:14:57.537 に答える