質問
Java 実行可能ファイル (jar ファイル) を逆コンパイルしてソース コードを取得するのは簡単だと思います。
他の言語についてはどうですか?.netとか全部?
逆コンパイル可能なコードにのみコンパイルできる言語はどれですか?
解決
一般に、Java、C#、VB.NET などの言語は、純粋な機械語ではなく中間言語にコンパイルされるため、逆コンパイルが比較的簡単です。IL 形式では、機械語にコンパイルされたときに C コードよりも多くのメタデータが保持されます。
技術的には、元のソース コードを取得するのではなく、ソース コードのバリエーションを取得し、コンパイルすると、コンパイルされたコードが返されます。コメント、注釈、コンパイラ ディレクティブなどは通常、コンパイルされたコードには引き継がれないため、ソース コードと同一ではありません。
他のヒント
実行可能ファイルにはサポートするための多くのメタデータが含まれている必要があるため、マネージ言語は簡単に逆コンパイルできます。 反射.
C++ などの言語は、ネイティブ コードにコンパイルできます。プログラムの構造は、コンパイル/翻訳プロセス中に完全に変更される可能性があります。
コンパイラはコードの一部を簡単に置換/マージ/削除できます。元のコードとコンパイルされた (ネイティブ) コードの間には 1 対 1 の関係はありません。
.NET は逆コンパイルが非常に簡単です。それを行うための最良のツールは、 .NETリフレクタ 最近 RedGate に買収されました。
ほとんどの言語は逆コンパイルできますが、一部の言語は他の言語よりも逆コンパイルが簡単です。.Net と Java では、元のプログラムに関するより多くの情報 (メソッド名、変数名など) が実行可能ファイルに組み込まれるため、元の情報をより多く取得できます。
たとえば、C++ は変数や関数などを変換します。メモリアドレスに変換するため(はい、これが大幅な単純化であることはわかっています)、逆コンパイラーは何が呼び出されたのかを知りません。ただし、プログラムの構造の一部を取り戻すことはできます。