在Mac上進行反編譯apk,需要三個工具,分別為(附下載地址):
-
apktool,下載Mac版
- 作用:資源文件獲取,能夠提取出圖片文件和布局文件進行使用查看
-
dex2jar,下載最新的即可,目前是2.0版
- 作用:將apk反編譯成java源代碼(classes.dex轉(zhuǎn)化成jar文件)
-
jd-gui,下載Mac版,jd-gui-osx-1.4.0.tar
- 作用:查看APK中classes.dex轉(zhuǎn)化成出的jar文件,即源代碼文件
安裝
一、apktool
- 將下載的apktool_xx.jar(apktool_xx.jar重命名為apktool.jar)和apktool.txt(apktool.txt重命名為apktool)
- 可以直接右鍵重命名
- 也可以再命令行輸入,例如:
mv ./apktool.txt ./apktool
- 給予這兩個文件,可讀可寫可執(zhí)行的權(quán)限,
chmod +x apktool.jar,chmod +x apktool - 將兩個文件(apktool.jar&apktool)移動到/usr/local/bin(需要root)
sudo mv apktool.jar&apktool /usr/local/bin/ - 然后
apktool -v,出現(xiàn)如下信息代表成功了
~ apktool -v
Apktool v2.3.4 - a tool for reengineering Android apk files
with smali v2.2.2 and baksmali v2.2.2
Copyright 2014 Ryszard Wi?niewski <brut.alll@gmail.com>
Updated by Connor Tumbleson <connor.tumbleson@gmail.com>
二、dex2jar
- 解壓,
tree看一下大致目錄結(jié)構(gòu) - 給予這兩個文件,可讀可寫可執(zhí)行的權(quán)限,
chmod +x d2j-dex2jar.sh,chmod +x d2j_invoke.sh
.
├── d2j-baksmali.bat
...(省略)
├── d2j_invoke.sh
└── lib
├── antlr-runtime-3.5.jar
├── asm-debug-all-4.1.jar
├── d2j-base-cmd-2.0.jar
├── d2j-jasmin-2.0.jar
├── d2j-smali-2.0.jar
├── dex-ir-2.0.jar
├── dex-reader-2.0.jar
├── dex-reader-api-2.0.jar
├── dex-tools-2.0.jar
├── dex-translator-2.0.jar
├── dex-writer-2.0.jar
└── dx-1.7.jar
1 directory, 32 files
三、jd-gui
- 下載后解壓即可
- 如果是最新的Mac OS系統(tǒng),可能會出現(xiàn)打不開的情況,是因為java版本問題,
java -version查看當前版本,我電腦上java version "9.0.4" - 最新的Mac OS系統(tǒng),主要原因是使用的是jdk 1.9 ,而jd-gui使用的是jdk 1.8。所以我們需要安裝在mac上安裝java8,按照網(wǎng)上安裝java教程,不用更多設(shè)置java8路徑等等
- 右鍵jd-gui.app,顯示包內(nèi)容,用你常用的文本編輯器打開
Info.plist文件,修改<key>JVMVersion</key> <string>1.7+</string>這一行<key>JVMVersion</key> <string>1.8</string>,保存后退出 - 基本所有的安裝就結(jié)束了
反編譯開始
-
apktool d -s ./xx.apk,執(zhí)行成功后,會在當前目錄下生成一個 xx文件夾,點擊去就看到相關(guān)apk的資源文件了,拿到其中的classes.dex。 -
sh dex2jar.sh classes.dex,執(zhí)行成功后會生成一個classes_dex2jar.jar文件 - 打開jd-gui,把上面的java包拖進去,然后再就可以導(dǎo)出java源代碼了