欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法及系統(tǒng)的制作方法

文檔序號:6635179閱讀:460來源:國知局
安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法及系統(tǒng),涉及安卓應(yīng)用程序監(jiān)測【技術(shù)領(lǐng)域】,方法包括監(jiān)測主機在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點;移動設(shè)備在運行待測的應(yīng)用程序時,若調(diào)用了敏感操作系統(tǒng)應(yīng)用程序編程接口,則觸發(fā)一斷點事件;移動設(shè)備將斷點事件發(fā)送給監(jiān)測主機;監(jiān)測主機向移動設(shè)備發(fā)送監(jiān)測數(shù)據(jù)請求報文;移動設(shè)備向監(jiān)測主機發(fā)送被移動設(shè)備調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù);監(jiān)測主機將監(jiān)測數(shù)據(jù)進行顯示。本發(fā)明能夠解決當(dāng)前采用API HOOK技術(shù)或者應(yīng)用重打包技術(shù)來進行動態(tài)行為分析造成的測試結(jié)果不準(zhǔn)確,且安卓終端權(quán)限不允許和對相關(guān)系統(tǒng)功能的修改可能帶來兼容性的問題。
【專利說明】安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法及系統(tǒng)

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及安卓應(yīng)用程序監(jiān)測【技術(shù)領(lǐng)域】,尤其涉及一種安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法及系統(tǒng)。

【背景技術(shù)】
[0002]動態(tài)行為分析是通過動態(tài)運行應(yīng)用程序的方式對其行為進行建模的一類技術(shù)的統(tǒng)稱。此類行為建模技術(shù)的特點是首先啟動應(yīng)用軟件,監(jiān)測其運行過程中執(zhí)行的各種操作,最終得到的一系列監(jiān)測記錄。動態(tài)行為分析技術(shù)在代碼性能優(yōu)化、程序正確性驗證以及軟件安全檢測等領(lǐng)域得到了廣泛應(yīng)用。
[0003]目前在對安卓應(yīng)用程序進行安全性檢測時,使用的動態(tài)行為分析技術(shù)一般有APIHOOK和應(yīng)用重打包兩種。其中,基于API HOOK技術(shù)的動態(tài)行為分析方法通過修改操作系統(tǒng)功能調(diào)用的入口點,將其指向由分析人員編寫的一段自定義代碼。當(dāng)應(yīng)用程序調(diào)用相關(guān)系統(tǒng)功能時,這段自定義的代碼首先被執(zhí)行,并記錄有關(guān)的調(diào)用信息,例如調(diào)用時間、調(diào)用者進程的名稱、調(diào)用棧的內(nèi)容以及傳遞的參數(shù)值等,之后再返回到真正的系統(tǒng)功能代碼中繼續(xù)完成操作?;趹?yīng)用重打包技術(shù)的動態(tài)行為分析方法通過逆向工程將應(yīng)用的可執(zhí)行文件還原成接近源代碼的內(nèi)容,對于其中的目標(biāo)操作系統(tǒng)功能調(diào)用,在執(zhí)行調(diào)用的代碼前插入一段自定義的代碼用于記錄調(diào)用事件的相關(guān)信息,隨后再將接近源代碼的內(nèi)容重新打包成可執(zhí)行文件。在運行這個新的可執(zhí)行文件時,插入的自定義代碼將在系統(tǒng)功能調(diào)用之前運行,從而實現(xiàn)相關(guān)信息的記錄。
[0004]可見,當(dāng)前無論采用API HOOK技術(shù)或者應(yīng)用重打包技術(shù),均需要對應(yīng)用程序或操作系統(tǒng)相關(guān)功能進行修改,造成測試對象發(fā)生變化,使得測試結(jié)果失去效力;另外,對相關(guān)系統(tǒng)功能進行修改需要root權(quán)限,而很多安卓終端均不開放此類權(quán)限;此外,對相關(guān)系統(tǒng)功能的修改可能帶來兼容性問題。


【發(fā)明內(nèi)容】

