標籤:
下面的方法我已經嘗試過,完全可以成功,重點的步驟我在這裡說一下
1.必須要有java環境,記得配置好環境變數
2.如果只查看class中的函數檔案,只需要下載dex2jar和jd-gui
3.
dex2jar:http://code.google.com/p/dex2jar/downloads/list
jd-gui:http://dl.iteye.com/topics/download/b99d0351-87d8-3ed1-a875-441e0eea0ce4
相信很多開發人員都知道反編譯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:http://code.google.com/p/android-apktool/downloads/list
工具:
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資源。
注意:檔案的路徑中最好不要出現中文!
(轉載)反編譯android的apk檔案步驟