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

7,577 阅读1分钟

教程导航

背景

在做竞品分析的时候,需要对竞品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代码分析

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