1. 使用ApkTool拆包,得到AndroidManifest和res等資源文件:
命令使用:
java -jar apktool.jar d yourApkFile.apk
// 注意`apktool.jar`是剛才下載后的jar的名稱,`d`參數(shù)表示decode
// 在這個(gè)命令后面還可以添加像`-o -s`之類(lèi)的參數(shù),例如
// java -jar apktool.jar d yourApkFile.apk -o destiantionDir -s
// 幾個(gè)主要的參數(shù)設(shè)置方法及其含義:
-f 如果目標(biāo)文件夾已存在,強(qiáng)制刪除現(xiàn)有文件夾
-o 指定反編譯的目標(biāo)文件夾的名稱(默認(rèn)會(huì)將文件輸出到以Apk文件名命名的文件夾中)
-s 保留classes.dex文件(默認(rèn)會(huì)將dex文件解碼成smali文件)
-r 保留resources.arsc文件(默認(rèn)會(huì)將resources.arsc解碼成具體的資源文件)
2. 將dex文件轉(zhuǎn)換成jar文件:
方法1: 通過(guò)dex2jar反編譯dex文件(步驟1中獲取),得到源碼
命令用法:
d2j-dex2jar classes.dex
// 獲取classes.dex文件在最前面說(shuō)過(guò),只要把Apk當(dāng)做zip解壓出來(lái),里面就有dex文件了
// 或者用apktool反編譯時(shí)帶上 `-s` 參數(shù)
(打開(kāi)下載的dex2jar-2.0文件夾,里面有shell和bat腳本,進(jìn)入終端,就可以在命令行使用了。)
方法2: 通過(guò)Google-enjarify,得到源碼(推薦使用)
用法:
1.下載獲取enjarify,解壓到期望目錄,并將該路徑添加到環(huán)境變量path中
2.(可選) 由于enjarify要使用到python解析器,所以如果你電腦還沒(méi)安裝python開(kāi)發(fā)環(huán)境,下載一個(gè)python解析器(官方推薦pypy,下載地址:http://pypy.org/,注意:要pypy3.+版本)
3.下載之后解壓到期望目錄,并將該路徑添加到環(huán)境變量path中 (在命令行輸入 pypy,出現(xiàn)下圖所示即為安裝成功)
4.找到Enjarify目錄下的enjarify.bat文件,使用編輯器打開(kāi)(建議notepad),修改
python3 -O -m enjarify.main %* –> pypy -O -m enjarify.main %*
5.在命令行輸入 enjarify -f XXX.apk , -f 在這里是必須要加上的,否則會(huì)出現(xiàn)警告,無(wú)法反 編譯APK文件
6.反編譯之后的文件是一個(gè)jar文件,使用jd-gui查看Jar文件
驗(yàn)證pypy是否安裝好.PNG
3. jd-gui查看java源代碼:
下載對(duì)應(yīng)系統(tǒng)的jd-gui(下載地址:http://jd.benow.ca/), 解壓得到j(luò)d-gui.exe,
雙擊既可以運(yùn)行這個(gè)工具,直接把上一步得到的xxx.jar拖到j(luò)d-gui程序的界面上即可打開(kāi)查看java源碼了
===相關(guān)軟件下載鏈接===
ApkTool
dex2jar
enjarify
pypy
JD-GUI
參考博客:
Android反編譯技術(shù)總結(jié)
Google反編譯新工具——Enjarify使用