用jadx和apktool反編譯apk

由于之前開發(fā)的計(jì)費(fèi)app做好后一時(shí)大意,沒(méi)有做版本控制,剛好遇上固態(tài)硬盤悲劇了(買了才幾個(gè)月,就掛掉了。SanDisk那邊二話不說(shuō)就幫我換個(gè)新的過(guò)來(lái),估計(jì)是維修的成本太高,懶得修了)。還好,主管那有一份我發(fā)給他的試用版app,只能用這個(gè)app來(lái)反編譯獲取代碼再做版本控制了。

前前后后一共用了三款反編譯工具(dex2jar、enjarify、jadx)。其中dex2jar和enjarify(google出品),對(duì)我來(lái)說(shuō)效果都一般,比較多錯(cuò)誤,要么就是變量名搞得模棱兩可,要么就是方法體添加了許多不必要的代碼,資源引用也幫我全部轉(zhuǎn)成了int了。jadx雖然也有部分資源引用變成了int,但其小巧,簡(jiǎn)單易用,代碼完整性最好,最讓我滿意。

apk反編譯一般分兩部分:

  • .dex文件反編譯成jar(用jadx)
  • xml文件反編譯(用apktool)

jadx反編譯dex文件

  1. 把需要反編譯的apk更改后綴名為.zip,解壓縮獲取classes.dex
  2. clone https://github.com/skylot/jadx.git 或者下載https://github.com/skylot/jadx的zip文件到本機(jī),解壓縮
  3. 直接運(yùn)行bin文件夾里面的jadx-gui.bat,打開加載第一步獲取到的classes.dex,就完成了反編譯
    (也可以把bin目錄設(shè)置為系統(tǒng)環(huán)境變量Path,進(jìn)入命令行運(yùn)行 jadx -d out classes.dex,jadx會(huì)在當(dāng)前目錄生成一個(gè)out文件夾,里面就是反編譯到的java文件)

apktool反編譯獲取xml資源文件

  1. 把以下代碼保存成apktool.bat文件
@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
  1. https://bitbucket.org/iBotPeaches/apktool/downloads下載apktool_x.x.x.jar文件
  2. 確保把上面兩個(gè)文件放在同一目錄下,并把該目錄添加到系統(tǒng)環(huán)境變量Path中
  3. cmd中執(zhí)行 apktool d -f “apk路徑” -o “文件保存路徑” 即可獲得該apk下所有的xml資源文件

ok,搞掂?。?!

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

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

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