[0005]本發(fā)明的實施例提供一種安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法及系統(tǒng),以解決當(dāng)前采用API HOOK技術(shù)或者應(yīng)用重打包技術(shù)來進行動態(tài)行為分析造成的測試結(jié)果不準(zhǔn)確,且安卓終端權(quán)限不允許和對相關(guān)系統(tǒng)功能的修改可能帶來兼容性的問題。
[0006]為達到上述目的,本發(fā)明采用如下技術(shù)方案:
[0007]—種安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法,包括:
[0008]監(jiān)測主機在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點;
[0009]所述監(jiān)測主機向移動設(shè)備發(fā)送監(jiān)測命令報文;
[0010]在接收到所述監(jiān)測命令報文后,移動設(shè)備在運行所述待測的應(yīng)用程序時,若調(diào)用了所述敏感操作系統(tǒng)應(yīng)用程序編程接口,則觸發(fā)一斷點事件;
[0011]所述移動設(shè)備暫停運行所述待測的應(yīng)用程序,并將所述斷點事件發(fā)送給所述監(jiān)測主機;
[0012]所述監(jiān)測主機在接收到所述斷點事件后,向所述移動設(shè)備發(fā)送監(jiān)測數(shù)據(jù)請求報文;
[0013]所述移動設(shè)備根據(jù)所述監(jiān)測數(shù)據(jù)請求報文向所述監(jiān)測主機發(fā)送被移動設(shè)備調(diào)用的所述敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù);
[0014]所述監(jiān)測主機將所述監(jiān)測數(shù)據(jù)進行顯示。
[0015]具體的,所述監(jiān)測數(shù)據(jù)包括所述敏感操作系統(tǒng)應(yīng)用程序編程接口的函數(shù)名、類名、待測的應(yīng)用程序向敏感操作系統(tǒng)應(yīng)用程序編程接口函數(shù)發(fā)送的參數(shù)值以及調(diào)用棧信息。
[0016]此外,在監(jiān)測主機在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點之前,所述方法還包括:
[0017]所述移動設(shè)備運行所述待測的應(yīng)用程序,并啟動一 Dalvik虛擬機進程;所述Dalvik虛擬機進程包括一調(diào)試線程,所述調(diào)試線程中記錄有所述Dalvik虛擬機進程的身份標(biāo)識;
[0018]所述移動設(shè)備建立所述調(diào)試線程與移動設(shè)備中的設(shè)備端代理的Socket連接;
[0019]所述移動設(shè)備通過所述設(shè)備端代理,將所述身份標(biāo)識發(fā)送給所述監(jiān)測主機。
[0020]進一步的,所述安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法,還包括:
[0021]所述監(jiān)測主機通過監(jiān)測主機中的Dalvik調(diào)試管理庫為所述身份標(biāo)識對應(yīng)的Dalvik虛擬機進程選擇一個本地TCP端口作為本地調(diào)試端口 ;
[0022]所述監(jiān)測主機建立所述本地TCP端口與所述調(diào)試線程的數(shù)據(jù)包轉(zhuǎn)發(fā)連接。
[0023]另外,在所述監(jiān)測主機將所述監(jiān)測數(shù)據(jù)進行顯示之后,所述方法還包括:
[0024]所述監(jiān)測主機向所述移動設(shè)備發(fā)送應(yīng)用程序繼續(xù)運行指令;
[0025]所述移動設(shè)備在接收到所述應(yīng)用程序繼續(xù)運行指令后,控制被暫停的所述待測的應(yīng)用程序繼續(xù)運行。
[0026]一種安卓應(yīng)用程序的動態(tài)行為監(jiān)測系統(tǒng),包括:通過USB接口連接的監(jiān)控主機和移動設(shè)備;
[0027]其中,所述監(jiān)測主機,用于在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點,并向移動設(shè)備發(fā)送監(jiān)測命令報文;
[0028]所述移動設(shè)備,用于在運行所述待測的應(yīng)用程序,且調(diào)用了所述敏感操作系統(tǒng)應(yīng)用程序編程接口時,觸發(fā)一斷點事件;
[0029]所述移動設(shè)備,還用于暫停運行所述待測的應(yīng)用程序,并將所述斷點事件發(fā)送給所述監(jiān)測主機;
[0030]所述監(jiān)測主機,還用于在接收到所述斷點事件后,向所述移動設(shè)備發(fā)送監(jiān)測數(shù)據(jù)請求報文;
[0031]所述移動設(shè)備,還用于根據(jù)所述監(jiān)測數(shù)據(jù)請求報文向所述監(jiān)測主機發(fā)送被移動設(shè)備調(diào)用的所述敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù);
[0032]所述監(jiān)測主機,還用于將所述監(jiān)測數(shù)據(jù)進行顯示。
[0033]具體的,所述移動設(shè)備發(fā)送的監(jiān)測數(shù)據(jù)包括所述敏感操作系統(tǒng)應(yīng)用程序編程接口的函數(shù)名、類名、待測的應(yīng)用程序向敏感操作系統(tǒng)應(yīng)用程序編程接口函數(shù)發(fā)送的參數(shù)值以及調(diào)用棧信息。
[0034]進一步的,所述移動設(shè)備,還用于運行所述待測的應(yīng)用程序,并啟動一 Dalvik虛擬機進程;所述Dalvik虛擬機進程包括一調(diào)試線程,所述調(diào)試線程中記錄有所述Dalvik虛擬機進程的身份標(biāo)識;建立所述調(diào)試線程與移動設(shè)備中的設(shè)備端代理的Socket連接,并通過所述設(shè)備端代理,將所述身份標(biāo)識發(fā)送給所述監(jiān)測主機。
[0035]進一步的,所述監(jiān)測主機,還用于通過監(jiān)測主機中的Dalvik調(diào)試管理庫為所述身份標(biāo)識對應(yīng)的Dalvik虛擬機進程選擇一個本地TCP端口作為本地調(diào)試端口 ;建立所述本地TCP端口與所述調(diào)試線程的數(shù)據(jù)包轉(zhuǎn)發(fā)連接。
[0036]另外,所述監(jiān)測主機還用于向所述移動設(shè)備發(fā)送應(yīng)用程序繼續(xù)運行指令;所述移動設(shè)備,還用于在接收到所述應(yīng)用程序繼續(xù)運行指令后,控制被暫停的所述待測的應(yīng)用程序繼續(xù)運行。
[0037]本發(fā)明實施例提供的安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法及系統(tǒng),監(jiān)測主機在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點,向移動設(shè)備發(fā)送監(jiān)測命令報文;在接收到所述監(jiān)測命令報文后,移動設(shè)備在運行所述待測的應(yīng)用程序時,若調(diào)用了所述敏感操作系統(tǒng)應(yīng)用程序編程接口,則觸發(fā)一斷點事件;所述移動設(shè)備暫停運行所述待測的應(yīng)用程序,并將所述斷點事件發(fā)送給所述監(jiān)測主機;所述監(jiān)測主機在接收到所述斷點事件后,向所述移動設(shè)備發(fā)送監(jiān)測數(shù)據(jù)請求報文;所述移動設(shè)備根據(jù)所述監(jiān)測數(shù)據(jù)請求報文向所述監(jiān)測主機發(fā)送被移動設(shè)備調(diào)用的所述敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù);所述監(jiān)測主機將所述監(jiān)測數(shù)據(jù)進行顯示??梢?,本發(fā)明采用通過監(jiān)測主機,即PC端調(diào)試的方式來對應(yīng)用程序進行監(jiān)測,無需對應(yīng)用程序相關(guān)系統(tǒng)功能進行修改,從而也不需要root權(quán)限,且這種PC端調(diào)試的方式在各種安卓設(shè)備的系統(tǒng)中能夠兼容,兼容性較好。從而,本發(fā)明解決了當(dāng)前采用ΑΡΙΗ00Κ技術(shù)或者應(yīng)用重打包技術(shù)來進行動態(tài)行為分析造成的測試結(jié)果不準(zhǔn)確,且安卓終端權(quán)限不允許和對相關(guān)系統(tǒng)功能的修改可能帶來兼容性的問題。

