Java - 「.class」ファイルをJavaファイルにコンパイルする方法(jd-cli decompiler)

Jarファイルはzipで圧縮がされています。この解凍すると、多くの .classファイルがあります。 classファイルは、Javaファイルをバイトコードにコンパイルし、生成された成果物です。

classファイルを開くと、Javaコードが見えないので、見たい場合はJavaで再びコンパイルする必要があります。

decompileする方法はいろいろありますが、ここでは次の二つの方法を紹介します。

  1. IntelliJ IDEでコンパイルする方法
  2. jd-cliツールを利用して逆コンパイルする方法

1. IntelliJ IDEでデコンパイルする方法

.classファイルをJavaファイルにコンパイルするための最も簡単な方法の一つは、IntelliJを利用する方法です。

IntelliJを使用している場合、 .classファイルをDrag-and-dropして、IDEのウィンドウに上げておくだけで、自動的にJavaでコンパイルされます。 Decompile class to java in Intellij

2. jd-cliツールを使用してデコンパイルする方法

classファイルをJavaでdecompileする jd-cliというツールがあります。 Jarファイル内のすべてのclassファイルをJavaに変換してくれるので便利です。

jd-cliツールは、GitHub - Jd-cmdからダウンロードすることができます。

私は、インストールファイルを ~/apps/jd-cli-0.9.2-dist/パスに解凍し保存しました。

その後、次のようにjd-cli.jarコマンドを実行することができます。コマンドの引数としてコンパイルしたいjarファイルと変換されたファイルが保存されている場所を入力します。

$ java -jar jd-cli.jar [jar file] -od [output folder]

私の場合は、次のようなコマンドでコンパイルすることができます。 outputフォルダを見ればjavaファイルにコンパイルされたことを確認することができます。

java -jar ~/apps/jd-cli-0.9.2-dist/jd-cli.jar android.jar -od output
$ jd-cli android.jar -od output
09:13:41.923 INFO  jd.cli.Main - Decompiling android.jar
09:13:41.925 INFO  jd.core.output.DirOutput - Directory output will be initialized for path output
09:13:46.225 INFO  jd.core.output.DirOutput - Finished with 4751 class file(s) and 7594 resource file(s) written.

classファイル1個のみデコンパイル

jd-cliはjarだけでなく、classファイルをJavaに変換するコマンドもあります。

  • java -jar jd-cli.jar [class file]:classファイルをjavaに変換して、画面に出力します
  • java -jar jd-cli.jar [class file] -od [output folder]:classファイルをjavaに変換してouput folderに保存されます

次のように使用することができます。

$ java -jar jd-cli.jar AbstractCollection.class
09:32:37.885 INFO  jd.cli.Main - Decompiling /home/js/Desktop/android/java/util/AbstractCollection.class
package java.util;

import androidx.annotation.RecentlyNonNull;
import androidx.annotation.RecentlyNullable;

public abstract class AbstractCollection<E>
....

alias (For linux user)

毎回コマンドを入力すると、面倒ため ~/.bashrcに以下のようにコマンドをaliasで登録することができます。

$ alias jd-cli='java -jar ~/apps/jd-cli-0.9.2-dist/jd-cli.jar'

aliasを登録すると、次のように短いコマンドでコンパイルすることができます。

$ jd-cli android.jar -od output

Related Posts

codechachaCopyright ©2019 codechacha