
【基本介紹】
GJoy Dex Analysizer(GDA),GDA是一款強(qiáng)大而輕便的交互式反編譯器,也是一款綜合性逆向分析利器,本軟件具有分析速度快、體積小、內(nèi)存占用少等優(yōu)點(diǎn)。軟件無(wú)需安裝java環(huán)境和android環(huán)境就可以使用,支持分析apk,dex,odex,oat類(lèi)型文件,支持python腳本以及方法簽名制作與識(shí)別。工具包含三個(gè)由作者獨(dú)立完成的高速解析引擎: 反編譯引擎、apk殼檢測(cè)引擎、惡意行為檢測(cè)引擎, 再加上作者獨(dú)創(chuàng)的使用了字節(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)、 強(qiáng)大的搜索功能、注釋功能、分析結(jié)果保存等等,一定會(huì)帶給你不一樣的分析體驗(yàn)。
【軟件特點(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)方面都有極大的改善和提升。
【軟件特色】
-獨(dú)立于java和android sdk,無(wú)需安裝java和android sdk即可使用-可以解析加過(guò)殼的Dex,并且可以有效繞過(guò)各種字節(jié)碼陷阱、類(lèi)型混淆以及anti-disassembling和anti-decompiling技術(shù)
-完全使用c++編寫(xiě),快速解析dex、apk和OAT,odex轉(zhuǎn)dex,OAT轉(zhuǎn)DEX
-直接修改DEX文件的smali指令,無(wú)需反編譯
-可修改DEX文件中的字符串(支持中文)
-改進(jìn)優(yōu)化的xml解析器(可解析加殼處理過(guò)xml),支持過(guò)濾顯示功能
-快速dump設(shè)備內(nèi)存,另外提供有內(nèi)存模塊過(guò)濾功能
-針對(duì)字符串、方法、類(lèi)、域等關(guān)鍵信息提供了強(qiáng)大的搜索、交叉引用
-提供了基于包過(guò)濾的引用字符串查看
-友好的smali分析界面及java偽代碼分析界面(F5)
-偽代碼(字符串、函數(shù))可進(jìn)行交叉引用(X)以及雙擊進(jìn)入被調(diào)用者函數(shù)等
-強(qiáng)大快速的惡意行為掃描功能以及ANDROID系統(tǒng)API查看,讓你一眼看出APK的真實(shí)面目,極大方便了惡意代碼分析

【軟件功能】
APK/DEX/ODEX 文件解析,二進(jìn)制 xml 解析(能夠正確解析加固版的 xml 二進(jìn)制文件)ODEX 文件中提取 DEX 文件
直接對(duì) DEX 的指令進(jìn)行編輯修改(方便破解,不用反編譯),單指令反匯編,Smali 操作碼編譯成字節(jié)碼
對(duì)方法,類(lèi),字符串等進(jìn)行快速搜索
支持方法,類(lèi),字符串等的交叉引用
方法訪(fǎng)問(wèn)回滾,方法跳轉(zhuǎn)
簡(jiǎn)單的命令支持
連接 Android 設(shè)備,對(duì)指定進(jìn)程的內(nèi)存進(jìn)行dump
十六進(jìn)制顯示非方法區(qū)域
命令行 Shell
【界面介紹】
打開(kāi)GDA并且將你所要分析apk文件拖拽到軟件界面上:
如果APP被加固處理,GDA會(huì)對(duì)加固進(jìn)行自動(dòng)識(shí)別,顯示在Dex頭和APK權(quán)限之間,如圖

點(diǎn)擊OPTLoad可以進(jìn)入到APK的入口函數(shù):

在匯編代碼區(qū),可以按F5反編譯當(dāng)前方法。

雙擊進(jìn)入被調(diào)用函數(shù),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工具

4.搜索工具(S)

【使用教程】
GJoy Dex Analysizer破解步驟Step 1 :打開(kāi) dex,可勾選 optload 進(jìn)行自動(dòng)定位到入口 activity ,只有AndroidManifest.xml 中描述的 package 與 dex 中的 package 相同才能湊效(如果選中后打開(kāi) dex 文件,只解析 com 包的類(lèi),解析完成后如果 classes.dex 目錄下存在 AndroidManifest.xml ,會(huì)自動(dòng)解析此文件,并且定位到其中指定的第一個(gè)執(zhí)行的 activity. 如果打開(kāi)之后點(diǎn)擊,則會(huì)直接定位到主 activity )
Step 2 : s 查找字符串,找到關(guān)鍵點(diǎn)
Step 3 :m 修改跳轉(zhuǎn)指令,光標(biāo)移動(dòng)要修改的指令處 M,顯示如下:

