一種應(yīng)用程序的行為監(jiān)測方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件技術(shù)領(lǐng)域,具體涉及一種應(yīng)用程序的行為監(jiān)測方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著軟件技術(shù)的發(fā)展,越來越多的應(yīng)用被開發(fā)。以使用安卓Android操作系統(tǒng)的移動終端為例,由于Android系統(tǒng)的開源性,基于Android系統(tǒng)進行開發(fā)的第三方應(yīng)用種類繁多,同一款應(yīng)用甚至有十幾上百個衍生變種。而且,隨著ROOT權(quán)限技術(shù)的不斷普及,越來越多的用戶對移動終端的系統(tǒng)進行修改,移動終端的系統(tǒng)應(yīng)用的種類也日益繁多。為便于描述本發(fā)明的方案,本文中,將應(yīng)用,如,第三方應(yīng)用或系統(tǒng)應(yīng)用,統(tǒng)稱為應(yīng)用程序。
[0003]然而,在相關(guān)技術(shù)中,應(yīng)用程序在啟動之后,應(yīng)用程序的所有進程都在后臺運行,應(yīng)用程序具體的行為是不可見的。故,即使應(yīng)用程序在后臺正在進行一些侵犯用戶隱私、竊取用戶資料等威脅用戶安全的行為,用戶也無法感知。從而導(dǎo)致用戶無法確定安裝的應(yīng)用程序是否是安全的,無法從種類繁多的應(yīng)用程序中甄別出安全的應(yīng)用程序進行安裝使用。
[0004]由此可見,如何對應(yīng)用程序的行為進行監(jiān)測,使應(yīng)用程序的行為透明化、可見化,以確定應(yīng)用程序是安全的、可信任的已成為本領(lǐng)域技術(shù)人員亟需解決的問題。
【發(fā)明內(nèi)容】
[0005]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種應(yīng)用程序的行為監(jiān)測方法和系統(tǒng)。
[0006]依據(jù)本發(fā)明的一個方面,提供了一種應(yīng)用程序的行為監(jiān)測方法,包括:
[0007]判斷應(yīng)用程序的當前行為是否是待監(jiān)測行為;
[0008]當確定所述當前行為是待監(jiān)測行為時,確定所述待監(jiān)測行為對應(yīng)的重配置方法結(jié)構(gòu)體;其中,所述重配置方法結(jié)構(gòu)體為對所述待監(jiān)測行為的原始方法結(jié)構(gòu)體進行重配置后的方法結(jié)構(gòu)體,所述重配置方法結(jié)構(gòu)體中包括:用于指示記錄函數(shù)對應(yīng)的調(diào)用接口的位置的分發(fā)函數(shù);所述記錄函數(shù)用于記錄所述待監(jiān)測行為的信息;
[0009]根據(jù)所述分發(fā)函數(shù)獲取所述記錄函數(shù)對應(yīng)的調(diào)用接口,通過所述記錄函數(shù)對應(yīng)的調(diào)用接口調(diào)用所述記錄函數(shù),并通過所述記錄函數(shù)記錄所述待監(jiān)測行為的行為信息;
[0010]根據(jù)記錄的待監(jiān)測行為的行為信息確定所述應(yīng)用程序的安全性。
[0011]可選地,所述對所述待監(jiān)測行為的原始方法結(jié)構(gòu)體進行重配置,包括:
[0012]獲取所述待監(jiān)測行為對應(yīng)的原始方法結(jié)構(gòu)體;
[0013]將所述原始方法結(jié)構(gòu)體的屬性修改為設(shè)定屬性;其中,所述設(shè)定屬性用于指示執(zhí)行所述分發(fā)函數(shù);
[0014]將所述原始方法結(jié)構(gòu)體成員的指針替換為所述分發(fā)函數(shù);其中,所述指針用于指示執(zhí)行所述待監(jiān)測行為的原始調(diào)用函數(shù)的接口的位置;
[0015]備份所述原始方法結(jié)構(gòu)體。
[0016]可選地,所述判斷應(yīng)用程序的當前行為是否是待監(jiān)測行為,包括:
[0017]獲取所述當前行為對應(yīng)的方法結(jié)構(gòu)體的屬性;
[0018]根據(jù)所述當前行為對應(yīng)的方法結(jié)構(gòu)體的屬性判斷所述當前行為是否是待監(jiān)測行為;其中,當所述當前行為的方法結(jié)構(gòu)體的屬性是所述設(shè)定屬性時,確定所述當前行為是待監(jiān)測行為。
[0019]可選地,所述將所述原始方法結(jié)構(gòu)體的屬性修改為設(shè)定屬性,包括:
[0020]將所述原始方法結(jié)構(gòu)體的屬性修改為native屬性。
[0021]可選地,在所述根據(jù)所述分發(fā)函數(shù)獲取所述記錄函數(shù)對應(yīng)的調(diào)用接口的步驟之前,所述方法還包括:
[0022]獲取分發(fā)參數(shù),所述分發(fā)參數(shù)用于指示所述行為信息的類型;
[0023]其中,所述獲取分發(fā)參數(shù)包括:
[0024]遍歷args參數(shù),獲取所述待監(jiān)測行為對應(yīng)的args參數(shù);
[0025]將所述待監(jiān)測行為對應(yīng)的args參數(shù)添加到數(shù)組中,將所述數(shù)組作為所述分發(fā)參數(shù)。
[0026]可選地,在所述記錄所述待監(jiān)測行為的行為信息的步驟之后,所述方法還包括:
[0027]當所述行為信息記錄完成之后,從備份內(nèi)存中獲取備份的原始方法結(jié)構(gòu)體;
[0028]根據(jù)所述原始方法結(jié)構(gòu)體中的指針獲取所述待監(jiān)測行為對應(yīng)的原始調(diào)用函數(shù)的接口,通過所述原始調(diào)用函數(shù)的接口調(diào)用所述待監(jiān)測行為對應(yīng)的原始調(diào)用函數(shù),以完成所述待監(jiān)測行為的執(zhí)行。
[0029]可選地,所述根據(jù)記錄的待監(jiān)測行為的行為信息確定所述應(yīng)用程序的安全性,包括:
[0030]將記錄的待監(jiān)測行為的行為信息作為所述應(yīng)用程序的行為信息輸出;
[0031]根據(jù)輸出的行為信息判斷所述應(yīng)用程序的行為是否是風(fēng)險行為;若是,則確定所述應(yīng)用程序是風(fēng)險應(yīng)用程序;否則,確定所述應(yīng)用程序是安全應(yīng)用程序;
[0032]其中,所述風(fēng)險行為包括:讀取用戶隱私信息,和/或篡改用戶資料信息,和/或竊取賬號密碼信息,和/或惡意撥打電話。
[0033]可選地,所述虛擬機包括:Dalvik虛擬機。
[0034]可選地,所述方法使用種子進程執(zhí)行。
[0035]可選地,所述應(yīng)用程序包括:第三方應(yīng)用程序和系統(tǒng)應(yīng)用程序;其中,所述應(yīng)用程序在沙箱中運打。
[0036]根據(jù)本發(fā)明的另一方面,提供了一種應(yīng)用程序的行為監(jiān)測系統(tǒng),包括:
[0037]第一判斷模塊,用于判斷應(yīng)用程序的當前行為是否是待監(jiān)測行為;
[0038]第一確定模塊,用于在定所述當前行為是待監(jiān)測行為時,確定所述待監(jiān)測行為對應(yīng)的重配置方法結(jié)構(gòu)體;其中,所述重配置方法結(jié)構(gòu)體為對所述待監(jiān)測行為的原始方法結(jié)構(gòu)體進行重配置后的方法結(jié)構(gòu)體,所述重配置方法結(jié)構(gòu)體中包括:用于指示記錄函數(shù)對應(yīng)的調(diào)用接口的位置的分發(fā)函數(shù);所述記錄函數(shù)用于記錄所述待監(jiān)測行為的信息;
[0039]記錄模塊,用于根據(jù)所述分發(fā)函數(shù)獲取所述記錄函數(shù)對應(yīng)的調(diào)用接口,通過所述記錄函數(shù)對應(yīng)的調(diào)用接口調(diào)用所述記錄函數(shù),并通過所述記錄函數(shù)記錄所述待監(jiān)測行為的行為信息;
[0040]第二確定模塊,用于根據(jù)記錄的待監(jiān)測行為的行為信息確定所述應(yīng)用程序的安全性。
[0041 ] 可選地,所述系統(tǒng)還包括:
[0042]第一獲取模塊,用于獲取所述待監(jiān)測行為對應(yīng)的原始方法結(jié)構(gòu)體;
[0043]修改模塊,用于將所述原始方法結(jié)構(gòu)體的屬性修改為設(shè)定屬性;其中,所述設(shè)定屬性用于指示執(zhí)行所述分發(fā)函數(shù);
[0044]替換模塊,用于將所述原始方法結(jié)構(gòu)體成員的指針替換為所述分發(fā)函數(shù);其中,所述指針用于指示執(zhí)行所述待監(jiān)測行為的原始調(diào)用函數(shù)的接口的位置;
[0045]備份模塊,用于備份所述原始方法結(jié)構(gòu)體。
[0046]可選地,所述第一判斷模塊包括:
[0047]第四獲取模塊,用于獲取所述當前行為對應(yīng)的方法結(jié)構(gòu)體的屬性;
[0048]第二判斷模塊,用于根據(jù)所述當前行為對應(yīng)的方法結(jié)構(gòu)體的屬性判斷所述當前行為是否是待監(jiān)測行為;其中,當所述當前行為的方法結(jié)構(gòu)體的屬性是所述設(shè)定屬性時,確定所述當前行為是待監(jiān)測行為。
[0049]可選地,修改模塊,具體用于將所述原始方法結(jié)構(gòu)體的屬性修改為native屬性。
[0050]可選地,所述系統(tǒng)還包括:
[0051]第二獲取模塊,用于在所述記錄模塊根據(jù)所述分發(fā)函數(shù)獲取所述記錄函數(shù)對應(yīng)的調(diào)用接口之前,獲取分發(fā)參數(shù);
[0052]其中,所述第二獲取模塊包括:
[0053]第三獲取模塊,用于遍歷args參數(shù),獲取所述待監(jiān)測行為對應(yīng)的args參數(shù);
[0054]添加模塊,用于將所述待監(jiān)測行為對應(yīng)的args參數(shù)添加到數(shù)組中,將所述數(shù)組作為所述分發(fā)參數(shù);
[0055]可選地,所述系統(tǒng)還包括:
[0056]第五獲取模塊,用于在所述記錄模塊記錄所述待監(jiān)測行為的行為信息之后,在所述行為信息記錄完成之后,從備份內(nèi)存中獲取備份的原始方法結(jié)構(gòu)體;
[0057]調(diào)用模塊,用于根據(jù)所述原始方法結(jié)構(gòu)體中的指針獲取所述待監(jiān)測行為對應(yīng)的原始調(diào)用函數(shù)的接口,通過所述原始調(diào)用函數(shù)的接口調(diào)用所述待監(jiān)測行為對應(yīng)的原始調(diào)用函數(shù),以完成所述待監(jiān)測行為的執(zhí)行。
[0058]可選地,所述第一確定模塊,包括:
[0059]輸出模塊,用于將記錄的待監(jiān)測行為的行為信息作為所述應(yīng)用程序的行為信息輸出;
[0060]風(fēng)險判斷模塊,用于根據(jù)輸出的行為信息判斷所述應(yīng)用程序的行為是否是風(fēng)險行為;若是,則確定所述應(yīng)用程序是風(fēng)險應(yīng)用程序;否則,確定所述應(yīng)用程序是安全應(yīng)用程序;
[0061 ] 其中,所述風(fēng)險行為包括:讀取用戶隱私信息,和/或篡改用戶資料信息,和/或竊取賬號密碼信息,和/或惡意撥打電話。
[0062]可選地,所述虛擬機包括:Dalvik虛擬機。
[0063]可選地,所述系統(tǒng)使用種子進程執(zhí)行。
[0064]可選地,所述應(yīng)用程序包括:第三方應(yīng)用程序和系統(tǒng)應(yīng)用程序;其中,所述應(yīng)用程序在沙箱中運打。
[0065]本發(fā)明提供了一種應(yīng)用程序的行為監(jiān)測方法和系統(tǒng),首先確定應(yīng)用程序的當前行為是待監(jiān)測行為,然后獲取所述待監(jiān)測行為對應(yīng)的重配置方法結(jié)構(gòu)體。進而,虛擬機進行函數(shù)調(diào)用時,可以根據(jù)重配置方法結(jié)構(gòu)體獲取記錄函數(shù)對應(yīng)的調(diào)用接口,調(diào)用所述記錄函數(shù)對所述待監(jiān)測行為的行為信息進行記錄,使應(yīng)用程序的行為透明化、可見化。
[0066]進一步地,用戶可以根據(jù)記錄的待監(jiān)測行為的行為信息,對應(yīng)用程序的行為進行分析,確定應(yīng)用程序的行為是否是安全的,進而確定所述應(yīng)用程序是否安全。
【附圖說明】
[0067]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0068]圖1是本發(fā)明第一實施例中一種應(yīng)用程序的行為監(jiān)測方法的流程圖;
[0069]圖2是本發(fā)明第二實施例中一種應(yīng)用程序的行為監(jiān)測方法的流程圖;
[0070]圖3是本發(fā)明第三實施例中一種用于實現(xiàn)所述應(yīng)用程序的行為監(jiān)測方法的沙箱的結(jié)構(gòu)不意圖;<