教程导航
- Android Apk反编译系列教程(一)如何反编译APK
- Android Apk反编译系列教程(二)APK重打包
- Android Apk反编译系列教程(三)Android Studio调试smali代码
背景
在做竞品分析的时候,需要对竞品apk进行反编译分析竞品功能实现方法。
APK反编译工具对比分析
apktool
- 项目地址:ibotpeaches.github.io/Apktool/doc…
- 优点
- 可对apk进行反编译和编译,apk重打包需要依赖此工具
- 缺点
- 反编译的代码需要借助对应的工具才能阅读
bytecode-viewer
- 项目地址:github.com/Konloch/byt…
- 优点:
- 集成了apktool,jd-gui等
- 支持多种smali代码的反编译器
- 支持smali代码和java代码对照分析
- 缺点
- 每次查看都需要重新反编译
- 搜索非常难用
jadx
- 项目地址:github.com/skylot/jadx
- 优点:可将apk直接导出为gradle项目
- 缺点:同bytecode-viewer
(1)将apk导出为gradle项目
(2)在AS中对导出的工程进行分析
工具推荐
上述工具各有优劣,在对应的场景选择最合适的工具才能达到最高的效率。下面针对不同的场景,推荐其对应的工具
(1)apk编译和反编译:apktool
(2)smali代码分析:bytecode-viewer
(3)java代码分析:jadx gradle项目导出+AS代码分析
- 一次导出,永久分析,不用每次都重新反编译