GitHub上28.7k star的工具也太好用了

哈喽,大家好,不知道大家平时java反编译工具是不是还在用Java Decompiler呢?那你就Out了!今天给大家推荐一个现在非常火的反编译工具——jadx。它现在在github上已经有高达28.7k的star。

jadx支持Windows、Linux和macOS等多个系统,能够帮我们打开.apk,.dex,.jar,.zip等格式的文件。它使用起来非常简单方便,同时支持命令行和中文图形界面。

安装:
直接上github下载即可:github.com/skylot/jadx

现在最新版本是1.3.1,运行环境需要jdk1.8,安装好jdk之后打开下载的zip文件,运行bin目录下的jadx-gui.bat即可。

如果能正常打开将会是这个界面:

使用:
假如我们需要反编译一个jar包就只需要将jar包拖拽进jadx即可。效果如下:

如果我们想看某个apk文件的源码,也是直接拖拽进来就可以了,效果如下:

除了操作简单,jadx相比其他的反编译工具还具有下面这些强大的特性:

  1. 可以直接反编译出.java文件
  2. 可以直接导出gradle项目
  3. 自带强大的搜索功能,支持多种匹配模式
  4. 支持反混淆

其中第3点是我认为它相比jd-gui工具来说最好用的功能:它支持四种维度进行查询,Class、Method、Field、Code。范围最大的就是code。
可以使用ctrl+shift+F打开搜索框:

而且jadx还有一个很强大的功能就是可以直接搜索到关键代码在什么地方有进行调用。
选中我们要查询的方法,选中点击右键,选择 Find Usage:

使用场景:

  1. 验证混淆后的文件是否安全

我们可以把混淆后的文件放到jadx工具中反编译一下,看反编译出来的结果是否满足预期。

2. 查看打包后文件中的代码

在没有源码,只有打包后的文件时,就可以通过jadx工具将文件反编译查看其中的源代码

3.获取打包文件中的资源文件

通过jadx还可以获取到打包文件中包含的一些资源文件

同类型反编译工具对比:

反编译工具 apktool dex2.jar jd-gui jadx-gui
支持文件格式 .apk .dex .jar .apk
.dex.jar
优点 可以提取apk中的布局文件和图片等资源
支持打包代码生成apk文件
通过将apk文件中的dex文件转换成jar文件后,配合jd-gui工具打开转换后的.jar文件打开,就可以得到相应的java源码 可以反编译jar文件,得到java源码 有可视化图形界面,可以直接显示文件中的资源名称
缺点 没有图形界面,反编译后会直接生成相应文件,不方便查看源代码 需要配合能反编译jar文件的工具才能查看到其中的java代码 图形界面功能比较简单,不能显示资源文件名称,只能显示资源ID 有些文件源码会对抗jadk,会导致反编译的代码不完整。
在编译稍微比较重的文件时会出现内存不足卡死的问题

从上面的表格我们可以得出,没有一个开源项目是完美的,对于我们开发者来说,多一个工具的选择并不是什么坏事;多学习一个开源的项目,我们就能多一份进步的空间,期待后面越多的人来使用jadx,也就能帮助jadx变得更好更完善。