jar ファイルの逆コンパイル (IDEA 環境)

例証する

一部のjarファイルを逆コンパイルしたい場合は、IDEAを使用する人が多いため、IDEAのプラグインを使用して逆コンパイルする方法が便利です。

IDEA プラグイン

IDEAには「Java Bytecode Decompiler」があり、通常は組み込みで直接利用できます。プラグインの場所を見つけます。

  • Java Bytecode Decompiler の場所:D:\DevTools\JetBrains\IntelliJ IDEA 2021.1\plugins\java-decompiler\lib\java-decompiler.jar

  • 逆コンパイルするjarパッケージの場所: F:\javadecom\helloworld.jar

コンソールを開き、逆コンパイルする jar パッケージのディレクトリを入力して、コマンドを逆コンパイルします。

java -cp "D:/DevTools/JetBrains/IntelliJ IDEA 2021.1/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true F:/javadecom /helloworld.jar データ

例証する

  • org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler: プラグインのスタートアップ クラスです。

  • data: 逆コンパイルするjarパッケージのパス下のフォルダで、事前に作成する必要があり、逆コンパイル結果はこのフォルダに配置されます。

コマンドを実行すると、次の図に示すように、この時点でエラーが発生します。

エラーの詳細:

F:\javadecom>java -cp "D:/DevTools/JetBrains/IntelliJ IDEA 2021.1/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true F:/javadecom/helloworld.jar data

Error: A JNI error has occurred, please check your installation and try again

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/jetbrains/java/decompiler/main/decompiler/ConsoleDecompiler has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

これは、JDK11 でコンパイルされたコードは、JDK8 を使用して逆コンパイルできないことを意味します。

このときJDK11をダウンロードする必要があり、ダウンロード後、逆コンパイルにJDK11を使用するように指定できます。

  • JDK11の場所:D:\DevTools\Java\jdk-11.0.12\bin\java.exe

JDK11 逆コンパイル コマンドを指定します。

D:/DevTools/Java/jdk-11.0.12/bin/java.exe -cp "D:/DevTools/JetBrains/IntelliJ IDEA 2021.1/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true F:/javadecom/helloworld.jar data

逆コンパイルが完了すると、data ディレクトリに jar 逆コンパイル ファイルが生成されます。

ファイルを解凍すると、逆コンパイルされたコードになります。

おすすめ

転載: blog.csdn.net/xsq123/article/details/125996990