有时使用jd-gui会发现提示错误
INTERNAL ERROR
,
http://stackoverflow.com/questions/17643825/using-java-decompiler-jd-gui-and-getting-internal-error。
这时可以尝试下luyten或jadx。
luyten
https://github.com/deathmarine/Luyten
点击download
可以进入下载页
jadx
https://github.com/skylot/jadx
点击download
可以进入下载页
jadx可以支持直接把apk拖进去反编译,这个功能很强大,关键它还是全中文的。
强大的搜索功能
工具
–》搜索文本
直接搜索到引用的代码
有时候找到关键代码了,还想看看在哪些地方调用或者引用了它,jadx
也提供了这方面的支持,找到我们需要查看的类或者方法,选中点击右键,选择 Find Usage
即可
反混淆
工具
–》反混淆
或在文件
–》设置
Apk被混淆后,类名,方法都会变成a.b.c,而 反混淆 功能,可以为它们确定一个特殊的名字,这样它在这个项目中,名字就唯一了,方便我们识别和搜索。
一般建议在设置
里做如下配置:
注意勾选强制覆盖反混淆映射文件
最后两项CFG图
好像勾选后更好,就是时间太久了。
一键导出 Gradle 工程
文件
–》另存为gradle工程
jadx
还支持将反编译后的项目,直接导出成一个 Gradle
编译的工程。
然后可以借助AS强大的IDE功能,例如方法跳转、引用搜索等等,让我们阅读起来更方便。
jadx 的错误处理
jadx
在使用过程中,也会有一些错误情况,这里总结一些比较常见的错误。
inconsistent code
有时候有代码,反编译的不完整,你会看到 JADX WARNING : inconsistent code
标志的错误。
这时打开文件
–》设置
勾选 显示不一致的 代码
。