jadx 反編譯apk

引子

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

首先給出jadx的github地址

使用方式

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

1.安裝

依次運行以下命令:

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

主要是拉下來jadx的git主工程,然后跑對應(yīng)的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,那么這里繼續(xù)用淘寶apk,便于三者的橫向比較。

bin/jadx-gui taobao.apk

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


jadx-gui腳本文件

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

選中taobao.apk

選中淘寶apk,并且反編譯完成后,結(jié)果如下:

反編譯taobao.apk結(jié)果

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

結(jié)果橫向?qū)Ρ龋╟lassyshark,apktool+dex2jar+jd-gui)

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

AllsparkLoader反編譯結(jié)果

我們可以看到可讀性非常高,要是去掉混淆的影響,已經(jīng)很接近源碼了?。。。?xì)心的讀者可以發(fā)現(xiàn)該gui還包含了一部分編譯器的功能,很實用)

另外幾個很贊的功能介紹

1.支持全局class查詢

全局class查詢

2.支持全局text查詢

全局text查詢

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

導(dǎo)出gradle工程

那么我們最終看看在as中打開導(dǎo)出工程后的結(jié)果:

as中打開導(dǎo)出工程

很贊對不對

總結(jié)

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

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 為什么要反編譯? 場景一 產(chǎn)品經(jīng)理:xxx,反編譯xxx的播放器,看看他們是怎么實現(xiàn)的? 場景二 測試:這個...
    傷口不該結(jié)疤閱讀 12,449評論 7 51
  • 使用到的工具:Apktool:用來獲取圖片、xml等資源文件dex2jar:把dex文件轉(zhuǎn)換成jar包JD-GUI...
    good_dev閱讀 922評論 0 1
  • 反編譯軟件 首先是很多人在用的三個: **apktool **,獲取資源文件 dex2jar,獲取 jar。 j...
    chauI閱讀 1,498評論 3 6
  • 前言 處理反編譯,首先先要了解apk文件的結(jié)構(gòu),然后是編譯過程,最后是反編譯。反編譯Apk的目的就是Apk拆成我們...
    yzzCool閱讀 5,889評論 0 8
  • 人要學(xué)會剖析自己,但是最好不是在傷害了愛你的人之后,否則,你會發(fā)現(xiàn)自己竟然是那么的混蛋!明明很愛她,很在乎...
    孤秋長落閱讀 255評論 0 0

友情鏈接更多精彩內(nèi)容