5

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

他の言語はどうですか?.netとすべて?

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

4

5 に答える 5

11

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

技術的には、元のソースコードを取得していませんが、コンパイル時にコンパイルされたコードを返すソースコードのバリエーションです。コメント、アノテーション、コンパイラ指令などは通常、コンパイルされたコードに引き継がれないため、ソースコードと同じではありません。

于 2008-09-04T12:57:54.980 に答える
5

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

于 2008-09-04T13:00:13.273 に答える
2

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

于 2008-09-04T12:49:09.370 に答える
1

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

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

于 2008-09-04T12:55:39.293 に答える
1

PcodeにコンパイルされたVB6は、 P32Dasmを使用してほぼ完全なソースに逆コンパイルすることも可能です。Flash(またはactionscript)は、Flareなどを使用して完全なソースに逆コンパイルすることもできます。

于 2008-09-04T12:58:41.983 に答える