技術是一個需要不斷學習和積累的過程,除了研究底層源碼以外,有時候借鑑別人的代碼也是學習的一部分;今天介紹一款好用的反編譯軟件----jadx;記錄自己的學習歷程;
首先,我找到了dex2jar、apktool、jd-gui;這三種配合使用也可以完成反編譯;但是步驟繁瑣,使用的工具也麻煩;
而jadx只需要一步到位,而且圖形化界面,找代碼的話也很方便。
安裝
jadx在github上開源了,所以我們可以直接去下載了
https://github.com/skylot/jadx
點擊進行下載,也給大家準備了現成的,大家可以自行下載
https://download.csdn.net/download/upuprita/11060376
下載完解壓後可以看到如下目錄
進入bin目錄下,雙擊jadx-gui.bat即可運行
簡單使用
單擊左上角文件目錄-->打開-->選擇你要反編譯的apk文件
即可看到對應的資源和大部分邏輯代碼。
全局查找
Ctrl+Shift+F
查找類
jadx可以在應用它的類中跳轉到他的主類中
按住Ctrl,鼠標移動到要跳轉的類名字上,左鍵單擊跳轉
反混淆
我們在打包的時候都會對apk進行混淆,但是我們在閱讀代碼的時候被混淆後的代碼的類名都是用abc命名的,這樣使我們的閱讀體驗非常不好,所以,在這裏,jadx還幫助我們反混淆,雖然有些名字反混淆後還是不規範,但是爲我們理解代碼提供了很大的幫助,操作辦法:工具-->反混淆
反混淆前:
反混淆後:
導出Gradle文件
jadx中操作代碼始終沒有在編輯器中方便,jadx考慮到這一點,故提供了可以將項目導出成gradle文件:文件-->另存爲Gradle項目,導出後
src目錄下main下:
可以看到資源文件、清單列表、等大部分代碼。