Android Apk反编译系列教程(一)如何反编译APK

教程导航

背景

在作竞品分析的时候,须要对竞品apk进行反编译分析竞品功能实现方法。java

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中对导出的工程进行分析

工具推荐

上述工具各有优劣,在对应的场景选择最合适的工具才能达到最高的效率。下面针对不一样的场景,推荐其对应的工具git

(1)apk编译和反编译:apktoolgithub

(2)smali代码分析:bytecode-viewermarkdown

(3)java代码分析:jadx gradle项目导出+AS代码分析工具

  • 一次导出,永久分析,不用每次都从新反编译