オブジェクトコードを見て、それを作成するために最初に使用された言語を知ることは可能ですか?または、言語はオブジェクトコードに痕跡やスタンプを残しますか?さまざまな言語のコンパイラは、オブジェクトコードを開発するために、特定のISAに対して固定形式を使用しますか?
2 に答える
2
一般的なアルゴリズムはありませんが、実際には可能であることがよくあります。通常、アプリケーションが依存しているライブラリを確認できます。たとえば、Windowsアプリケーションがmsvcrt.dllに依存している場合、VisualC++でコンパイルされたCまたはC++プログラムである可能性が高くなります。コンパイラがセクションに証拠の痕跡を残すことがあり.data
ます。「Hello、World!」のようなHaskellバイナリ(GHCでコンパイル)を16進エディタで開いたときに表示されるものは次のとおりです。
GCCの「著作権表示」は次のようになります。
訓練を受けた目は、逆アセンブルを見ることでコンパイラのバージョンを認識することさえできます(すべてのコンパイラはコードをわずかに異なる方法で最適化し、独自の実装の癖があります)。これを自動化する必要がある場合は、機械学習の手法を検討することをお勧めします。
于 2011-06-19T10:22:56.553 に答える
1
いいえ。x86はx86です-一度その形式になると、元の言語の痕跡はありません。
于 2011-06-19T09:59:01.670 に答える