用jadx和apktool反編譯apk

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

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

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文件到本機,解壓縮
  3. 直接運行bin文件夾里面的jadx-gui.bat,打開加載第一步獲取到的classes.dex,就完成了反編譯
    (也可以把bin目錄設置為系統(tǒng)環(huán)境變量Path,進入命令行運行 jadx -d out classes.dex,jadx會在當前目錄生成一個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. 確保把上面兩個文件放在同一目錄下,并把該目錄添加到系統(tǒng)環(huán)境變量Path中
  3. cmd中執(zhí)行 apktool d -f “apk路徑” -o “文件保存路徑” 即可獲得該apk下所有的xml資源文件

ok,搞掂!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容