Skip to main content

使用IntelliJ IDEA中的java-decompiler插件将jar包反编译为java源码

· 2 min read
orange
programmer on jvm platform

有的时候需要将jar包中的class文件反编译为java源码文件并对其行为进行分析.
IntelliJ IDEA中的java-decompiler插件可以将jar包中的class文件反编译为java源码文件.
下面介绍如何使用IntelliJ IDEA中的java-decompiler插件将jar包反编译为java源码.

解决方案

获取java-decompiler插件

IDEA安装目录下的plugins/java-decompiler/lib目录下获取java-decompiler.jar.
如果没有安装java-decompiler插件,可以从点击这里下载

反编译jar

目前java-decompiler反编译后的的源码文件是打包在jar包中的,需要将其解压出来.
这样比较不方便, 下面我提供一个脚本来反编译以及解压jar包中的源码文件.

decompile.sh
#!/bin/bash

set -ex

JAR_FILE_PATH=$(realpath $1)
DEST_DIRECTORY=$(realpath $2)

rm -rf $DEST_DIRECTORY
mkdir $DEST_DIRECTORY
java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -hdc=0 -dgs=1 -rsy=1 -rbr=1 -lit=1 -nls=1 -mpm=60 $JAR_FILE_PATH $DEST_DIRECTORY
unzip $DEST_DIRECTORY/$(basename $JAR_FILE_PATH) -d $DEST_DIRECTORY

使用方式如下

./decompile.sh drm-control.jar ./decompiled

这个脚本会将drm-control.jar反编译为java源码文件并解压到./decompiled目录下.

参考