Android Apk反編譯系列教程(一)如何反編譯APK

尋找極限的貓發表於2019-04-14

教程導航

背景

在做競品分析的時候,需要對競品apk進行反編譯分析競品功能實現方法。

APK反編譯工具對比分析

apktool

  • 專案地址:ibotpeaches.github.io/Apktool/doc…
  • 優點
    • 可對apk進行反編譯和編譯,apk重打包需要依賴此工具
  • 缺點
    • 反編譯的程式碼需要藉助對應的工具才能閱讀

bytecode-viewer

  • 專案地址:github.com/Konloch/byt…
  • 優點:
    • 整合了apktool,jd-gui等
    • 支援多種smali程式碼的反編譯器
    • 支援smali程式碼和java程式碼對照分析
  • 缺點
    • 每次檢視都需要重新反編譯
    • 搜尋非常難用
      Android Apk反編譯系列教程(一)如何反編譯APK

jadx

  • 專案地址:github.com/skylot/jadx
  • 優點:可將apk直接匯出為gradle專案
  • 缺點:同bytecode-viewer (1)將apk匯出為gradle專案
    Android Apk反編譯系列教程(一)如何反編譯APK
    (2)在AS中對匯出的工程進行分析
    Android Apk反編譯系列教程(一)如何反編譯APK

工具推薦

上述工具各有優劣,在對應的場景選擇最合適的工具才能達到最高的效率。下面針對不同的場景,推薦其對應的工具

(1)apk編譯和反編譯:apktool

(2)smali程式碼分析:bytecode-viewer

(3)java程式碼分析:jadx gradle專案匯出+AS程式碼分析

  • 一次匯出,永久分析,不用每次都重新反編譯

相關文章