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