需要安裝的工具如下:apktool、dex2jar、jd-gui
Apk介紹
一個Android應(yīng)用程序的代碼想要在Android設(shè)備上運行,必須先進行編譯,然后被打包成為一個被Android系統(tǒng)所能識別的文件才可以被運行,而這種能被Android系統(tǒng)識別并運行的文件格式便是“APK”。
一個APK文件內(nèi)包含被編譯的代碼文件(.dex 文件),文件資源(resources), assets,證書(certificates),和清單文件(manifest file)。
APK 文件基于 ZIP 文件格式,它與 JAR 文件的構(gòu)造方式相似。它的互聯(lián)網(wǎng)媒體類型是:application/vnd.android.package-archive
工具介紹
-
apktool
apktool 是 Google 提供的 Apk 編譯工具,能夠編譯和反編譯 apk。
-
dex2jar
dex2jar 是一個能將 .dex 文件轉(zhuǎn)化成 .jar 文件的工具集
-
jd-gui
jd-gui 是一個獨立的圖形實用程序,可顯示“.class”文件的Java源代碼應(yīng)用。
安裝
如果嫌棄一個個官網(wǎng)下麻煩的可以直接使用下面的地址
Apktool 的版本為 2.3.3
dex2jar 的版本為 2.0
jd-gui 的版本為 1.4.0
安裝 apktool
- 檢查 jdk 是否安裝
- Mac OS X 下安裝
- 下載Mac包裝器腳本(右鍵單擊,將鏈接另存為
apktool) - 下載apktool
- 將下載的jar重命名為
apktool.jar - 將兩個文件(
apktool.jar&apktool)移動到/usr/local/bin(需要root) - 確保兩個文件都是可執(zhí)行的(
chmod +x) - 嘗試apktool通過命令提示符運行
- 下載Mac包裝器腳本(右鍵單擊,將鏈接另存為
有了上面的安裝步驟現(xiàn)在我們來安裝吧
-
前往官方的下載地址下載我們需要的兩個文件(apktool,apktool.jar)
- 下載apktool腳本,修改下載的文件名為 apktool 不加任何后綴名。
image- 下載 apktool.jar ,下載下來的文件名會帶有版本信息,將下載的jar重命名為
apktool.jar
-
將兩個文件移動到
/usr/local/bin- 打卡文件管理系統(tǒng)按
command + shift + g鍵,最后將文件保存在 /bin 文件夾下面
image - 打卡文件管理系統(tǒng)按
-
確保兩個文件都是可執(zhí)行的(
chmod +x)-
打開終端,輸入
chmod +x apktool.jar chmod +x apktool
-
-
測試
apktool命令- 在終端中輸入
apktool
image-20180721143947106 - 在終端中輸入
安裝 dex2jar
這個的安裝很簡單只需要把下載的壓縮文件解壓到你想的文件夾中即可。
安裝 jd-gui
也是解壓即可
簡單的例子
下面我們?nèi)フ覀€ apk 文件練練手吧。
Apktool 的使用
打開終端
//切換到 apk 所在的目錄
輸入命令 apktool d demo.apk
它會在當前目錄生成一個跟 apk 文件同名的文件夾。
資源文件是有了,那 java 代碼在哪里呢?apktool 只能提取到資源文件,java 代碼還需要另外處理
dex2jar 使用
我們現(xiàn)在把 apk 當成一個壓縮包解壓開來,里面有個 .dex 文件。dex2jar 能把 .dex 文件轉(zhuǎn)化成 .jar 文件
1. 將 apk 中 .dex 文件移動到我們剛剛解壓 dex2jar 安裝的目錄下
2. 終端輸入 sh d2j-dex2jar.sh classes.dex
這時我們會在目錄中看到有個 .jar 文件。
運行 sh d2j-dex2jar.sh classes.dex 如果出現(xiàn)了 Permission denied
只需要終端中運行
chmod +x d2j_invoke.sh即可
jd-gui 使用
直接打開我們安裝的 JD_GUI.app ,將 .jar 文件拖入應(yīng)用上,我們即可看到 java 代碼了。

到此一個簡單的例子就結(jié)束了


