逆コンパイルできる実行可能ファイルの種類は何ですか?

StackOverflow https://stackoverflow.com/questions/43672

  •  09-06-2019
  •  | 
  •  

質問

Java 実行可能ファイル (jar ファイル) を逆コンパイルしてソース コードを取得するのは簡単だと思います。

他の言語についてはどうですか?.netとか全部?

逆コンパイル可能なコードにのみコンパイルできる言語はどれですか?

役に立ちましたか?

解決

一般に、Java、C#、VB.NET などの言語は、純粋な機械語ではなく中間言語にコンパイルされるため、逆コンパイルが比較的簡単です。IL 形式では、機械語にコンパイルされたときに C コードよりも多くのメタデータが保持されます。

技術的には、元のソース コードを取得するのではなく、ソース コードのバリエーションを取得し、コンパイルすると、コンパイルされたコードが返されます。コメント、注釈、コンパイラ ディレクティブなどは通常、コンパイルされたコードには引き継がれないため、ソース コードと同一ではありません。

他のヒント

実行可能ファイルにはサポートするための多くのメタデータが含まれている必要があるため、マネージ言語は簡単に逆コンパイルできます。 反射.
C++ などの言語は、ネイティブ コードにコンパイルできます。プログラムの構造は、コンパイル/翻訳プロセス中に完全に変更される可能性があります。
コンパイラはコードの一部を簡単に置換/マージ/削除できます。元のコードとコンパイルされた (ネイティブ) コードの間には 1 対 1 の関係はありません。

.NET は逆コンパイルが非常に簡単です。それを行うための最良のツールは、 .NETリフレクタ 最近 RedGate に買収されました。

ほとんどの言語は逆コンパイルできますが、一部の言語は他の言語よりも逆コンパイルが簡単です。.Net と Java では、元のプログラムに関するより多くの情報 (メソッド名、変数名など) が実行可能ファイルに組み込まれるため、元の情報をより多く取得できます。

たとえば、C++ は変数や関数などを変換します。メモリアドレスに変換するため(はい、これが大幅な単純化であることはわかっています)、逆コンパイラーは何が呼び出されたのかを知りません。ただし、プログラムの構造の一部を取り戻すことはできます。

VB6 を pcode にコンパイルした場合、次を使用してほぼ完全なソースに逆コンパイルすることも可能です。 P32ダズム, Flash (または actionscript) は、次のようなものを使用して完全なソースに逆コンパイルすることもできます。 フレア

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top