131

Java アプレットのクラス ファイルが内部で何をしているのかを理解しようとしています。メモ帳またはテキストパッドで開くと、たくさんのゴブリングックが表示されます。

それが何をしているのかを理解しようとすることができるように、ある程度読みやすい形式に戻す方法はありますか?

  • 環境 == VS 2008 がインストールされた Windows。
4

17 に答える 17

220

jd-guiは現時点で最高の逆コンパイラです。ほこりの多いJADと比較して、Javaの新しい機能を処理できます。

于 2008-09-16T20:11:27.020 に答える
83

バイトコードの読み取りを気にしないのであれば、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
于 2008-09-16T20:08:16.357 に答える
7

Java 逆コンパイラが必要な場合は、コマンド ライン ツールjavapを使用してこれを行うことができます。また、Java Decompiler HOW-TO では、クラス ファイルを逆コンパイルする方法について説明しています。

于 2008-09-16T20:05:14.040 に答える
2

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 はまだ最高の逆コンパイラではありません...しかし、私は取り組んでいます :)

于 2008-12-23T17:56:50.067 に答える
2

jd-gui " http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q= " は、.class を逆コンパイルするための最適でユーザー フレンドリーなオプションです。ファイル....

于 2013-09-27T10:05:57.617 に答える
2

あなたが探しているのは、Java逆コンパイラです。JAD をお勧めします http://www.kpdus.com/jad.html 非営利目的の使用は無料で、仕事は完了です。

注: これにより、コードが書かれたものとまったく同じになるわけではありません。つまり、コメントや変数名が失われる可能性があるため、通常のソース コードを読むよりも少し難しくなります。開発者が本当に秘密主義である場合、コードも難読化され、さらに読みにくくなります。

于 2008-09-16T20:05:58.780 に答える
2

Jadを使用して逆コンパイルするのがおそらく最良の選択肢です。コードが難読化されていない限り、問題のない結果が得られます。

于 2008-09-16T20:03:26.057 に答える
1

確かに、JADおよび/またはJADclipseEclipseプラグイン。

于 2008-09-16T20:35:47.617 に答える
1

調べたいクラスファイルがオープンソースの場合は、逆コンパイルするのではなく、ソースファイルをIDEに直接アタッチする必要があります。そうすれば、ライブラリクラスのコードを自分のものであるかのように表示できます。

于 2008-09-17T15:29:36.737 に答える
1

これはコンパイルされたコードです。JAD のような逆コンパイラを使用する必要があります: http://www.kpdus.com/jad.html

于 2008-09-16T20:03:44.650 に答える
1

逆コンパイラを使用する必要があります。他の人はJADを提案しましたが、他のオプションがあります.JADが最適です.

元のソース コードと比べて少し見失うかもしれないというコメントを繰り返します。コードがジェネリックを使用している場合、消去のために特におかしくなりそうです。

于 2008-09-16T20:12:50.683 に答える
0

Applet.class を逆コンパイルする必要はありません。パブリック Java API クラスのソースコードは JDK (インストールする場合) に付属しており、逆コンパイルされたバイトコードよりも読みやすくなっています。src.zip に圧縮されています (JDK インストール フォルダーにあります)。

于 2008-09-16T20:45:34.597 に答える
0

提案されているように、JAD を使用して逆コンパイルし、ファイルを表示できます。読みやすくするために、Eclipse用のJADclipseプラグインを使用してJADをEclipseに直接統合するか、コマンドラインJADよりもはるかに使いやすいDJ Java Decompilerを使用できます

于 2008-09-16T20:07:55.420 に答える
0

結果として読みやすい Java コードが必要な場合、JAD は優れたオプションです。.classただし、ファイル形式の内部を本当に掘り下げたい場合は、javap. これは JDK にバンドルされており、16 進数のバイトコードを読み取り可能な ASCII に「逆コンパイル」できます。それが生成する言語は依然としてバイトコード (Java のようなものではありません) ですが、かなり読みやすく、非常に有益です。

また、本当に必要な場合は、任意のファイルを 16 進エディターで開き.class、バイトコードを直接読み取ることができます。結果は、 を使用した場合と同じですjavap

于 2008-09-16T20:09:25.853 に答える