>[0028]Android應(yīng)用程序所使用的編程語(yǔ)言是Java語(yǔ)言,并運(yùn)行Dalvik VM中。本發(fā)明的一個(gè)實(shí)施例通過(guò)在在Dalvik VM上增加監(jiān)控模塊,對(duì)程序運(yùn)行過(guò)程進(jìn)行監(jiān)控。一個(gè)Android應(yīng)用程序運(yùn)行在相應(yīng)的一個(gè)Dalvik虛擬機(jī)實(shí)例里,一個(gè)虛擬機(jī)實(shí)例是一個(gè)獨(dú)立的進(jìn)程空間,因此為使監(jiān)控模塊對(duì)每個(gè)進(jìn)程進(jìn)行監(jiān)控,本發(fā)明的實(shí)施例將監(jiān)控模塊附加到Zygote進(jìn)程上。
[0029]Zygote進(jìn)程是一個(gè)特殊的虛擬機(jī)進(jìn)程,同時(shí)也是一個(gè)虛擬機(jī)實(shí)例的孵化器,每當(dāng)要執(zhí)行一個(gè)An droid應(yīng)用程序時(shí),Zygote使用fork函數(shù)創(chuàng)建出一個(gè)子進(jìn)程來(lái)執(zhí)行該應(yīng)用程序。Zygote進(jìn)程完成虛擬機(jī)的初始化、庫(kù)的加載、預(yù)置類(lèi)庫(kù)的加載和初始化等操作,當(dāng)需要一個(gè)新的虛擬機(jī)實(shí)例時(shí),Zygote通過(guò)復(fù)制自身,最快速地提供一個(gè)進(jìn)程模版。因此,當(dāng)監(jiān)控模塊加載在Zygote進(jìn)程上時(shí),每一個(gè)新啟動(dòng)的APK程序都會(huì)在進(jìn)程空間上擁有監(jiān)控模塊,由此保證監(jiān)控的可靠性。
[0030]在APK程序執(zhí)行過(guò)程中,解釋器(Interpreter)是Dalvik虛擬機(jī)的執(zhí)行引擎,它負(fù)責(zé)解釋執(zhí)行dex字節(jié)碼(即Android程序源代碼經(jīng)過(guò)編譯后最終產(chǎn)生的可運(yùn)行的編碼)。Dalvik的dex字節(jié)碼中包括常量池(描述所有的常量,包括引用、方法名和數(shù)字常量等,以及類(lèi)定義,包括訪問(wèn)權(quán)限標(biāo)志,類(lèi)名等),數(shù)據(jù)段(包括所有目標(biāo)虛擬機(jī)執(zhí)行的方法代碼以及與類(lèi)和方法相關(guān)的數(shù)據(jù)信息)和類(lèi)實(shí)例變量等內(nèi)容,這些信息使得監(jiān)控模塊能夠細(xì)粒度地監(jiān)控所有信息。在一個(gè)實(shí)施例中,在Dalvik dex字節(jié)碼的解釋執(zhí)行過(guò)程中,利用監(jiān)控模塊,對(duì)命令調(diào)用進(jìn)行策略匹配監(jiān)控。例如,在匹配監(jiān)控過(guò)程中,首先對(duì)應(yīng)用程序進(jìn)行監(jiān)控,然后針對(duì)其具體的class進(jìn)行監(jiān)控分析,接下來(lái)在指令級(jí)別上進(jìn)行過(guò)濾,獲取和密碼算法/協(xié)議使用相關(guān)的指令調(diào)用,最后通過(guò)從監(jiān)控模塊提取運(yùn)行時(shí)數(shù)據(jù)來(lái)分析應(yīng)用(例如分析加密行為)。在一個(gè)示例中,所述運(yùn)行時(shí)數(shù)據(jù)是與密碼算法和/或協(xié)議使用相關(guān)的參數(shù)。
[0031]圖2是根據(jù)本發(fā)明實(shí)施例的測(cè)試Android應(yīng)用程序的裝置的結(jié)構(gòu)示意圖。如圖2所示,測(cè)試Android應(yīng)用程序的裝置包括定位模塊、監(jiān)控模塊、分析模塊。其中,定位模塊用于定位應(yīng)用程序的命令調(diào)用,監(jiān)控模塊用于監(jiān)控所述命令調(diào)用并獲取運(yùn)行時(shí)數(shù)據(jù),分析模塊用于對(duì)獲取的運(yùn)行時(shí)數(shù)據(jù)進(jìn)行分析。在一個(gè)技術(shù)方案中,定位模塊被配置成對(duì)應(yīng)用程序進(jìn)行靜態(tài)代碼反編譯,獲取類(lèi)描述符;根據(jù)類(lèi)描述符,定位方法調(diào)用。在一個(gè)技術(shù)方案中,定位模塊被配置成定位和與密碼算法和/或協(xié)議使用相關(guān)的命令調(diào)用。在一個(gè)技術(shù)方案中,所述監(jiān)控模塊被附加到Dalvik虛擬機(jī)的Zygote進(jìn)程上,由此來(lái)監(jiān)控所述命令調(diào)用并獲取運(yùn)行時(shí)數(shù)據(jù)。在一個(gè)技術(shù)方案中,所述運(yùn)行時(shí)數(shù)據(jù)是與密碼算法和/或協(xié)議使用相關(guān)的參數(shù)。在一個(gè)示例中,定位模塊在應(yīng)用程序的二進(jìn)制代碼中定位其命令調(diào)用。
[0032]通過(guò)以上實(shí)施方式的描述,本領(lǐng)域中的普通技術(shù)人員能夠理解,在不偏離本發(fā)明的精神和范圍的情況下,還可以對(duì)本發(fā)明的【具體實(shí)施方式】作各種變更和替換。這些變更和替換都落在本發(fā)明權(quán)利要求書(shū)所限定的范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種測(cè)試Android應(yīng)用程序的方法,其特征在于,包括以下步驟: A:定位應(yīng)用程序的命令調(diào)用, B:監(jiān)控所述命令調(diào)用并獲取運(yùn)行時(shí)數(shù)據(jù), C:對(duì)獲取的運(yùn)行時(shí)數(shù)據(jù)進(jìn)行分析。
2.如權(quán)利要求1所述的方法,其特征在于,步驟A包括: 對(duì)應(yīng)用程序進(jìn)行靜態(tài)代碼反編譯,獲取類(lèi)描述符; 根據(jù)類(lèi)描述符,定位命令調(diào)用。
3.如權(quán)利要求2所述的方法,其特征在于,步驟A包括: 定位與密碼算法和/或協(xié)議使用相關(guān)的命令調(diào)用。
4.如權(quán)利要求3所述的方法,其特征在于,步驟B包括: 利用被附加到Dalvik虛擬機(jī)的Zygote進(jìn)程上的監(jiān)控模塊來(lái)監(jiān)控所述命令調(diào)用并獲取運(yùn)行時(shí)數(shù)據(jù)。
5.如權(quán)利要求4所述的方法,其特征在于, 所述運(yùn)行時(shí)數(shù)據(jù)是與密碼算法和/或協(xié)議使用相關(guān)的參數(shù)。
6.如權(quán)利要求5所述的方法,其特征在于, 在步驟A中,在應(yīng)用程序的二進(jìn)制代碼中定位其命令調(diào)用。
7.如權(quán)利要求6所述的方法,其特征在于, 所述命令調(diào)用是方法調(diào)用或者指令調(diào)用。
8.一種測(cè)試Android應(yīng)用程序的裝置,其特征在于,包括: 定位模塊,用于定位應(yīng)用程序的命令調(diào)用, 監(jiān)控模塊,用于監(jiān)控所述命令調(diào)用并獲取運(yùn)行時(shí)數(shù)據(jù), 分析模塊,用于對(duì)獲取的運(yùn)行時(shí)數(shù)據(jù)進(jìn)行分析。
9.如權(quán)利要求8所述的裝置,其特征在于,定位模塊被配置成: 對(duì)應(yīng)用程序進(jìn)行靜態(tài)代碼反編譯,獲取類(lèi)描述符; 根據(jù)類(lèi)描述符,定位命令調(diào)用。
10.如權(quán)利要求9所述的裝置,其特征在于,定位模塊被配置成: 定位與密碼算法和/或協(xié)議使用相關(guān)的命令調(diào)用。
11.如權(quán)利要求10所述的裝置,其特征在于, 所述監(jiān)控模塊被附加到Dalvik虛擬機(jī)的Zygote進(jìn)程上,由此來(lái)監(jiān)控所述命令調(diào)用并獲取運(yùn)行時(shí)數(shù)據(jù)。
12.如權(quán)利要求11所述的裝置,其特征在于, 所述運(yùn)行時(shí)數(shù)據(jù)是與密碼算法和/或協(xié)議使用相關(guān)的參數(shù)。
13.如權(quán)利要求12所述的裝置,其特征在于, 所述定位模塊在應(yīng)用程序的二進(jìn)制代碼中定位其命令調(diào)用。
14.如權(quán)利要求13所述的裝置,其特征在于, 所述命令調(diào)用是方法調(diào)用或者指令調(diào)用。
【專(zhuān)利摘要】本發(fā)明公開(kāi)一種測(cè)試Android應(yīng)用程序的方法和裝置。該方法包括以下步驟:A:定位應(yīng)用程序的命令調(diào)用,B:監(jiān)控所述命令調(diào)用并獲取運(yùn)行時(shí)數(shù)據(jù),C:對(duì)獲取的運(yùn)行時(shí)數(shù)據(jù)進(jìn)行分析。
【IPC分類(lèi)】G06F11-36
【公開(kāi)號(hào)】CN104657259
【申請(qǐng)?zhí)枴緾N201310598510
【發(fā)明人】柴洪峰, 楊文博, 何朔, 李卷孺, 楊陽(yáng), 徐澤偉
【申請(qǐng)人】中國(guó)銀聯(lián)股份有限公司
【公開(kāi)日】2015年5月27日
【申請(qǐng)日】2013年11月22日
【公告號(hào)】WO2015074489A1