反編譯就是對這個APK進行反編譯褐捻。Android的反編譯分成兩個部分:
- 一個是對代碼反編譯蹬叭,也就是java文件的反編譯乡摹。
- 一個是對資源反編譯预明,也就是res文件的反編譯缩赛。
反編譯主要是參考別人的架構(gòu),以及源碼的實現(xiàn)撰糠,不是純粹的抄襲酥馍。
通過分析App的項目結(jié)構(gòu)和引用庫的信息,大致掌握了該項目的架構(gòu)阅酪,一些開發(fā)中的經(jīng)驗和不足物喷,拓寬下開發(fā)視野,發(fā)現(xiàn)一些好用的開源庫遮斥,增強我們的武器,
現(xiàn)在整體有三大方法扇丛,各有優(yōu)劣术吗。
jadx
優(yōu)點:
1.操作方便快捷,一步到位
2.有較為完善的gui界面帆精,帶有較多實用功能
3.反編譯代碼可讀性高
缺點:
1.沒有classyshark類似的方法總數(shù)統(tǒng)計以及圖形化分布界面
2.對比apktool直接反編譯出來的資源文件有相應(yīng)的缺失
ClassyShark:.下載地址
優(yōu)點:
1.使用非常便捷较屿,只需一個命令行喚起界面即可。
2.源碼目錄結(jié)構(gòu)清晰卓练,并且可以通過圖形化查看整個apk的組成架構(gòu)
缺點:
1.源碼過于簡略隘蝎,不能獲取相應(yīng)代碼邏輯
2.不能獲取到資源文件
apktool+dex2jar+jd-gui工具集
ApkTool: http://ibotpeaches.github.io/Apktool/install/
優(yōu)點:
1.可以獲取較完整的資源文件集
2.源碼較為詳細
缺點:
1.使用較為復(fù)雜,需要多個工具結(jié)合
2.不能較好查看整個apk的架構(gòu)邏輯
開發(fā)者在開發(fā)過程中可以根據(jù)實際需求斟酌使用襟企,當然有些時候三者配合使用說不定會更好哦~
建議使用jadx工具,它把dex2jar和jd-gui集成在一起顽悼,非常好用曼振。jadx的github地址
不喜歡命令行,可以使用gui模式映胁。
反編譯的.dex, .apk, .jar or .class即可(可以看到支持的格式還是很豐富的,贊)
支持全局class查詢弛姜,支持全局text查詢
支持導(dǎo)出gradle工程(你可以用as直接看反編譯的工程了)
ClassyShark工具
命令:java -jar ClassyShark.jar
彈出如下界面:
所需的工具
會在apk的同級目錄出現(xiàn)一個同名文件夾,里面就是apk的資源