主要目的
反編譯APK的目的主要是用于學習,查看代碼,了解思路,也可以用于了解自己的應用缺陷。
工具
反編譯工具 apktool,dex2jar,jd-gui,Jadx,ClassyShark,反編譯工具比較多,目前只介紹這幾款工具,一般是前面三款工具配合使用,網上很多工具其實就是對這三款工具進行的一個包裝。
先介紹apktool,dex2jar,jd-gui這三款工具,也是我最開始接觸的反編譯工具,流傳也是最靠譜的。
注意:以下所有工具幾乎都需要JDK支持
apktool
反編譯apk,輸出資源文件和源碼的smali文件,可以查看和提取布局、圖片文件及。
命令行(注意路徑)
apktool d xxx.apk
用法就這么簡單,在當前目錄下會生成xxx(apk文件名)目錄,里面可以查看和提取資源文件及smali文件。
指定目錄命令行(注意路徑)
apktool d xxx.apk -o /xxx/xxx
幫助命令行(注意路徑)
apktool help
dex2jar

將dex或apk文件轉換為jar文件,工具名稱已經非常明白了。
dex文件的獲取方式(Mac)
第一種 修改后綴名為zip,雙擊文件解壓Apk就可以獲取 xxx.dex文件
第二種 命令行unzip xxx.apk -d ./xxx
解壓Apk獲取xxx.dex文件
命令行(注意路徑)
sh dex2jar.sh xxx.dex
在當前目錄下會生成xxx_dex2jar.jar文件,然后再用jd-gui工具游覽jar文件。
上面是我以前的做法,寫這篇博客的時候學習了新方法,在新版本的dex2jar已經支持apk了,所以可以省略獲取dex文件的步驟。
命令行(注意路徑)
sh dex2jar.sh xxx.apk
jd-gui(Java Decompiler)
jd-gui是以單獨的程序的方式運行的反編譯工具,用于瀏覽jar文件中的class文件。使用方式比較簡單,不做過多的介紹,雙擊運行,打開jar文件就可以游覽了。
Jadx
這個工具集合了前面3款工具的功能,支持apk、dex、jar、class、zip格式文件。
使用步驟(Mac)
- 下載jadx
- 解壓文件
- 命令行
cd /xxx/xxx/jadx-0.6.0/bin
(注意路徑) - 命令行
sh jadx-gui
使用步驟(Windows)
在第三步直接進入解壓的目錄jadx-0.6.0/bin下運行jadx-gui.bat即可。
ClassyShark
具體介紹見