Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> jadx 反編譯apk

jadx 反編譯apk

編輯:關於Android編程

引子

承接我的上一篇文章Android ClassyShark vs ApkTool,感謝讀者@weishu的提醒,jadx是我遺漏的一個非常好用的android反編譯gui工具。下面就來介紹下jadx工具。

首先給出jadx的github地址

使用方式

其實github上已經給出了很詳細的使用說明。但是作者這裡形式性地解讀下吧(- -|)。

1.安裝

依次運行以下命令:

git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist

主要是拉下來jadx的git主工程,然後跑對應的gradle task。之後會生成運行腳本,大概就是多出了這個目錄

jadx腳本目錄

1.運行

cd build/jadx/
bin/jadx -d out lib/jadx-core-*.jar
#or
bin/jadx-gui lib/jadx-core-*.jar

以上命令是git給出的運行示例,主要就是反編譯jadx源碼的一個jar包。

由於之前文章對比classyShark 和apktool時用的是淘寶apk,那麼這裡繼續用淘寶apk,便於三者的橫向比較。

bin/jadx-gui taobao.apk

當然如果你不喜歡使用命令行外加找文件路徑,你可以直接雙擊下圖腳本文件即可

 

jadx-gui腳本文件

 

會彈出以下界面,對應選中你想反編譯的.dex, .apk, .jar or .class即可(可以看到支持的格式還是很豐富的,贊)。

 

選中taobao.apk

 

選中淘寶apk,並且反編譯完成後,結果如下:

反編譯taobao.apk結果

 

可以看到結果中即反編譯了資源文件和源碼,這個效果對比,apktool+dex2jar+jd-gui這三個工具集來說操作簡便了太多。

結果橫向對比(classyshark,apktool+dex2jar+jd-gui)

主要就是來對比下反編譯後源碼的可讀性。同樣選用com.taobao.allspark包下的AllsparkLoader來進行對比,用jadx反編譯後的結果為:

AllsparkLoader反編譯結果

我們可以看到可讀性非常高,要是去掉混淆的影響,已經很接近源碼了!!!(細心的讀者可以發現該gui還包含了一部分編譯器的功能,很實用)

另外幾個很贊的功能介紹

1.支持全局class查詢

全局class查詢

2.支持全局text查詢

全局text查詢

3.支持導出gradle工程(你可以用as直接看反編譯的工程了)

導出gradle工程

 

那麼我們最終看看在as中打開導出工程後的結果:

 

as中打開導出工程

 

很贊對不對

總結

看了以上之後,我們就來說下jadx對比classyshark和(apktool+dex2jar+jd-gui工具集)的優劣勢吧。

優點:
1.操作方便快捷,一步到位
2.有較為完善的gui界面,帶有較多實用功能
3.反編譯代碼可讀性高

缺點:
1.沒有classyshark類似的方法總數統計以及圖形化分布界面
2.對比apktool直接反編譯出來的資源文件有相應的缺失(這個有心的童鞋可以自己嘗試下,這裡就不給截圖了)

總體來說jadx還是你反編譯工具的最佳選擇,當然有些時候可能還是需要你去配合使用,畢竟現在看來三者還是各有優劣的。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved