Android-apk反編譯方法

下面主要說明一下反編譯一個apk的步驟(Mac上操作):

準備工具:
1.dex2jar:
https://github.com/pxb1988/dex2jar
2.jdgui:
http://jd.benow.ca/
3.android-apktool:
https://ibotpeaches.github.io/Apktool/

一、查看源代碼。

將準備反編譯的apk的後綴由.apk改爲.zip。然後解壓這個zip文件,結構如圖:


4115762-0af11c70e63d5833.png
image

將裏面的classes.dex拷貝到dex2jar的解壓目錄下,打開Terminal並進入到dex2jar的解壓目錄下,在Terminal中輸入命令./d2j-dex2jar.sh classes.dex,按下回車後,該目錄下會產生一個classes-dex2jar文件。

4115762-4992308d7af06fea.png
image

這個jar文件可以用jd-jui打開:


4115762-d70b09409f5536e7.png
image

在jd-jui的解壓目錄下,打開客戶端選擇classes-dex2jar文件打開,即可查看程序源代碼部分。可以選擇將其保存在本地。

二、查看資源文件。

下載來的apktool是一個jar文件,先將其改名爲apktool.jar,爲了方便將apktool.jar和需要反編譯的apk文件放在同一目錄下。
打開Terminal,(需要Java環境)輸入命令: java -jar apktool.jar d 應用文件名.apk
按下回車執行後會產生一個和apk同名的文件夾,文件夾裏包含了該程序的資源和xml文件。


4115762-b64fbf0e48d5df6b.png
image

將源代碼和資源文件合起來分析就好了。因爲現在的應用程序大都採取了代碼混淆處理,所以這種情況下使用這種方法不能看到清晰的源碼,只能看到一些代碼結構。反編譯給我們提供了一個很好的學習渠道,可以通過反編譯學習好的程序編寫方法,代碼結構。且用且珍惜!