JADX是一款用过都说好的安卓反编译工具,它功能强大,它可以处理大部分反编译的需求,满足相关人员日常反编译需求。这里为大家带来的是最新1.0版本的单文件版,单开就能用。小编在这里分享给有需要的朋友!
前面提到,直接双击 jadx-gui 就可以直接运行。运行之后,会启动一个 terminal ,在这里你可以看到你所有操作的输出,错误日志也会输出在这里。
打开之后,你可以选择一个 apk、dex、jar、zip、class、aar 文件,可以看到 jadx 支持的格式还是挺多的,基本上编译成 Java 虚拟机能识别的字节码,它都可以进行反编译。除了选择一个文件,还可以直接将 apk 文件,拖拽进去,这一点非常好用。
我随便找了一个手边的 Apk ,丢进去,看看反编译后的效果。
这里面就是反编译后的代码了,对于 apk 而言,一些 xml 的资源,也一并被反编译还原回来了,非常的方便。
JADX使用起来非常的方便,而提供的gui程序,也很好用。下面开始介绍JADX-gui程序的一些好用的技巧。
3.1强大的搜索功能
JADX提供的搜索功能,非常强大,而且搜索速度也不慢。
你可以点击Navigation->TextSearch或者Navigation->ClassSearch激活它,更方便的还是快捷键,我本机的快捷键是control+shift+f,这个就因人而异了。
JADX的搜索,支持四种维度,Class、Method、Field、Code,我们可以根据我们搜索的内容进行勾选,范围最大的就是Code,基本上就是文本匹配搜索。这里反编译的Apk集成了支付宝支付,所以能搜到alipay的内容。
3.2直接搜索到引用的代码
有时候找到关键代码了,还想看看在哪些地方调用或者引用了它。
JADX也提供了这方面的支持,找到我们需要查看的类或者方法,选中点击右键,选择FindUsage。
之后,它就会帮你搜索出,在这个项目中,哪些地方引用了它。
点击就可以直接跳转过去,非常的方便。
3.3deobfuscation
一般Apk在发布出去之前,都是会被混淆的,这基本上国内App的标配。这样一个类,最终会被混淆成a.b.c,方法也会变成a.b.c.a(),这样其实非常不利于我们阅读。我们很难看到一个a.java的文件,就确定它是哪一个,还需要根据包名来区分。
而deobfusation功能,可以为它们其一个特殊的名字,这样它在这个项目中,名字就唯一了,方便我们识别和搜索。
这个功能可以在Tools->deobfusation中激活。
接下来来看看它的效果。
开启deobfusation之后的效果如下:
可以看到,a变成了p003a。不知道这样看你觉得有方便一些吗?
3.4一键导出Gradle工程
虽然,JADX-gui可以直接阅读代码,还是很方便的。但是毕竟没有我们常见的编辑器来的方便。而正好JADX还支持将反编译后的项目,直接导出成一个Gradle编译的工程。
可以通过File->Saveasgradleproject来激活这个功能。
最终输出的目录,是可以直接通过AndroidStudio打开的。
不过虽然AS可以直接打开它,但是大多数情况下你是编译不起来的。但是这样的功能,主要是为了借助AS强大的IDE功能,例如方法跳转、引用搜索等等,让我们阅读起来更方便。
1、操作方便快捷,一步到位
2、有较为完善的gui界面,带有较多实用功能
3、反编译代码可读性高
4、支持全局搜索class、method、field、code
jadx卡死错误修复方法
有时候会出现卡死的状态,这是因为内存不够。官方提供了以下两种解决方案。
一、减少处理线程数(-j选项)
二、增加最大java堆大小:
命令行(linux的例子):JAVA_OPTS="-Xmx4G" jadx -j 1 some、apk
编辑'jadx'脚本(Windows上的jadx、bat)并设置更大的堆大小: DEFAULT_JVM_OPTS="-Xmx2500M"