前情提要
今天上班的時(shí)候,我的一位專于web安全的網(wǎng)友聯(lián)系我,讓我?guī)兔Ψ治鲆豢頰pp的架構(gòu)和運(yùn)行方式。雖然之前沒有弄過這一塊,但是出于好奇,也希望在安卓相關(guān)方面多接觸點(diǎn)陌生的東西,我欣然地接受了。分析一款app,首先需要拿到源碼,而拿到源碼的第一步就是反編譯,本篇文章我們來講解反編譯的工具的使用,因本人使用的是Mac電腦,所以本片文章基于Mac平臺(tái)。
下載反編譯工具
反編譯用到的相關(guān)工具主要有三個(gè),分別為:
- dex2jar
- jd-gui
- AndroidCrackTool
三者的作用分別是:
- 將dex文件轉(zhuǎn)為jar文件
- 查看jar包里的源碼
- 字節(jié)碼轉(zhuǎn)源碼
反編譯工具已上傳csdn,點(diǎn)擊這里跳轉(zhuǎn)下載頁面。
使用反編譯工具
反編譯工具的使用操作步驟如下:
得到dex文件
使用解壓工具將apk安裝包解壓縮,在解壓后的文件根目錄下得到以classes.dex命名的dex文件。dex文件轉(zhuǎn)jar文件
下載好反編譯工具并解壓后得到命名為dex2jar-0.0.9.15的文件夾,將classes.dex文件拷貝至該文件夾下,打開終端,執(zhí)行命令:
cd dex2jar-0.0.9.15文件路徑
shdex2jar.shclasses.dex
待命令行如下圖所示,表示文件轉(zhuǎn)換成功:

轉(zhuǎn)換成功后,可在dex2jar目錄下找到classes-dex2jar.jar文件。
- 查看源碼
安裝jd-gui軟件,并在該軟件中打開classes-dex2jar.jar文件,可以看到工程包下的源碼:
圖片截自jd-gui
因apk的代碼經(jīng)過混淆,所以我們查看到的類名多為abcd等形式,盡管如此,我們依然可以通過源碼中的細(xì)節(jié)去推敲類的作用。
查看manifest.xml配置文件
若我們查看混淆后的源碼有些吃力,查看manifest文件可以幫助我們分析,里面包含了所有的activity、權(quán)限、服務(wù)等信息。但是查看直接解壓后的manifest文件,我們可以看到里面只有十六進(jìn)制的字節(jié)碼,這時(shí)候我們需要用到AndroidCrackTool工具。

點(diǎn)擊瀏覽選擇需要反編譯的apk文件,點(diǎn)擊打開選擇crack后的文件路徑,點(diǎn)擊執(zhí)行,待控制臺(tái)窗口顯示如上圖,則說明crack結(jié)束。打開crack后的文件夾,打開其中的manifest.xml,即可查看apk的配置文件。
本人對反編譯的掌握尚處于認(rèn)識(shí)的程度,若有過來人對于如何分析源碼有好的建議,歡迎在文章下方評論交流!
