使用IDEA的反编译插件 反编译jar包/class文件/修改jar包

反编译插件介绍

安装IDEA后, 一般自带反编译插件, Java Bytecode Decompiler
如果没有可以自己安装下
在这里插入图片描述

1.首先找到插件的jar包, 在IDEA安装目录的plugins文件夹下

比如我的目录是:

E:\IDEA\plugins\java-decompiler\lib\java-decompiler.jar

2.运行java命令, 指定插件的jar包目录和你要反编译的jar包目录还有生成反编译后jar包的目录

命令如下:

java -cp “E:\IDEA\plugins\java-decompiler\lib\java-decompiler.jar” \ 
org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true \ 
D:\maven\respository\xxx\xxx-0.0.1-SNAPSHOT.jar D:\src

E:\IDEA\plugins\java-decompiler\lib\java-decompiler.jar 是我的插件目录
D:\maven\respository\xxx\xxx-1.5.0-SNAPSHOT.jar 是我要反编译的jar包
D:\src 是我要生成反编译后jar包的目录

当jre版本低于class文件的版本时会报错

错误信息:

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(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

class文件版本跟jdk版本对应关系如下

49 = Java 5
50 = Java 6
51 = Java 7
52 = Java 8
53 = Java 9
54 = Java 10
55 = Java 11
56 = Java 12
57 = Java 13
58 = Java 14
59 = Java 15
60 = Java 16

我们可以指定自己安装的高版本JDK来运行, 比如这里我用自己安装的JDK11来运行

E:\JDK\jdk11.0.10\bin\java -cp \ 
“E:\IDEA\plugins\java-decompiler\lib\java-decompiler.jar” \ 
org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true \ 
E:\Java_develop\Maven\repository\com\xxx\xxx\0.0.1-SNAPSHOT\xxx.jar D:\src\

3.可以直接解压jar包

jar包实际就是一个压缩包文件, 比如我们常见的zip/rar
可以直接用压缩工具解压, 也可以把xxx.jar的后缀改成xxx.zip后解压
解压后直接导入IDEA修改, 修改完了再编译打包即可

4.打jar包命令

打jar包命令, 将当前目录文件所有文件或者匹配*.class文件打到jar包中

jar cvf xxx.jar ./

指定manifest文件进行打包

jar cvfm xxx.jar MANIFEST.MF *.class
### 推荐的 IntelliJ IDEA 反编译 JAR 插件 #### Java Bytecode Decompiler 插件安装 为了在 IntelliJ IDEA 中实现 JAR 文件的有效反编译,建议使用 **Java Bytecode Decompiler** 插件。此插件能够帮助开发者轻松地浏览和理解字节码文件的内容。 通过 `File` -> `Settings` -> `Plugins` 的路径进入插件市场页面,在搜索栏中输入并查找名为 *Java Bytecode Decompiler* 的选项进行安装[^1]。 #### 使用 Decompile Jar 功能 一旦上述插件被成功激活之后,用户可以通过简单的操作来完成整个 JAR 反编译工作。具体来说就是选中目标 JAR 文件后点击右键菜单中的 “Decompile Jar”,随后IDEA会自动处理并将源代码展示给用户[^2]。 #### 手动方式补充说明 除了借助专门开发出来的插件外,对于只需要偶尔查看单个 `.class` 文件的情况而言,还可以采取更为简便的方法——即直接对着项目内的某个特定 .jar 或者 .class 文件执行鼠标右击动作,并选取相应的预览指令即可快速获取其内部结构信息而无需额外配置任何环境变量或是第三方组件支持[^3]。 ```bash java -cp "D:\JetBrains\IntelliJ IDEA\IntelliJ IDEA 2020.1\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true Behinder.jar BehinderDeCompiler ``` 这段命令展示了另一种不依赖图形界面的方式来进行批量式的反汇编作业;它适用于那些更倾向于脚本化流程控制或者是希望获得更高程度自动化能力的技术人员群体[^4]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code tea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值