だから私は自分のJavaコードを逆コンパイルするのがいかに簡単かを理解しました。私はネットを検索していて、理解できないようです[〜#〜 ] why [〜#〜]とても簡単です。「なぜ逆コンパイルできるのか.class
files?」または「なぜJava逆コンパイルがとても簡単なのか」、私が得るのは、コードを簡単に逆コンパイルできるソフトウェアへのリンクだけです。そこで、StackOverflowに目を向けます。 Javaは、読みやすいソースコードに戻すことができますが、C++やその他の言語は逆コンパイルにあまり適していませんか?
ありがとう
Javaバイトコードはアセンブリよりもソースに近い(より類似している)ためです。
特に、 .class
ファイルには、クラス名、メソッド名、フィールドとパラメーターのタイプなどのメタデータが含まれます。
a Java(または.Net)デコンパイラーが行う必要があるのは、各メソッド本体の命令を調べて、それらを適切な構文構造に変換することだけです。
対照的に、C++のようなネイティブ言語にはメタデータがまったく含まれていないため、逆コンパイラーはすべてを再構築する必要があります。
Javaは、元のJavaコードに含まれる大量の情報を保持する中間形式のJVMバイトコードにコンパイルされます。C++のような言語はアセンブリコードにコンパイルされ、外観は大きく異なります。元のコードであるため、元に戻すのは困難です。