教程導航
- 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程式碼分析
- 一次匯出,永久分析,不用每次都重新反編譯