GJoy Dex Analysizer是一款A(yù)ndroid反編譯軟件,這款軟件支持apk、dex、odex、oat等類(lèi)型的Android文件的反編譯工作。這款軟件提供了強(qiáng)大的靜態(tài)分析功能,新版本已經(jīng)支持apk多dex分析,由于是全部用C++寫(xiě)的,分析apk速度沒(méi)的說(shuō),修改apk的能力還是有點(diǎn)弱。
軟件介紹:
在Android可執(zhí)行文件反編譯分析上,GDA擺脫了使用java速度慢的問(wèn)題,完全采用C++完成核心解析功能,并且使用了字節(jié)碼直接轉(zhuǎn)java偽代碼的解析方式,無(wú)需轉(zhuǎn)換成smali匯編后在做反編譯,大大提升了解析速度。
此外,該工具還提供了很多實(shí)用工具,如查殼功能、odex轉(zhuǎn)dex、oat轉(zhuǎn)dex、xml二進(jìn)制解析器、算法工具、android設(shè)備內(nèi)存dump等等功能,在交互式分析上,提供了字符串、方法、類(lèi)和域交叉引用查詢(xún)、調(diào)用者查詢(xún)、搜索功能、注釋功能、分析結(jié)果保存等等功能。
新版介紹:
GDA3中重寫(xiě)了所有反編譯器代碼,從反匯編、數(shù)據(jù)流分析、中間語(yǔ)言?xún)?yōu)化、結(jié)構(gòu)化分析等都做了重大改變,同時(shí)極大的優(yōu)化DEX解析引擎、惡意行為檢測(cè)引擎、查殼引擎,相比GDA1、GDA2,在分析速度、穩(wěn)定性、使用體驗(yàn)方面都有極大的改善和提升。
使用幫助:
一、主界面說(shuō)明
打開(kāi)GDA并且將你所要分析apk文件拖拽到軟件界面上:
1.查看所有字符串;2.查看所有使用過(guò)的字符串;3查看所有API;4.查看AndroidManifest文件;5.十六進(jìn)制瀏覽數(shù)據(jù);6.可疑(惡意行為分析);7.漏洞靜態(tài)掃描(尚待實(shí)現(xiàn));8.展開(kāi)權(quán)限并查看權(quán)限所屬模塊(方法);9.類(lèi)及方法,如果出現(xiàn)多個(gè)DexClass*表示apk采用mulitdex技術(shù)。10、Dex頭,沒(méi)點(diǎn)擊DexClass可展示相應(yīng)的頭,每個(gè)色塊代表頭部不同的區(qū)域,鼠標(biāo)移動(dòng)在其上面可以看到提示,每個(gè)偏移可右鍵跳轉(zhuǎn)到偏移所在的數(shù)據(jù)區(qū)。11、申請(qǐng)的權(quán)限概覽;12、搜索/訪(fǎng)問(wèn)記錄,雙擊可查看歷史訪(fǎng)問(wèn);13、點(diǎn)擊進(jìn)入入口函數(shù)(method);14、連接android設(shè)備進(jìn)行內(nèi)存dump。
如果APP被加固處理,GDA會(huì)對(duì)加固進(jìn)行自動(dòng)識(shí)別,顯示在Dex頭和APK權(quán)限之間,如果沒(méi)有被加固,則不顯示。如圖:
點(diǎn)擊Entry按鈕可以進(jìn)入到APK的入口函數(shù):
在java代碼區(qū),可以按F5查看smali匯編代碼。
雙擊一個(gè)方法可以進(jìn)入該方法,查看其代碼,X交叉引用查看調(diào)用者。
二、快捷鍵說(shuō)明
三、輔助工具
1.二進(jìn)制XML解碼
完全自主實(shí)現(xiàn)的解碼,可繞過(guò)反解碼技術(shù),成功解析XML。
2.算法工具
實(shí)現(xiàn)加密解密功能,實(shí)現(xiàn)了如下算法:
Hash算法: md2 md4 md5 sha sha1 sha224 sha256 sha384 sha512
對(duì)稱(chēng)加密:des idea rc2 rc4 rc4-40 rc2-40 rc2-64 bf cast5 aes(128 192 256)及其相應(yīng)的模式如ecb cbc ofb cfb,其他模式如(cfb1 cfb8)
非對(duì)稱(chēng)加密:RSA
編碼算法:base62, base64
3.進(jìn)程模塊dump工具
具體使用參考如下鏈接:
https://zhuanlan.zhihu.com/p/26341224
4.搜索工具(S)
四、Android病毒靜態(tài)分析實(shí)例
本節(jié)通過(guò)一個(gè)病毒樣本文件來(lái)介紹GDA的基本使用方法。
A.概要分析
主要從整體上對(duì)APK做一個(gè)簡(jiǎn)單的了解和掌握,以下以一款A(yù)ndroid病毒為例來(lái)介紹GDA的使用。
1.首先,可以直接將樣本拖入GDA,非?斓奈覀兡軌蚩吹椒治鲋鹘缑。我們根據(jù)主界面判斷其是否有加固,如果有加固主界面會(huì)顯示,如果沒(méi)有顯示代表沒(méi)有加固。
2.然后可以檢查看看該病毒開(kāi)啟了那些敏感權(quán)限,從主界面底部可以看到,該病毒開(kāi)啟了不少敏感權(quán)限。
3.我們還可以通過(guò)點(diǎn)擊如下紅色標(biāo)記的工具欄按鈕看到該APK的簽名信息。
4.可以通過(guò)樹(shù)形控件中AndroidManifest來(lái)分析該病毒所使用的Activity,Service,receive等信息。
5.接下來(lái)還可以通過(guò)樹(shù)形框中的MalScan來(lái)了解該病毒大致的惡意行為。
可以看出該病毒具有很多惡意的操作。行為描述下面的是產(chǎn)生該種類(lèi)型的惡意行為的實(shí)現(xiàn)方法。雙擊method@可以進(jìn)入該方法中查看,比如點(diǎn)擊進(jìn)入第二” #讀取聯(lián)系人、短信等信息:”的[method@0001e5]: com.itcast.cn112.m.a
看smali比較費(fèi)勁,按F5可以查看反編譯的代碼。如圖
可以看出,這個(gè)方法中實(shí)現(xiàn)了短信箱的讀取,具體方法的分析后面介紹。
6.此外概要分析時(shí),還可以通過(guò)查看該APK所使用的字符串和API來(lái)做分析。其中AllStrings會(huì)獲取該APK所有的字符串,而AppStrings只會(huì)獲取APK有效類(lèi)會(huì)用到的字符串,相對(duì)來(lái)說(shuō)AppStrings是更有用的字符串。其中string@區(qū)域同樣支持交叉引用(X),編輯(右鍵菜單),雙擊操作。
AllAPI的method@區(qū)域支持交叉引用的功能