需要用到的工具
查看 apktool 版本
❯ apktool --version
Mac 安裝 dex2jar
❯ brew install dex2jar
第一步 Apktool 反編譯 APK 文件
❯ apktool d xxx.apk
從 apktool 中可以查看 apk 的一些源碼文件,通過這種方式反編譯的只能看 smali 源碼。
第二步 dex2jar 將 dex 反編譯為 jar
將 apk 文件後綴變為 zip 壓縮包後綴。
解壓 zip 文件得到 dex 後綴的文件,然後通過 dex2jar 將 dex 文件轉成 jar 文件。
❯ d2j-dex2jar classes.dex
或者直接下載dex2jar,然後執行
sh d2j-dex2jar.sh classes.dex
如果編譯失敗,顯示版本問題,需要修改 dex 文件頭的版本。
dex 文件頭中的 magic 字段是一個 8 個字節的固定字符數組,表示 dex 文件的類型和版本。以下是不同版本的 dex 文件頭中的 magic 字段內容:
・Android 1.0 版本和 1.1 版本:dex 035
・Android 1.5 版本:dex 035
・Android 1.6 版本:dex 036
・Android 2.0 到 2.3.7 版本:dex 035
・Android 3.0 到 3.2.6 版本:dex 036
・Android 4.0 到 4.0.4 版本:dex 035
・Android 4.1 到 4.4.4 版本:dex 036
・Android 5.0 到 6.0.1 版本:dex 037
・Android 7.0 到 7.1.2 版本:dex 038
・Android 8.0 及以上版本:dex 039
得到 jar 文件後,便可通過 jd-gui 查看 jar 代碼
第三步 JD-GUI 查看 jar 代碼