【專利附圖】

【附圖說明】
[0038]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0039]圖1為本發(fā)明實施例提供的安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法的流程圖一;
[0040]圖2為本發(fā)明實施例提供的安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法的流程圖二 ;
[0041]圖3為本發(fā)明實施例中的安卓應(yīng)用程序的動態(tài)行為監(jiān)測系統(tǒng)的示意圖;
[0042]圖4為本發(fā)明實施例提供的安卓應(yīng)用程序的動態(tài)行為監(jiān)測系統(tǒng)的結(jié)構(gòu)圖。

【具體實施方式】
[0043]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0044]本發(fā)明實施例提供一種安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法,如圖1所示,包括:
[0045]步驟101、監(jiān)測主機在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點。
[0046]步驟102、監(jiān)測主機向移動設(shè)備發(fā)送監(jiān)測命令報文。
[0047]步驟103、在接收到監(jiān)測命令報文后,移動設(shè)備在運行待測的應(yīng)用程序時,若調(diào)用了敏感操作系統(tǒng)應(yīng)用程序編程接口,則觸發(fā)一斷點事件。
[0048]步驟104、移動設(shè)備暫停運行待測的應(yīng)用程序,并將斷點事件發(fā)送給監(jiān)測主機。
[0049]步驟105、監(jiān)測主機在接收到斷點事件后,向移動設(shè)備發(fā)送監(jiān)測數(shù)據(jù)請求報文。
[0050]步驟106、移動設(shè)備根據(jù)監(jiān)測數(shù)據(jù)請求報文向監(jiān)測主機發(fā)送被移動設(shè)備調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù)。
[0051]步驟107、監(jiān)測主機將監(jiān)測數(shù)據(jù)進行顯示。
[0052]本發(fā)明實施例提供的安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法,監(jiān)測主機在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點,向移動設(shè)備發(fā)送監(jiān)測命令報文;在接收到監(jiān)測命令報文后,移動設(shè)備在運行待測的應(yīng)用程序時,若調(diào)用了敏感操作系統(tǒng)應(yīng)用程序編程接口,則觸發(fā)一斷點事件;移動設(shè)備暫停運行待測的應(yīng)用程序,并將斷點事件發(fā)送給監(jiān)測主機;監(jiān)測主機在接收到斷點事件后,向移動設(shè)備發(fā)送監(jiān)測數(shù)據(jù)請求報文;移動設(shè)備根據(jù)監(jiān)測數(shù)據(jù)請求報文向監(jiān)測主機發(fā)送被移動設(shè)備調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù);監(jiān)測主機將監(jiān)測數(shù)據(jù)進行顯示??梢?,本發(fā)明采用通過監(jiān)測主機,即PC端調(diào)試的方式來對應(yīng)用程序進行監(jiān)測,無需對應(yīng)用程序相關(guān)系統(tǒng)功能進行修改,從而也不需要root權(quán)限,且這種PC端調(diào)試的方式在各種安卓設(shè)備的系統(tǒng)中能夠兼容,兼容性較好。從而,本發(fā)明解決了當(dāng)前采用API HOOK技術(shù)或者應(yīng)用重打包技術(shù)來進行動態(tài)行為分析造成的測試結(jié)果不準(zhǔn)確,且安卓終端權(quán)限不允許和對相關(guān)系統(tǒng)功能的修改可能帶來兼容性的問題。
[0053]值得說明的是,上述的監(jiān)測數(shù)據(jù)包括敏感操作系統(tǒng)應(yīng)用程序編程接口的函數(shù)名、類名、待測的應(yīng)用程序向敏感操作系統(tǒng)應(yīng)用程序編程接口函數(shù)發(fā)送的參數(shù)值以及調(diào)用棧信肩、O
[0054]為了便于本領(lǐng)域的技術(shù)人員更好的理解本發(fā)明,下面列舉一個更為具體的實施例,如圖2所示,本發(fā)明實施例提供一種安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法,包括:
[0055]步驟201、移動設(shè)備運行待測的應(yīng)用程序,并啟動一 Dalvik虛擬機進程。
[0056]其中,由于安卓系統(tǒng)的應(yīng)用程序無法直接在處理器上運行,而是需要由Dalvik虛擬機來解釋執(zhí)行。一般在工程模式的安卓系統(tǒng)中,該Dalvik虛擬機進程中除了執(zhí)行應(yīng)用程序字節(jié)碼的線程外,還可以額外啟動一個調(diào)試線程,可以協(xié)助實現(xiàn)開發(fā)工具的應(yīng)用調(diào)試功能。該調(diào)試線程啟動后首先向終端設(shè)備的設(shè)備端代理注冊。其中,該調(diào)試線程中記錄有Dalvik虛擬機進程的身份標(biāo)識。
[0057]步驟202、移動設(shè)備建立調(diào)試線程與移動設(shè)備中的設(shè)備端代理的Socket連接。
[0058]這樣,該調(diào)試線程可以將上述的身份標(biāo)識傳輸給該設(shè)備端代理。
[0059]其中,該設(shè)備端代理的作用有兩種,一種是傳輸模式的轉(zhuǎn)化。因為,標(biāo)準(zhǔn)的Java調(diào)試協(xié)議使用socket接口作為傳輸方式,而移動設(shè)備與監(jiān)控主機之間則主要靠USB連接。設(shè)備端代理的一項重要作用就是借助USB傳輸接收從監(jiān)控主機發(fā)來的報文并使用socket接口將其發(fā)送到調(diào)試線程,同時接收調(diào)試線程發(fā)來的socket數(shù)據(jù)并通過USB傳輸?shù)姆绞桨l(fā)回到監(jiān)控主機。另一種功能是應(yīng)用列表管理,由于應(yīng)用程序啟動時調(diào)試線程會向設(shè)備端代理注冊,而應(yīng)用程序退出時也會關(guān)閉相應(yīng)的socket連接,通過跟蹤這些注冊信息和連接信息,設(shè)備端代理能夠動態(tài)維護一個當(dāng)前正在運行的應(yīng)用程序列表,并將其提供給監(jiān)控主機側(cè)的動態(tài)行為分析工具使用。
[0060]步驟203、移動設(shè)備通過設(shè)備端代理,將身份標(biāo)識發(fā)送給監(jiān)測主機。
[0061]其中,移動設(shè)備與該監(jiān)測主機通過USB接口連接。其中,該監(jiān)測主機中設(shè)置有個人計算機代理(即PC端代理)和Dalvik調(diào)試管理庫。將身份標(biāo)識發(fā)送給監(jiān)測主機是通過USB連接將其傳輸給PC端代理,PC端代理又將該事件通知給Dalvik調(diào)試管理庫。
[0062]此處的PC端代理的作用為傳輸模式轉(zhuǎn)換的作用,即在socket傳輸與USB傳輸之間進行透明轉(zhuǎn)換。
[0063]而此處的Dalvik調(diào)試管理庫的作用是通過PC端代理與設(shè)備端代理進行通信,獲取移動設(shè)備當(dāng)前正在運行的進程列表,為其中每個進程分配本地socket端口,并將進程列表信息和socket端口信息提供給監(jiān)測主機中的動態(tài)行為分析工具。另外,每當(dāng)移動設(shè)備啟動新的應(yīng)用程序、或者當(dāng)前運行的應(yīng)用程序退出運行時,Dalvik調(diào)試管理庫會從PC端代理處收到通知,并將相關(guān)通知信息傳遞給動態(tài)行為分析工具,從而使動態(tài)行為分析工具能夠動態(tài)跟蹤移動設(shè)備上運行的全部應(yīng)用程序。
[0064]步驟204、監(jiān)測主機通過監(jiān)測主機中的Dalvik調(diào)試管理庫為身份標(biāo)識對應(yīng)的Dalvik虛擬機進程選擇一個本地TCP端口作為本地調(diào)試端口。
[0065]步驟205、監(jiān)測主機建立本地TCP端口與移動設(shè)備上調(diào)試線程的數(shù)據(jù)包轉(zhuǎn)發(fā)連接。
[0066]這樣,監(jiān)測主機發(fā)送的監(jiān)測命令報文即可通過該數(shù)據(jù)包轉(zhuǎn)發(fā)連接來傳輸。
[0067]步驟206、監(jiān)測主機在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點。
[0068]步驟207、監(jiān)測主機通過本地TCP端口向移動設(shè)備的調(diào)試線程發(fā)送監(jiān)測命令報文。
[0069]步驟208、在接收到監(jiān)測命令報文后,移動設(shè)備在運行待測的應(yīng)用程序時,若應(yīng)用程序調(diào)用了敏感操作系統(tǒng)應(yīng)用程序編程接口,則觸發(fā)一斷點事件。
[0070]步驟209、移動設(shè)備暫停運行待測的應(yīng)用程序,并將斷點事件發(fā)送給監(jiān)測主機。
[0071]具體的,是通過Dalvik虛擬機來暫停運行待測的應(yīng)用程序的。
[0072]而斷點事件通過USB接口到達監(jiān)測主機,并傳輸?shù)奖O(jiān)測主機的JDlCJava DebugInterface)調(diào)試庫,并最終到達監(jiān)測主機中的動態(tài)行為分析工具中。
[0073]其中,JDI調(diào)試庫是動態(tài)行為分析工具與Java調(diào)試傳輸層協(xié)議之間的接口,用于完成底層調(diào)試協(xié)議報文與上層Java對象和函數(shù)調(diào)用之間的相互轉(zhuǎn)換。
[0074]步驟210、監(jiān)測主機在接收到斷點事件后,通過調(diào)用JDI調(diào)試庫中相關(guān)類和函數(shù)向監(jiān)測主機的本地TCP端口發(fā)送監(jiān)測數(shù)據(jù)請求報文,從而通過數(shù)據(jù)包轉(zhuǎn)發(fā)連接到達移動設(shè)備上。
[0075]步驟211、移動設(shè)備根據(jù)監(jiān)測數(shù)據(jù)請求報文向監(jiān)測主機發(fā)送被應(yīng)用程序調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù)。
[0076]步驟212、監(jiān)測主機將監(jiān)測數(shù)據(jù)進行顯示。
[0077]其中,該監(jiān)測數(shù)據(jù)可以包括敏感操作系統(tǒng)應(yīng)用程序編程接口的函數(shù)名、類名、待測的應(yīng)用程序向敏感操作系統(tǒng)應(yīng)用程序編程接口函數(shù)發(fā)送的參數(shù)值以及調(diào)用棧信息等。該監(jiān)測數(shù)據(jù)含有大量的軟件底層信息,因此在對其進行顯示時,可以將這些信息重新整理(例如將多個字符串進行拼接),以方便分析人員查看。
[0078]步驟213、監(jiān)測主機向移動設(shè)備發(fā)送應(yīng)用程序繼續(xù)運行指令。
[0079]步驟214、移動設(shè)備在接收到應(yīng)用程序繼續(xù)運行指令后,控制被暫停的待測的應(yīng)用程序繼續(xù)運行。在步驟214之后,可以返回繼續(xù)執(zhí)行步驟208。
[0080]上述如圖2所示的方法應(yīng)用于一種安卓應(yīng)用程序的動態(tài)行為監(jiān)測系統(tǒng),如圖3所示,所述監(jiān)測系統(tǒng)包括通過USB接口 31連接的監(jiān)控主機32和移動設(shè)備33。
[0081]所述移動設(shè)備33包括:啟動有調(diào)試線程的Dalvik虛擬機34、設(shè)備端代理35。所述監(jiān)測主機32包括:PC端代理36、Dalvik調(diào)試管理庫37、JDI調(diào)試庫38以及動態(tài)行為分析工具39。上述各部分的功能可以參見圖2的方法實例,此處不再贅述。
[0082]下面列舉一個對某應(yīng)用程序中發(fā)送短信的行為進行監(jiān)測的過程,包括:
[0083]啟動動態(tài)行為分析工具。該動態(tài)行為分析工具啟動后,調(diào)用Android軟件開發(fā)包(SDK)自帶的 ddmlib.jar (即 Dalvik 調(diào)試管理庫)的 AndroidDebugBridge.1nit O 和AndroidDebugBridge.createBridge O 函數(shù),對 ddmlib.jar 進行初始化。
[0084]ddmlib.jar在初始化過程中,通過socket連接到adb server (即PC端代理)監(jiān)聽的5037本地端口上,并使用該socket連接,借助adb server的轉(zhuǎn)發(fā)功能向adbd(即設(shè)備端代理)發(fā)送track-jdwp命令。這樣每當(dāng)移動設(shè)備有Dalvik虛擬機進程啟動或退出時,ddmlib.jar都會通過該連接收到相應(yīng)的啟動或者退出的通知。
[0085]啟動待測試的應(yīng)用程序。此時,安卓系統(tǒng)將啟動一個新的Dalvik虛擬機進程,其中除了用于執(zhí)行應(yīng)用程序字節(jié)碼的線程外,還包含一個JDWP線程(即調(diào)試線程)。該JDWP線程連接到adbd創(chuàng)建的名為@vm-debug-control的socket上,將本進程的身份標(biāo)識(例如身份標(biāo)識為3721)發(fā)送給adbd。
[0086]adbd收到JDWP線程發(fā)來的進程的身份標(biāo)識后,通過USB連接將其傳輸給adbserver, adb server 又將該事件通知給 ddmlib.jar。
[0087]ddmlib.jar 通過與 adb server 之間的 socket 連接向 adbd 發(fā)送 jdwp: 3721 命令,從而在邏輯上透過USB轉(zhuǎn)發(fā)連接到移動設(shè)備端的JDWP線程。
[0088]ddmlib.jar選擇一個本地TCP端口(例如本地TCP端口為8600端口 )作為本地調(diào)試端口,并在在該端口與ddmlib.jar和adb server已建立的socket之間進行數(shù)據(jù)包轉(zhuǎn)發(fā)。此后所有發(fā)往8600端口的調(diào)試報文都將被透明地轉(zhuǎn)發(fā)到設(shè)備端的JDWP線程,而JDWP線程亦能向PC端8600端口發(fā)回調(diào)試結(jié)果。
[0089]動態(tài)行為分析工具使用Java開發(fā)工具包(JDK)自帶的tools.jar(即JDI調(diào)試庫)的SocketAttachingConnector連接到本地8600端口上,實現(xiàn)對待測試移動應(yīng)用的調(diào)試控制。接下來,工具創(chuàng)建一個MethodEntryRequest請求,將該請求的類過濾器設(shè)置為“android, telephony.SmsManager”,隨后啟用該請求。
[0090]動態(tài)行為分析工具循環(huán)讀取tool s.jar創(chuàng)建的調(diào)試事件隊列。若讀出MethodEntryEvent 事件,繼續(xù)判斷是否為 android, telephony.SmsManager 類的sendTextMessage O函數(shù)觸發(fā)該事件。
[0091]若前述MethodEntryEvent調(diào)試事件確屬sendTextMessage O函數(shù)觸發(fā),動態(tài)行為分析工具則調(diào)用tools, jar的相應(yīng)方法讀取待測試移動應(yīng)用的上下文數(shù)據(jù),包括但不限于被調(diào)用應(yīng)用程序編程接口(Applicat1n Programming Interface,簡稱API)的函數(shù)名和類名、應(yīng)用向該函數(shù)傳遞的參數(shù)值以及調(diào)用棧信息等,將該函數(shù)名和類名、應(yīng)用向該函數(shù)傳遞的參數(shù)值以及調(diào)用棧信息等在調(diào)整格式后顯示在工具的用戶界面上。
[0092]動態(tài)行為分析工具調(diào)用tools, jar的VirtualMachine.resume ()函數(shù),繼續(xù)待測試移動應(yīng)用的運行。
[0093]對應(yīng)于上述圖1和圖2的安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法的實施例,本發(fā)明還提供一種安卓應(yīng)用程序的動態(tài)行為監(jiān)測系統(tǒng),如圖4所示,包括:通過USB接口 31連接的監(jiān)控主機32和移動設(shè)備33。
[0094]其中,監(jiān)測主機32,可以在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點,并向移動設(shè)備33發(fā)送監(jiān)測命令報文。
[0095]移動設(shè)備33,可以在運行待測的應(yīng)用程序,且應(yīng)用程序調(diào)用了敏感操作系統(tǒng)應(yīng)用程序編程接口時,觸發(fā)一斷點事件。
[0096]移動設(shè)備33,還可以暫停運行待測的應(yīng)用程序,并將斷點事件發(fā)送給監(jiān)測主機32。
[0097]監(jiān)測主機32,還可以在接收到斷點事件后,向移動設(shè)備33發(fā)送監(jiān)測數(shù)據(jù)請求報文。
[0098]移動設(shè)備33,還可以根據(jù)監(jiān)測數(shù)據(jù)請求報文向監(jiān)測主機32發(fā)送被移動設(shè)備33的應(yīng)用程序調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù)。
[0099]監(jiān)測主機32,還可以將監(jiān)測數(shù)據(jù)進行顯示。
[0100]具體的,移動設(shè)備33發(fā)送的監(jiān)測數(shù)據(jù)包括敏感操作系統(tǒng)應(yīng)用程序編程接口的函數(shù)名、類名、待測的應(yīng)用程序向敏感操作系統(tǒng)應(yīng)用程序編程接口函數(shù)發(fā)送的參數(shù)值以及調(diào)用棧信息。
[0101]進一步的,移動設(shè)備33,還可以運行待測的應(yīng)用程序,并啟動一 Dalvik虛擬機進程;Dalvik虛擬機進程包括一調(diào)試線程,調(diào)試線程中記錄有Dalvik虛擬機進程的身份標(biāo)識;建立調(diào)試線程與移動設(shè)備33中的設(shè)備端代理的Socket連接,并通過設(shè)備端代理,將身份標(biāo)識發(fā)送給監(jiān)測主機32。
[0102]進一步的,監(jiān)測主機32,還可以通過監(jiān)測主機32中的Dalvik調(diào)試管理庫為身份標(biāo)識對應(yīng)的Dalvik虛擬機進程選擇一個本地TCP端口作為本地調(diào)試端口 ;建立本地TCP端口與調(diào)試線程的數(shù)據(jù)包轉(zhuǎn)發(fā)連接。
[0103]另外,監(jiān)測主機32還可以向移動設(shè)備33發(fā)送應(yīng)用程序繼續(xù)運行指令。
[0104]移動設(shè)備33,還可以在接收到應(yīng)用程序繼續(xù)運行指令后,控制被暫停的待測的應(yīng)用程序繼續(xù)運行。
[0105]值得說明的是,本發(fā)明實施例提供的安卓應(yīng)用程序的動態(tài)行為監(jiān)測系統(tǒng)的具體實現(xiàn)方式可以參見圖1和圖2對應(yīng)的方法實施例,此處不再贅述。
[0106]本發(fā)明實施例提供的安卓應(yīng)用程序的動態(tài)行為監(jiān)測系統(tǒng),監(jiān)測主機在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點,向移動設(shè)備發(fā)送監(jiān)測命令報文;在接收到所述監(jiān)測命令報文后,移動設(shè)備在運行所述待測的應(yīng)用程序時,若調(diào)用了所述敏感操作系統(tǒng)應(yīng)用程序編程接口,則觸發(fā)一斷點事件;所述移動設(shè)備暫停運行所述待測的應(yīng)用程序,并將所述斷點事件發(fā)送給所述監(jiān)測主機;所述監(jiān)測主機在接收到所述斷點事件后,向所述移動設(shè)備發(fā)送監(jiān)測數(shù)據(jù)請求報文;所述移動設(shè)備根據(jù)所述監(jiān)測數(shù)據(jù)請求報文向所述監(jiān)測主機發(fā)送被移動設(shè)備調(diào)用的所述敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù);所述監(jiān)測主機將所述監(jiān)測數(shù)據(jù)進行顯示??梢姡景l(fā)明采用通過監(jiān)測主機,即PC端調(diào)試的方式來對應(yīng)用程序進行監(jiān)測,無需對應(yīng)用程序相關(guān)系統(tǒng)功能進行修改,從而也不需要root權(quán)限,且這種PC端調(diào)試的方式在各種安卓設(shè)備的系統(tǒng)中能夠兼容,兼容性較好。從而,本發(fā)明解決了當(dāng)前采用API HOOK技術(shù)或者應(yīng)用重打包技術(shù)來進行動態(tài)行為分析造成的測試結(jié)果不準(zhǔn)確,且安卓終端權(quán)限不允許和對相關(guān)系統(tǒng)功能的修改可能帶來兼容性的問題。
[0107]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0108]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0109]這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0110]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0111]本發(fā)明中應(yīng)用了具體實施例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
【權(quán)利要求】
1.一種安卓應(yīng)用程序的動態(tài)行為監(jiān)測方法,其特征在于,包括: 監(jiān)測主機在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點; 所述監(jiān)測主機向移動設(shè)備發(fā)送監(jiān)測命令報文; 在接收到所述監(jiān)測命令報文后,移動設(shè)備在運行所述待測的應(yīng)用程序時,若調(diào)用了所述敏感操作系統(tǒng)應(yīng)用程序編程接口,則觸發(fā)一斷點事件; 所述移動設(shè)備暫停運行所述待測的應(yīng)用程序,并將所述斷點事件發(fā)送給所述監(jiān)測主機; 所述監(jiān)測主機在接收到所述斷點事件后,向所述移動設(shè)備發(fā)送監(jiān)測數(shù)據(jù)請求報文;所述移動設(shè)備根據(jù)所述監(jiān)測數(shù)據(jù)請求報文向所述監(jiān)測主機發(fā)送被移動設(shè)備調(diào)用的所述敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù); 所述監(jiān)測主機將所述監(jiān)測數(shù)據(jù)進行顯示。
2.根據(jù)權(quán)利要求1所述的動態(tài)行為監(jiān)測方法,其特征在于,所述監(jiān)測數(shù)據(jù)包括所述敏感操作系統(tǒng)應(yīng)用程序編程接口的函數(shù)名、類名、待測的應(yīng)用程序向敏感操作系統(tǒng)應(yīng)用程序編程接口函數(shù)發(fā)送的參數(shù)值以及調(diào)用棧信息。
3.根據(jù)權(quán)利要求1所述的動態(tài)行為監(jiān)測方法,其特征在于,在監(jiān)測主機在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點之前,所述方法還包括: 所述移動設(shè)備運行所述待測的應(yīng)用程序,并啟動一 1^17認(rèn)虛擬機進程;所述認(rèn)虛擬機進程包括一調(diào)試線程,所述調(diào)試線程中記錄有所述1^17認(rèn)虛擬機進程的身份標(biāo)識;所述移動設(shè)備建立所述調(diào)試線程與移動設(shè)備中的設(shè)備端代理的丨連接; 所述移動設(shè)備通過所述設(shè)備端代理,將所述身份標(biāo)識發(fā)送給所述監(jiān)測主機。
4.根據(jù)權(quán)利要求3所述的動態(tài)行為監(jiān)測方法,其特征在于,還包括: 所述監(jiān)測主機通過監(jiān)測主機中的此&認(rèn)調(diào)試管理庫為所述身份標(biāo)識對應(yīng)的認(rèn)虛擬機進程選擇一個本地I'⑶端口作為本地調(diào)試端口 ; 所述監(jiān)測主機建立所述本地扣?端口與所述調(diào)試線程的數(shù)據(jù)包轉(zhuǎn)發(fā)連接。
5.根據(jù)權(quán)利要求4所述的動態(tài)行為監(jiān)測方法,其特征在于,在所述監(jiān)測主機將所述監(jiān)測數(shù)據(jù)進行顯示之后,所述方法還包括: 所述監(jiān)測主機向所述移動設(shè)備發(fā)送應(yīng)用程序繼續(xù)運行指令; 所述移動設(shè)備在接收到所述應(yīng)用程序繼續(xù)運行指令后,控制被暫停的所述待測的應(yīng)用程序繼續(xù)運行。
6.一種安卓應(yīng)用程序的動態(tài)行為監(jiān)測系統(tǒng),其特征在于,包括:通過舊8接口連接的監(jiān)控主機和移動設(shè)備;其中, 所述監(jiān)測主機,用于在待測應(yīng)用程序所需調(diào)用的敏感操作系統(tǒng)應(yīng)用程序編程接口的代碼處設(shè)置斷點,并向移動設(shè)備發(fā)送監(jiān)測命令報文; 所述移動設(shè)備,用于在運行所述待測的應(yīng)用程序,且調(diào)用了所述敏感操作系統(tǒng)應(yīng)用程序編程接口時,觸發(fā)一斷點事件; 所述移動設(shè)備,還用于暫停運行所述待測的應(yīng)用程序,并將所述斷點事件發(fā)送給所述監(jiān)測主機; 所述監(jiān)測主機,還用于在接收到所述斷點事件后,向所述移動設(shè)備發(fā)送監(jiān)測數(shù)據(jù)請求報文; 所述移動設(shè)備,還用于根據(jù)所述監(jiān)測數(shù)據(jù)請求報文向所述監(jiān)測主機發(fā)送被移動設(shè)備調(diào)用的所述敏感操作系統(tǒng)應(yīng)用程序編程接口的監(jiān)測數(shù)據(jù); 所述監(jiān)測主機,還用于將所述監(jiān)測數(shù)據(jù)進行顯示。
7.根據(jù)權(quán)利要求6所述的動態(tài)行為監(jiān)測系統(tǒng),其特征在于,所述移動設(shè)備發(fā)送的監(jiān)測數(shù)據(jù)包括所述敏感操作系統(tǒng)應(yīng)用程序編程接口的函數(shù)名、類名、待測的應(yīng)用程序向敏感操作系統(tǒng)應(yīng)用程序編程接口函數(shù)發(fā)送的參數(shù)值以及調(diào)用棧信息。
8.根據(jù)權(quán)利要求6所述的動態(tài)行為監(jiān)測系統(tǒng),其特征在于,所述移動設(shè)備,還用于運行所述待測的應(yīng)用程序,并啟動一 1^17認(rèn)虛擬機進程;所述007認(rèn)虛擬機進程包括一調(diào)試線程,所述調(diào)試線程中記錄有所述認(rèn)虛擬機進程的身份標(biāo)識;建立所述調(diào)試線程與移動設(shè)備中的設(shè)備端代理的30土的連接,并通過所述設(shè)備端代理,將所述身份標(biāo)識發(fā)送給所述監(jiān)測主機。
9.根據(jù)權(quán)利要求8所述的動態(tài)行為監(jiān)測系統(tǒng),其特征在于,所述監(jiān)測主機,還用于通過監(jiān)測主機中的此&認(rèn)調(diào)試管理庫為所述身份標(biāo)識對應(yīng)的認(rèn)虛擬機進程選擇一個本地10?端口作為本地調(diào)試端口 ;建立所述本地扣?端口與所述調(diào)試線程的數(shù)據(jù)包轉(zhuǎn)發(fā)連接。
10.根據(jù)權(quán)利要求9所述的動態(tài)行為監(jiān)測系統(tǒng),其特征在于,所述監(jiān)測主機還用于向所述移動設(shè)備發(fā)送應(yīng)用程序繼續(xù)運行指令; 所述移動設(shè)備,還用于在接收到所述應(yīng)用程序繼續(xù)運行指令后,控制被暫停的所述待測的應(yīng)用程序繼續(xù)運行。
【文檔編號】G06F11/36GK104375938SQ201410670086
【公開日】2015年2月25日 申請日期:2014年11月20日 優(yōu)先權(quán)日:2014年11月20日
【發(fā)明者】楊丁寧, 李媛, 汪薇薇, 余泉, 鄧樣輝, 杜云 申請人:工業(yè)和信息化部電信研究院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
阿勒泰市| 庄河市| 北宁市| 淳化县| 濮阳市| 普定县| 淮北市| 龙陵县| 左云县| 穆棱市| 石柱| 思南县| 贵溪市| 湟源县| 长葛市| 兴山县| 秀山| 新源县| 安平县| 威海市| 贡觉县| 武乡县| 泗水县| 青阳县| 利辛县| 新和县| 涿州市| 通渭县| 新野县| 朝阳县| 安塞县| 桃源县| 普兰店市| 天等县| 宜川县| 溆浦县| 文水县| 文水县| 博白县| 吉隆县| 桓仁|