天天看點

Android APK反編譯檢視源碼及資源檔案

Android APK實際就是個Zip檔案,可以解壓縮後反編譯檢視源代碼和資源檔案。以下以微信為例:

我們可以右擊APK檔案,”打開方式”選擇Winrar壓縮檔案管理器,截圖如下:

Android APK反編譯檢視源碼及資源檔案

是不是跟程式的目錄結構很像,源碼已經被壓縮在了classes.dex檔案中。這裡我們可以直接檢視res下面的圖檔檔案,但對于源代碼無法檢視,AndroidManifest.xml清單等xml檔案打開也是亂碼。

1、 檢視源碼

(1) 修改待反編譯檔案字尾.apk為.zip後用winrar解壓,記錄classes.dex的路徑。

1

dex2jar classes.dex的路徑

如下:

Android APK反編譯檢視源碼及資源檔案
Android APK反編譯檢視源碼及資源檔案

從中我們可以大緻了解代碼結構,雖然源碼經過proguard混淆後可讀性很差,但還是可以通過關鍵字(不可混淆的類名等)查找擷取到一定的資訊。不過jd-gui無法通過源碼查找,隻支援查找類型、構造函數、常量、屬性、方法。

2、檢視資源檔案和xml檔案

apktool.bat d -f xxx.apk xxx

其中d表示解包,xxx.apk為待反編譯apk路徑,xxx為目标檔案夾名,(apktool不支援中文目錄),如下:

Android APK反編譯檢視源碼及資源檔案

結果會再apktool.bat所在目錄下生成weixin檔案夾,現在就可以正确的檢視xml資源(包括res下的所有資源,如點9圖檔、drawable、layout、value、menu等等)了,比如AndroidManifest.xml

Android APK反編譯檢視源碼及資源檔案

3、修改後重新打包成APK

依然使用步驟2中的apktool,指令如下

apktool.bat b xxx

其中b表示build,xxx表示步驟2中解包出來的檔案夾,我們可以對某一檔案進行修改,重新打包

Android APK反編譯檢視源碼及資源檔案

打包完成後會在xxx目錄下生成build和dist兩個檔案夾,dist存放重新生成的APK,build存放該APK的具體組成資訊。

繼續閱讀