·向偏移框中填入偏移地址可用反匯編地址處的指令,修改后 enter
·指令框中可用直接修改指令,修改后 enter
·smali 框可修改操作碼,如 if-ltz 改為if-nez,修改后 enter
Step 4 :open->save modify 保存修改,如果打開(kāi)的是 apk,則選 save dex as
Step 5 :dex 拖入 apk 壓縮包中,簽名即可
GJoy Dex Analysizer脫殼步驟
該部分功能還在完善,目前比較弱,需要 ROOT 權(quán)限才能 dump,以后會(huì)引入注入模塊來(lái)實(shí)現(xiàn)更加強(qiáng)大的功能
Step 1 :打開(kāi) dump 窗口(點(diǎn)擊按鈕 dump,或者菜單 tools->open device )
Step 2 :等待窗口連接設(shè)備,直到顯示出所有進(jìn)程(有時(shí)較慢,需耐心等待)
Step 3 :雙擊所選進(jìn)程行,或者右鍵打開(kāi)進(jìn)程,等待顯示所有進(jìn)程模塊
Step 4 :?jiǎn)螕粢?dump 的模塊,或者選中多行右鍵菜單 dump 即可 dump 出此模塊,dump 的文件存放在 {GDA當(dāng)前目錄}/dum/{進(jìn)程名}/{模塊名}
Step 5 :打開(kāi) dump 出的 odex 或者 dex,如果是 odex 可以在菜單 open->save as dex 將 odex 轉(zhuǎn)化為 dex
Step 6 :如果需要修復(fù)dex,只能依靠自己的技能
Step 7 :打開(kāi) dex 并加以分析
【常用快捷鍵】
快捷鍵X 交叉引用,定位調(diào)用者(支持字符串,類(lèi),方法,域,實(shí)用于smali和java)
Esc/<-/Backspace 退回到上一次訪(fǎng)問(wèn)的方法或者類(lèi)
-> 下一個(gè)訪(fǎng)問(wèn)的方法或者類(lèi)
G 跳轉(zhuǎn)到指定偏移地址的方法
N 光標(biāo)放在變量/方法/類(lèi)上,可以修改相關(guān)名稱(chēng)
S 全局搜索
C 添加注釋?zhuān)瑑H支持java窗口
鼠標(biāo)雙擊 光標(biāo)置于方法處,雙擊可以進(jìn)入查看方法或者其他數(shù)據(jù)。
M 光標(biāo)置于指令行時(shí)編輯指令,僅支持smali窗口
UP 把焦點(diǎn)放在左邊樹(shù)形控件上,按下up鍵可以訪(fǎng)問(wèn)基于內(nèi)存的上一個(gè)方法
Down 把焦點(diǎn)放在左邊樹(shù)形控件上,訪(fǎng)問(wèn)基于內(nèi)存的下一個(gè)方法
D Dump方法的二進(jìn)制數(shù)據(jù),僅支持smali窗口
Enter 對(duì)所有編輯框的輸入修改生效
H 16進(jìn)制顯示窗口
Ctr+A 全選
Ctr+C 拷貝
Ctr+V 粘貼僅適用可剪切的控件)
Ctr+X 剪切(僅適用可剪切的控件)
Ctr+F 查找當(dāng)前窗口的字符串
Ctr+S 保持當(dāng)前修改生成GDA數(shù)據(jù)庫(kù)文件,如方法名,類(lèi)名,指令修改、注

【更新日志】
1.添加URLs字符串功能,DexClass右鍵->UrlStrings2.為了支持后續(xù)污點(diǎn)傳播分析以及模擬執(zhí)行支持,重構(gòu)了數(shù)據(jù)流分析部分,以方便后續(xù)功能擴(kuò)展。
3.為了方便使用python的庫(kù)進(jìn)行自動(dòng)化分析,添加了對(duì)python腳本的支持,需要安裝32位的python2.7。
4.改善了反編譯效果,對(duì)于方法中存在非結(jié)構(gòu)化控制流圖時(shí),我采取return歸約的方法降低jmp語(yǔ)句出現(xiàn)的概率,此外還修復(fù)了多處比較少見(jiàn)的bug。
5.對(duì)于空方法自動(dòng)命名為Null_*
6.對(duì)get和set方法進(jìn)行自動(dòng)識(shí)別
7.添加了字節(jié)碼簽名功能,方便后續(xù)進(jìn)行惡意代碼特征庫(kù)的構(gòu)建,同時(shí)可以用于反混淆,以及庫(kù)函數(shù)的識(shí)別。
8.添加了中文和英文動(dòng)態(tài)切換的功能,默認(rèn)為英文界面,菜單view->chinese
9.添加了get和set方法自動(dòng)命名功能。
10.進(jìn)一步加強(qiáng)了反編譯器的穩(wěn)定性和容錯(cuò)能力
11.修復(fù)了符合條件下,反編譯會(huì)出現(xiàn)條件反轉(zhuǎn)的問(wèn)題。
12.分析MultiDex時(shí),修復(fù)了在跨Dex交叉引用過(guò)程中,部分特殊方法無(wú)法交叉引用到的問(wèn)題。
13.修復(fù)了快速頻繁按下小盤(pán)的上下箭頭鍵時(shí)的崩潰問(wèn)題。
14.添加更多的加固和打包器特征,可識(shí)別國(guó)外主流加固或者打包廠商,識(shí)別標(biāo)識(shí)里添加了加固鏈接。
15.重新優(yōu)化了分析引擎,為后續(xù)的批量apk分析提供支持。




































