Android apk 反編譯

通過反編譯第三方apk,學習和借鑑他人代碼是學習Android的一個重要途徑之一。下面是我對反編譯的筆

記整理。

測試環境:windows。

使用工具:apktool(資源文件獲取,可以提取出圖片和佈局文件)

                    dex2jar(源碼文件獲取,將class.dex轉換成jd-gui可查看閱讀的.jar文件)

                    jd-gui   (源碼查看,查看class.dex轉化成.jar文件)

整合包下載:反編譯工具整合包

   

反編譯流程:

一,反編譯得到res目錄下的圖片資源和xml文件、AndroidManifest.xml等

1、下載上面的整合包解壓得到:apktool.rar,dex2jar-0.0.9.15.zip,jd-gui-0.3.5.windows.zip。將它們

分別解壓到各自文件名的目錄下。

2、apptool.jar解壓後其目錄三個文件:aapt.exe,apktool.bat,apktool.jar。將需要解壓的apk拷貝到其

目錄下,打開命令窗口,定位到 .\apktool 目錄下執行命令:apktool.bat d -f mapp-debug.apk -o mapp

(命令中mapp-debug.apk 爲要反編譯的apk,mapp爲輸出文件夾,即:apktool.bat d -f [apk] -o [輸出文件夾])

效果如圖所示:



執行完成後查看mapp文件夾:就會發現有res文件夾,裏面有我們需要的佈局,圖片,動畫等。


二反編譯得到Java的源碼病查看源碼

1、將mapp-debug.apk的後綴名.apk 改成.rar或.zip。然後解壓到map-debug文件夾,得到我們所需的

classes.dex文件。

2、將classes.dex拷貝到 \dex2jar-0.0.9.15目錄下,執行命令:dex2jar.bat   classes.dex。在其目錄下

會生成文件classes_dex2jar.jar。

3、使用jd-gui.exe取查閱classes_dex2jar.jar。


輸入dex2jar.bat   classes.dex效果如下:


使用jd-gui.exe查看源碼效果圖:



三,反編譯過程種曾經遇到過的異常:

1、Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file...

這個問題的原因是apktool版本過低,過去最新的apktool.jar替換原來的。最新apktool.jar下載

2、Input file was not found or was not readable

apktool升級到2.0以上時,使用方式已經替換,格式爲:apktool.bat d -f [apk] -o [輸出文件夾]

具體參數意義可輸入apktool回車。


發佈了98 篇原創文章 · 獲贊 12 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章