Java アプレットのクラス ファイルが内部で何をしているのかを理解しようとしています。メモ帳またはテキストパッドで開くと、たくさんのゴブリングックが表示されます。
それが何をしているのかを理解しようとすることができるように、ある程度読みやすい形式に戻す方法はありますか?
- 環境 == VS 2008 がインストールされた Windows。
jd-guiは現時点で最高の逆コンパイラです。ほこりの多いJADと比較して、Javaの新しい機能を処理できます。
バイトコードの読み取りを気にしないのであれば、javap は正常に動作するはずです。これは、標準の JDK インストールの一部です。
Usage: javap <options> <classes>...
where options include:
-c Disassemble the code
-classpath <pathlist> Specify where to find user class files
-extdirs <dirs> Override location of installed extensions
-help Print this usage message
-J<flag> Pass <flag> directly to the runtime system
-l Print line number and local variable tables
-public Show only public classes and members
-protected Show protected/public classes and members
-package Show package/protected/public classes
and members (default)
-private Show all classes and members
-s Print internal type signatures
-bootclasspath <pathlist> Override location of class files loaded
by the bootstrap class loader
-verbose Print stack size, number of locals and args for methods
If verifying, print reasons for failure
Java 逆コンパイラが必要な場合は、コマンド ライン ツールjavap
を使用してこれを行うことができます。また、Java Decompiler HOW-TO では、クラス ファイルを逆コンパイルする方法について説明しています。
cpuguru さん、アプレットが javac 1.3 (またはそれ以下) でコンパイルされている場合、最良のオプションは Jad を使用することです。
残念ながら、JAD 1.5.8 (2001 年 4 月 14 日) がサポートする最後の JDK は JDK 1.3 です。
アプレットが最新のコンパイラでコンパイルされている場合は、 JD-GUIを試すことができます。この逆コンパイラは開発中ですが、ほとんどの場合、JDK 1.4、1.5、または 1.6 でコンパイルされたクラスに対して正しい Java ソースを生成します。
DarenW さん、投稿ありがとうございます。JD-GUI はまだ最高の逆コンパイラではありません...しかし、私は取り組んでいます :)
jd-gui " http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q= " は、.class を逆コンパイルするための最適でユーザー フレンドリーなオプションです。ファイル....
あなたが探しているのは、Java逆コンパイラです。JAD をお勧めします http://www.kpdus.com/jad.html 非営利目的の使用は無料で、仕事は完了です。
注: これにより、コードが書かれたものとまったく同じになるわけではありません。つまり、コメントや変数名が失われる可能性があるため、通常のソース コードを読むよりも少し難しくなります。開発者が本当に秘密主義である場合、コードも難読化され、さらに読みにくくなります。
Jadを使用して逆コンパイルするのがおそらく最良の選択肢です。コードが難読化されていない限り、問題のない結果が得られます。
確かに、JADおよび/またはJADclipseEclipseプラグイン。
調べたいクラスファイルがオープンソースの場合は、逆コンパイルするのではなく、ソースファイルをIDEに直接アタッチする必要があります。そうすれば、ライブラリクラスのコードを自分のものであるかのように表示できます。
これはコンパイルされたコードです。JAD のような逆コンパイラを使用する必要があります: http://www.kpdus.com/jad.html
逆コンパイラを使用する必要があります。他の人はJADを提案しましたが、他のオプションがあります.JADが最適です.
元のソース コードと比べて少し見失うかもしれないというコメントを繰り返します。コードがジェネリックを使用している場合、消去のために特におかしくなりそうです。
Applet.class を逆コンパイルする必要はありません。パブリック Java API クラスのソースコードは JDK (インストールする場合) に付属しており、逆コンパイルされたバイトコードよりも読みやすくなっています。src.zip に圧縮されています (JDK インストール フォルダーにあります)。
提案されているように、JAD を使用して逆コンパイルし、ファイルを表示できます。読みやすくするために、Eclipse用のJADclipseプラグインを使用してJADをEclipseに直接統合するか、コマンドラインJADよりもはるかに使いやすいDJ Java Decompilerを使用できます
結果として読みやすい Java コードが必要な場合、JAD は優れたオプションです。.class
ただし、ファイル形式の内部を本当に掘り下げたい場合は、javap
. これは JDK にバンドルされており、16 進数のバイトコードを読み取り可能な ASCII に「逆コンパイル」できます。それが生成する言語は依然としてバイトコード (Java のようなものではありません) ですが、かなり読みやすく、非常に有益です。
また、本当に必要な場合は、任意のファイルを 16 進エディターで開き.class
、バイトコードを直接読み取ることができます。結果は、 を使用した場合と同じですjavap
。