Jar包常见的反编译工具介绍与使用

反编译JAR能干什么: 排查问题、分析商业软件代码逻辑,学习优秀的源码思路。

反编译工具介绍

JD-GUI

下载地址:http://java-decompiler.github.io/

点评:支持的java版本不会太高,中文注释能够正常显示。

image-20200908201112636

Luyten

下载地址:https://github.com/deathmarine/Luyten

点评: 支持更多,但是中文不正常显示。底层使用的是Procyon。

image-20200908203433404

Jadx

下载地址:https://github.com/skylot/jadx

点评:卡了很长时间都没显示解析完,很耗内存与时间。

image-20200908203351573

Bytecode Viewer

下载地址:https://github.com/Konloch/bytecode-viewer

点评:大部分都能正常查看,也能够查看字节码指令。

image-20200908202145928

Class Shark

下载地址:https://github.com/google/android-classyshark

点评: 测试两个jar都直接失败,放弃。

image-20200908202333017

综合点评

jd-gui.exe功能多但是支持java版本不太高,Luyten支持版本更多,但是中文显示不好。Bytecode Viewer也不错。Jadx强项在APK逆向方面,更吃资源。Class Shark使用未成功,你们看着办。

终极大招

实际上面的反编译的工具失败了,我们还可以利用Idea自带的反编译工具。

新建一个Maven项目,在项目的pom中加入需要反编译的Jar包,groupId、artifactId可以随便写。

<dependency>
	<groupId>vip.codehome</groupId>
	<artifactId>test</artifactId>
	<scope>system</scope>
	<version>1.0</version>
	<systemPath>C:\\Users\\codehome\\Desktop\\{jar名称}.jar</systemPath>
</dependency>

image-20200908203626103



JD-GUI

JD-GUI是一款开源的反编译软件,通过它我们可以比较方便的进行jar包的反编译。

1、其下载地址如下所示

JD-GUI下载地址

在这里插入图片描述

2、下载完成后,解压压缩包即可

在这里插入图片描述

3、我这里以mac系统为例,双击打开解压文件夹中JD-GUI程序

新版m1芯片mac可能会出现如下报错

在这里插入图片描述

提示内容描述的是需要jdk1.8以上,实际上并不是这个原因,我这里使用的是jdk11,要解决这个问题还需要修改一个文件

2、右键点击JD-GUI,点击显示包内容

在这里插入图片描述

3、进入Contents/MacOS文件夹,打开universalJavaApplicationStub.sh文件,使用新版的文件替换,新版文件内容可以在如下地址复制

https://raw.githubusercontent.com/tofi86/universalJavaApplicationStub/master/src/universalJavaApplicationStub

在这里插入图片描述

4、双击打开软件,将需要反编译的jar包拖到软件界面中

在这里插入图片描述

5、选中全部文件,点击File-Save All Sources保存反编译完的源码,选择保存路径

在这里插入图片描述

在这里插入图片描述

6、等待反编译完成即可

在这里插入图片描述

7、反编译完成后,在BOOT-INF/classes文件夹下可以看到生成的源码

在这里插入图片描述

如此我们就拿到了想要的源码了,简单快捷!当然生成的源码在文件夹结构上会有些偏差,只需要手动调整一下即可,核心源码是可以完整捕捉的。



使用IDEA插件反编译jar包

1. 使用说明

项目上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况,只能去看日志的报错行数是哪里,否则,无从下手。

查看日志报错行数时,发现现有代码又和线上的代码不一致,怎么办?

这个时候我们就需要反编译,反编译有很多工具可以使用,比如JD-GUI。本文接下来就介绍一下如何通过我们神奇的Idea软件进行反编译jar包。

2. 操作步骤

2.1 下载插件

首先,我们要保证IDEA中有反编译插件。通过【File】——>【Settings】——>【Plugins】输入Decompiler进行查看,看是否有Java Decompiler这个插件。

没有安装就下载安装,然后重启IDEA即可。

img

img

2.2 查找插件安装路径

  1. 右键点击IDEA,选择属性,复制IDEA安装路径

img

  1. 打开文件资源管理器,复制路径(路径不要复制太长看到bin目录即可)

img

  1. 找到IDEA安装路径后,我们就可以找到插件的安装路径在 plugins 文件夹下面,找到 java-decompiler

img

  1. 进入 lib 文件夹,看到插件即可

img

2.3 反编译

  1. 在 lib 文件夹下创建一个目录,如test文件夹

img

  1. 在 lib 文件夹下放入要反编译的 jar 包

img
3. 黄色代码是替换的内容

java -cp + “插件路径” + org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true + jar包 + 反编译后存储位置

java -cp "D:\IDEA\IntelliJ IDEA 2020.1.4\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true test.jar test

4.然后才此目录下执行命令(两种方式都可以,自行选择)

4.1 通过 cmd 的方式反编译,输入 cmd 回车,输入上面的命令回车

img

img

4.2 通过 Git Bash Here 的方式反编译,在当前目录下右键Git Bash Here,输入上面的命令回车

img

**注意 **:如果不先创建目录,就执行的话,可能会报错。

3. 查看反编译文件

3.1 执行完之后会在新建的文件夹里面看见反编译之后的文件

img

3.2 因为以上命令执行后,反编译出来的也是jar包

img

3.3 用解压软件解压就可以了

img

3.4 反编译后的目录结构跟jar包是一样的,只不过是把class文件反编译成java文件

img

img

Jarclass反编译工具是一种在线工具,可用于将Jar文件中的class文件进行反编译。 这种工具的主要功能是将编译后的Java字节码文件恢复成可读性较高的Java源代码,方便开发人员进行代码的理解、修改及调试等工作。 在线的Jarclass反编译工具通常通过上传Jar文件,然后在服务器端进行反编译处理,最后将反编译后的Java源代码以可下载的方式提供给用户。 使用这种工具,用户无需下载和安装额外的软件,只需将需要反编译Jar文件上传到在线平台,即可获得相应的Java源代码。 Jarclass反编译工具的优势之一是方便快捷,用户只需几步操作即可获得反编译后的Java源代码,节省了安装配置和学习使用其他反编译工具的时间。 同时,由于是在线工具,也更加适用于需要临时反编译的场景,不需要在本地长期保留相关软件。 然而,需要注意的是,由于涉及源代码的反编译,应确保拥有合法的授权和权限,遵守相关的法律和规定。 另外,Jarclass反编译工具反编译出的Java源代码可能原始代码存在一定的差异,并且可能不含原始注释等附加信息。因此,在使用反编译代码时,需要根据具体情况进行审慎分析和验证。 总之,Jarclass反编译工具的在线版本是一种方便快捷的工具,能够帮助开发人员在需要反编译Jar文件的时候,快速获取Java源代码,提高效率。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Archie_java

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

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

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

打赏作者

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

抵扣说明:

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

余额充值