一種客戶(hù)端應(yīng)用程序管理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種客戶(hù)端應(yīng)用程序管理方法。
【背景技術(shù)】
[0002]當(dāng)越來(lái)越多的智能移動(dòng)終端以網(wǎng)絡(luò)客戶(hù)端的形式接入到互聯(lián)網(wǎng)時(shí),安全問(wèn)題都會(huì)出現(xiàn)在智能移動(dòng)終端中,尤其是應(yīng)用程序安全。雖然為了保護(hù)應(yīng)用程序和數(shù)據(jù),操作系統(tǒng)在設(shè)計(jì)上結(jié)合系統(tǒng)層安全機(jī)制和由組件間通信確定的安全框架,但仍然存在針對(duì)應(yīng)用程序文件的危險(xiǎn)行為和系統(tǒng)漏洞。當(dāng)前對(duì)移動(dòng)終端安全采用的普遍做法是利用智能移動(dòng)終端安全程序來(lái)檢測(cè)應(yīng)用程序的惡意行為。但這類(lèi)安全程序只是作為應(yīng)用程序被安裝在客戶(hù)端上,并且會(huì)受到處理器和存儲(chǔ)設(shè)備的限制,無(wú)法保證客戶(hù)端的系統(tǒng)安全,也無(wú)法防止安全產(chǎn)品程序本身被卸載和刪改。
[0003]因此,針對(duì)相關(guān)技術(shù)中所存在的上述問(wèn)題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0004]為解決上述現(xiàn)有技術(shù)所存在的問(wèn)題,本發(fā)明提出了一種客戶(hù)端應(yīng)用程序管理方法,包括:
[0005]采用組件獨(dú)立架構(gòu)從虛擬機(jī)外部對(duì)應(yīng)用程序進(jìn)行檢測(cè),其中包括檢測(cè)應(yīng)用程序的進(jìn)程、內(nèi)核模塊以及動(dòng)態(tài)鏈接庫(kù),對(duì)每個(gè)組件單獨(dú)進(jìn)行檢測(cè),在進(jìn)行安全檢測(cè)之前,確定被檢測(cè)對(duì)象在內(nèi)存中的位置,完成從虛擬地址到機(jī)器地址的轉(zhuǎn)換,并根據(jù)獲取的內(nèi)存內(nèi)容來(lái)計(jì)算哈希值,
[0006]所述虛擬機(jī)監(jiān)控器直接運(yùn)行在物理硬件層之上,所述虛擬機(jī)監(jiān)控器擁有對(duì)其它虛擬機(jī)的創(chuàng)建、管理和銷(xiāo)毀的權(quán)限,直接負(fù)責(zé)對(duì)底層物理內(nèi)存的管理,保證虛擬機(jī)之間的隔離性并對(duì)外提供了訪問(wèn)虛擬機(jī)的相關(guān)接口;
[0007]采用間歇性檢測(cè)機(jī)制對(duì)特定的內(nèi)存進(jìn)行訪問(wèn),通過(guò)接口的方式獲得虛擬機(jī)內(nèi)部的信息而對(duì)虛擬機(jī)監(jiān)控器進(jìn)行修改。
[0008]優(yōu)選地,所述虛擬機(jī)監(jiān)控器對(duì)CPU、內(nèi)存、網(wǎng)絡(luò)、塊設(shè)備完成虛擬化操作,在虛擬化層中,包括負(fù)責(zé)管理虛擬機(jī)的主機(jī)和多個(gè)虛擬機(jī),該方法還包括:
[0009]接收用戶(hù)輸入的指定要檢測(cè)的虛擬機(jī)名稱(chēng)、被檢測(cè)對(duì)象、虛擬機(jī)的操作系統(tǒng)類(lèi)型參數(shù),調(diào)用地址轉(zhuǎn)換器訪問(wèn)特定的虛擬機(jī)內(nèi)存,將內(nèi)存數(shù)據(jù)傳遞給安全檢測(cè)程序,通過(guò)地址轉(zhuǎn)換器獲得虛擬機(jī)中CPU的狀態(tài)值、虛擬機(jī)地址的長(zhǎng)度,同時(shí)訪問(wèn)虛擬機(jī)的地址映射接口,在取得信息之后根據(jù)具體的虛擬機(jī)CPU架構(gòu),進(jìn)行地址轉(zhuǎn)換工作,由此可以獲得虛擬機(jī)的物理地址;
[0010]根據(jù)得到的虛擬機(jī)內(nèi)存內(nèi)容,計(jì)算程序、模塊以及動(dòng)態(tài)鏈接庫(kù)的哈希值,并將這些值保存在一個(gè)檢測(cè)列表中,檢測(cè)過(guò)程利用定時(shí)檢測(cè)或?qū)崟r(shí)檢測(cè),得到的檢測(cè)值與原來(lái)保存在檢測(cè)列表中的值進(jìn)行比較,從而發(fā)現(xiàn)進(jìn)程是否發(fā)生改變。
[0011]優(yōu)選地,所述虛擬機(jī)監(jiān)控器的內(nèi)存管理使用3種地址空間,包括機(jī)器地址、物理地址和虛擬地址,其中機(jī)器地址只有監(jiān)控器可以訪問(wèn),物理地址由虛擬機(jī)操作系統(tǒng)進(jìn)行管理,虛擬地址是應(yīng)用程序所能訪問(wèn)的地址,虛擬機(jī)所能看到的是物理地址,并不能看到底層的機(jī)器地址,虛擬機(jī)監(jiān)控器負(fù)責(zé)把虛擬地址轉(zhuǎn)換為物理地址,同時(shí)維護(hù)由物理地址到機(jī)器地址轉(zhuǎn)換的表,然后將虛擬機(jī)的物理頁(yè)復(fù)制到被授權(quán)用戶(hù)可訪問(wèn)的空間,再進(jìn)行定位,所述程序在內(nèi)存中的位置為程序在虛擬機(jī)物理內(nèi)存頁(yè)的偏移位置。
[0012]優(yōu)選地,所述物理地址到機(jī)器地址轉(zhuǎn)換過(guò)程進(jìn)一步包括,首先讀取內(nèi)核符號(hào)表,將內(nèi)核符號(hào)對(duì)應(yīng)的虛擬地址轉(zhuǎn)換為物理地址,獲取虛擬機(jī)寄存器中存儲(chǔ)的頁(yè)式層次結(jié)構(gòu)的物理基地址,通過(guò)逐級(jí)轉(zhuǎn)換找到物理地址,得到物理頁(yè)框號(hào),在主機(jī)管理域中,由虛擬機(jī)監(jiān)控器的底層訪問(wèn)控制接口負(fù)責(zé)對(duì)機(jī)器地址上的內(nèi)容進(jìn)行訪問(wèn),根據(jù)物理頁(yè)框號(hào)將機(jī)器地址上的內(nèi)容映射到主機(jī)能夠訪問(wèn)的內(nèi)存空間,從而得到虛擬機(jī)內(nèi)存的內(nèi)容,然后對(duì)相應(yīng)的內(nèi)容進(jìn)行安全檢測(cè)。
[0013]優(yōu)選地,所述檢測(cè)應(yīng)用程序的進(jìn)程、內(nèi)核模塊以及動(dòng)態(tài)鏈接庫(kù),進(jìn)一步包括:
[0014]只要程序有被加載到內(nèi)存當(dāng)中,則對(duì)其進(jìn)行安全檢測(cè),將檢測(cè)得到的哈希值保存到檢測(cè)列表中,如果同一個(gè)程序在不同的時(shí)刻出現(xiàn)不同的檢測(cè)值,則判斷該程序遭到修改;
[0015]對(duì)于應(yīng)用程序的進(jìn)程,操作系統(tǒng)采用鏈?zhǔn)浇Y(jié)構(gòu)將系統(tǒng)中正在運(yùn)行的進(jìn)程和已加載的模塊連接起來(lái),因此通過(guò)這種結(jié)構(gòu)獲取到被檢測(cè)對(duì)象所在的物理內(nèi)存區(qū)域,再結(jié)合地址轉(zhuǎn)換機(jī)制得到被檢測(cè)對(duì)象的硬件內(nèi)存的內(nèi)容;
[0016]每個(gè)進(jìn)程由進(jìn)程控制塊管理相關(guān)信息,所有進(jìn)程通過(guò)雙向鏈表連接起來(lái),通過(guò)遍歷該鏈表得到系統(tǒng)中運(yùn)行的進(jìn)程,進(jìn)程控制塊根據(jù)運(yùn)行進(jìn)程的名字字段到該進(jìn)程控制塊起始地址的偏移獲得進(jìn)程的名稱(chēng);進(jìn)程控制塊中有指向內(nèi)存管理結(jié)構(gòu)的指針,如果本次運(yùn)行時(shí)進(jìn)程的代碼段與上次運(yùn)行時(shí)不同,說(shuō)明進(jìn)程對(duì)應(yīng)的程序發(fā)生了變化;
[0017]對(duì)于應(yīng)用程序的模塊,所述模塊被讀入內(nèi)存后,由內(nèi)核進(jìn)行模塊的初始化操作,每個(gè)模塊都有一個(gè)雙向鏈表,鏈接到前一個(gè)模塊和后一個(gè)模塊,還包括一個(gè)名字字段,表示模塊的名字,通過(guò)遍歷雙向鏈表可得到系統(tǒng)所加載的模塊,再根據(jù)名字字段到該模塊起始地址的偏移,便訪問(wèn)到某個(gè)特定的模塊內(nèi)容,模塊在內(nèi)存中有代碼區(qū)域和數(shù)據(jù)區(qū)域,而數(shù)據(jù)區(qū)域有只讀數(shù)據(jù)和可讀寫(xiě)數(shù)據(jù),通過(guò)計(jì)算不可變的區(qū)域即代碼區(qū)域和只讀數(shù)據(jù)區(qū)域得到哈希值來(lái)判斷程序是否被修改;
[0018]對(duì)于應(yīng)用程序的動(dòng)態(tài)鏈接庫(kù),在調(diào)用動(dòng)態(tài)鏈接庫(kù)的函數(shù)時(shí),操作系統(tǒng)搜索動(dòng)態(tài)鏈接庫(kù)在磁盤(pán)上的存放位置,將其加載到虛擬內(nèi)存區(qū)域,每個(gè)虛擬內(nèi)存區(qū)域可分為可讀、可寫(xiě)、可執(zhí)行、可共享區(qū)域,將動(dòng)態(tài)鏈接庫(kù)代碼段的存放位置標(biāo)記為可執(zhí)行區(qū)域,通過(guò)計(jì)算其哈希值來(lái)檢測(cè)動(dòng)態(tài)鏈接庫(kù)。
[0019]本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
[0020]本發(fā)明提出了一種應(yīng)用程序的處理方法,通過(guò)虛擬機(jī)在移動(dòng)終端中保證應(yīng)用程序的完整性和終端系統(tǒng)安全。
【附圖說(shuō)明】
[0021]圖1是根據(jù)本發(fā)明實(shí)施例的客戶(hù)端應(yīng)用程序管理方法的流程圖。
【具體實(shí)施方式】
[0022]下文與圖示本發(fā)明原理的附圖一起提供對(duì)本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書(shū)限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對(duì)本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無(wú)這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書(shū)實(shí)現(xiàn)本發(fā)明。
[0023]本發(fā)明的一方面提供了一種客戶(hù)端應(yīng)用程序管理方法。圖1是根據(jù)本發(fā)明實(shí)施例的客戶(hù)端應(yīng)用程序管理方法流程圖。
[0024]本發(fā)明的安全控制系統(tǒng)將TPM模型運(yùn)用到了移動(dòng)終端中,確保了從OS開(kāi)始加載到狀態(tài)反饋啟動(dòng)結(jié)束全過(guò)程未被刪改。安全控制系統(tǒng)中包括安全模塊,是為了增強(qiáng)操作系統(tǒng)安全而設(shè)計(jì)的輕量級(jí)通用訪問(wèn)控制框架,它通過(guò)在內(nèi)核系統(tǒng)調(diào)用邏輯中插入一系列hook函數(shù),回調(diào)第三方安全模塊實(shí)現(xiàn),而這些第三方的安全模塊決定了是否允許訪問(wèn)或進(jìn)行其他操作。利用了安全模塊框架得到每個(gè)可執(zhí)行文件、庫(kù)文件和內(nèi)核文件在加載進(jìn)系統(tǒng)之前的檢測(cè)值,通過(guò)這些檢測(cè)值來(lái)保持系統(tǒng)安全狀態(tài)。由于移動(dòng)操作系統(tǒng)采用了經(jīng)過(guò)剪裁的帶有安全模塊的內(nèi)核,所以安全控制系統(tǒng)在內(nèi)核中移植了安全檢測(cè)架構(gòu),并擴(kuò)展了對(duì)應(yīng)用程序進(jìn)行安全檢測(cè)的功能。
[0025]本發(fā)明的安全控制系統(tǒng)將安全引導(dǎo)模塊存儲(chǔ)在移動(dòng)終端的OTP中。從OTP的安全引導(dǎo)模塊的引導(dǎo)程