如何反編譯apk檔案得到原始碼和XML檔案?

相信很多開發者都知道反編譯APK,正常情況下,如果我們想要看看xml,看看java原始碼,是看不了的。用壓縮工具解壓apk得到的檔案也都是二進位制檔案,開啟後全是亂碼。

開發者能夠用的也僅僅是圖片資源,這往往也滿足不了開發者的需求。

下面我就給大家詳細講解一下Android-apk的反編譯步驟:

注意:反編譯的前提是:開發者沒有使用proguard(java程式碼混淆的工具)。

1.下載反編譯工具

需要下載四個工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot

dex2jar:將apk中的classes.dex轉化成Jar檔案。

JD-GUI:反編譯工具,可以直接檢視Jar包的原始碼。

apktool:反編譯工具,通過反編譯APK中XML檔案,直接可以檢視。

apktool-install-windows-r05-ibot:輔助windows批處理工具。

下載地址:

dex2jar:http://code.google.com/p/dex2jar/downloads/list

JD-GUI:http://code.google.com/p/innlab/downloads/lis

apktool:

工具截圖:

2.解壓縮APK包

apk檔案也是一種常見的zip,常用的壓縮軟體就可輕鬆地解壓apk檔案。用壓縮軟體將apk檔案中的檔案解壓到一個資料夾中,得到APK中的資源包括XML檔案和classes.dex檔案,classes.dex就是java檔案編譯再通過dx工具打包而成的。

解壓截圖:

3.反編譯dex檔案

解壓apk檔案後,你會發現res目錄的圖片沒有加密,但java原始碼編譯成了一個classes.dex檔案,無法用普通的反編譯class檔案的方法來處理,dex2jar可以將dex檔案轉換成普通的jar包。

解壓下載的dex2jar,把解壓後的資料夾放到系統盤跟目錄中並把這個目錄加到系統path變數中,就可以直接用:dex2jar.bat或dex2jar.sh轉換dex檔案了。

DOS行命令如下:dex2jar.bat xx\classes.dex(xx是classes.dex檔案所在的路徑)。

將在同目錄得到普通jar包:classes_dex2jar.jar,就可以用處理普通jar包的方法來反編譯這個jar包得到原檔案。

編譯截圖:

生成jar檔案的截圖如下:

4.反編譯jar包

得到jar包後,下載自已喜歡的反編譯工具,推薦使用JD-GUI,有比較簡單的圖形介面,可以反編譯單個class檔案,也可以反編譯jar包,比較方便。

開啟壓縮檔案JD-GUI,執行jd-gui.exe,開啟上面生成的jar包,即可看到原始碼了。

截圖如下:

5.反編譯xml檔案

開啟解壓的res\layout目錄,有很多xml檔案,如果你想看下作者是如何設計介面的,你會很失望,因為你看到的是一大堆亂碼!這個時候我們需要用到的是apktool。

具體操作方法:將下載的apktool和apktool-install-windows-r05-ibot兩個包解壓到同一個資料夾下,這個資料夾有三個檔案:aapt.exe,apktool.bat,apktool.jar。把這個資料夾也放到系統盤的根目錄中並把這個目錄加到path變數中。以HelloWord.apk為例:

在DOS命令列中輸入:apktool d xx\HelloWord.apk HelloWord得到HelloWord資料夾,此資料夾中的xml檔案就是編譯好的可以正常檢視的檔案。

截圖如下:

生成的檔案:

這樣就得到了可以得到編譯的原始碼和XML資源。

注意:檔案的路徑中最好不要出現中文!

檔案, 原始碼, 反編譯,
相關問題答案