化。
[0020]進(jìn)一步地,所述的步驟f中,在Windows操作系統(tǒng)中,所述數(shù)據(jù)結(jié)構(gòu)為eprocess結(jié)構(gòu)體中vadroot字段指向的結(jié)構(gòu)體,在Linux操作系統(tǒng)中,所述數(shù)據(jù)結(jié)構(gòu)為task_struct結(jié)構(gòu)體中mm字段指向結(jié)構(gòu)體;所述f步驟中獲取的進(jìn)程信息數(shù)據(jù)結(jié)構(gòu)是某個(gè)或某幾個(gè)進(jìn)程的結(jié)構(gòu)體,也可以是當(dāng)前所有進(jìn)程的結(jié)構(gòu)體;如果是當(dāng)前所有進(jìn)程的結(jié)構(gòu)體,則無(wú)需約定進(jìn)程名稱。所述結(jié)構(gòu)體名稱隨著系統(tǒng)版本更迭發(fā)生變化。
[0021]進(jìn)一步地,所述步驟a、所述步驟b、所述步驟c及所述步驟d四個(gè)步驟的順序在步驟e之前進(jìn)行任意更換步驟順序。
[0022]實(shí)施例二
參照?qǐng)D2,示出了根據(jù)本申請(qǐng)實(shí)施例二的一種實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法,管理域是指類型二中虛擬化引擎依賴的操作系統(tǒng),
包括如下步驟:
a.獲取需要分析程序的符號(hào)信息;
b.約定待通信進(jìn)程名稱、通信使用協(xié)議、魔數(shù)以及標(biāo)記位置; C.為虛擬機(jī)中需要通信的進(jìn)程開(kāi)辟一段獨(dú)立內(nèi)存空間,作為通信緩存區(qū);在所述獨(dú)立內(nèi)存空間的標(biāo)記位置寫入b步驟約定的魔數(shù),之后虛擬機(jī)輪詢通信緩存區(qū),根據(jù)約定通信協(xié)議讀寫該緩存區(qū);
d.管理域進(jìn)程利用類型二中虛擬化引擎依賴的操作系統(tǒng)獲取虛擬機(jī)內(nèi)存和寄存器原始數(shù)據(jù);
e.管理域進(jìn)程利用符號(hào)信息分析獲取的虛擬機(jī)內(nèi)存和寄存器信息,從原始數(shù)據(jù)中提取出虛擬機(jī)操作系統(tǒng)或應(yīng)用程序中變量的數(shù)值、結(jié)構(gòu)體內(nèi)容以及函數(shù)地址;
f.管理域進(jìn)程在虛擬機(jī)語(yǔ)義信息中找到保存需要通信進(jìn)程信息的數(shù)據(jù)結(jié)構(gòu),搜索所述數(shù)據(jù)結(jié)構(gòu),找到用于描述所述進(jìn)程獨(dú)立內(nèi)存空間信息的數(shù)據(jù)結(jié)構(gòu);
g.管理域進(jìn)程根據(jù)f步驟中獲取的數(shù)據(jù)結(jié)構(gòu),搜索所述進(jìn)程中每個(gè)獨(dú)立內(nèi)存空間,檢查每個(gè)獨(dú)立內(nèi)存空間內(nèi)標(biāo)記位置是否有魔數(shù);如果標(biāo)記位置有魔數(shù),則判定所述獨(dú)立內(nèi)存空間為通信緩存區(qū),利用該緩存區(qū)和約定的通信協(xié)議讀寫數(shù)據(jù)。
[0023]進(jìn)一步地,所述的步驟a中,所述符號(hào)信息是指可執(zhí)行文件中變量、結(jié)構(gòu)體或函數(shù)與內(nèi)存地址或可執(zhí)行文件偏移地址的對(duì)應(yīng)關(guān)系。
[0024]進(jìn)一步地,所述的步驟b中,所述通信使用協(xié)議為任意公開(kāi)或私有的通信協(xié)議;所述魔數(shù)是指一個(gè)或多個(gè)事先定義好的數(shù)值,所述標(biāo)記位置是指用于寫入和讀取魔數(shù)的位置,用于標(biāo)記某一獨(dú)立內(nèi)存空間是否為通信用緩存區(qū)。
[0025]進(jìn)一步地,所述的步驟c中,在Windows操作系統(tǒng)中,所述每個(gè)獨(dú)立內(nèi)存空間用一個(gè)VAD結(jié)構(gòu)體標(biāo)識(shí),在Linux操作系統(tǒng)中,所述每個(gè)獨(dú)立內(nèi)存空間用一個(gè)VMA結(jié)構(gòu)體標(biāo)識(shí)。所述結(jié)構(gòu)體名稱隨著系統(tǒng)版本更迭發(fā)生變化。
[0026]進(jìn)一步地,所述的步驟f中,在Windows操作系統(tǒng)中,所述數(shù)據(jù)結(jié)構(gòu)為eprocess結(jié)構(gòu)體中vadroot字段指向的結(jié)構(gòu)體,在Linux操作系統(tǒng)中,所述數(shù)據(jù)結(jié)構(gòu)為task_struct結(jié)構(gòu)體中mm字段指向結(jié)構(gòu)體;所述f步驟中獲取的進(jìn)程信息數(shù)據(jù)結(jié)構(gòu)是某個(gè)或某幾個(gè)進(jìn)程的結(jié)構(gòu)體,也可以是當(dāng)前所有進(jìn)程的結(jié)構(gòu)體;如果是當(dāng)前所有進(jìn)程的結(jié)構(gòu)體,則無(wú)需約定進(jìn)程名稱。所述結(jié)構(gòu)體名稱隨著系統(tǒng)版本更迭發(fā)生變化。
[0027]進(jìn)一步地,所述步驟a、所述步驟b、所述步驟c及所述步驟d四個(gè)步驟的順序在步驟e之前進(jìn)行任意更換步驟順序。
[0028]以上對(duì)本申請(qǐng)所提供的一種實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了實(shí)施例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
【主權(quán)項(xiàng)】
1.一種實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法,其特征在于,包括如下步驟: a.獲取需要分析程序的符號(hào)信息; b.約定待通信進(jìn)程名稱、通信使用協(xié)議、魔數(shù)以及標(biāo)記位置; c.為虛擬機(jī)中需要通信的進(jìn)程開(kāi)辟一段獨(dú)立內(nèi)存空間,作為通信緩存區(qū);在所述獨(dú)立內(nèi)存空間的標(biāo)記位置寫入b步驟約定的魔數(shù),之后虛擬機(jī)輪詢通信緩存區(qū),根據(jù)約定通信協(xié)議讀寫所述通信緩存區(qū); d.管理域進(jìn)程利用虛擬化引擎或操作系統(tǒng)提供的程序接口獲取虛擬機(jī)內(nèi)存和寄存器原始數(shù)據(jù); e.管理域進(jìn)程利用符號(hào)信息分析獲取的虛擬機(jī)內(nèi)存和寄存器信息,從原始數(shù)據(jù)中提取出虛擬機(jī)操作系統(tǒng)或應(yīng)用程序中變量的數(shù)值、結(jié)構(gòu)體內(nèi)容以及函數(shù)地址; f.管理域進(jìn)程在虛擬機(jī)語(yǔ)義信息中找到需要通信進(jìn)程的信息的數(shù)據(jù)結(jié)構(gòu),保存所述數(shù)據(jù)結(jié)構(gòu),搜索所述數(shù)據(jù)結(jié)構(gòu),找到用于描述所述進(jìn)程獨(dú)立內(nèi)存空間信息的數(shù)據(jù)結(jié)構(gòu); g.管理域進(jìn)程根據(jù)f步驟中獲取的數(shù)據(jù)結(jié)構(gòu),搜索所述進(jìn)程中每個(gè)獨(dú)立內(nèi)存空間,檢查每個(gè)獨(dú)立內(nèi)存空間內(nèi)標(biāo)記位置是否有魔數(shù);如果標(biāo)記位置有魔數(shù),則判定所述獨(dú)立內(nèi)存空間為通信緩存區(qū),利用所述通信緩存區(qū)和約定的通信協(xié)議讀寫數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法,其特征在于,所述的步驟a中,所述符號(hào)信息是指可執(zhí)行文件中變量、結(jié)構(gòu)體或函數(shù)與內(nèi)存地址或可執(zhí)行文件偏移地址的對(duì)應(yīng)關(guān)系。
3.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法,其特征在于,所述的步驟b中,所述通信使用協(xié)議為任意公開(kāi)或私有的通信協(xié)議;所述魔數(shù)是指一個(gè)或多個(gè)事先定義好的數(shù)值,所述標(biāo)記位置是指用于寫入和讀取魔數(shù)的位置,用于標(biāo)記某一獨(dú)立內(nèi)存是否為通信用緩存區(qū)。
4.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法,其特征在于,所述的步驟c中,在Windows操作系統(tǒng)中,所述獨(dú)立內(nèi)存空間用一個(gè)VAD結(jié)構(gòu)體標(biāo)識(shí),在Linux操作系統(tǒng)中,所述獨(dú)立內(nèi)存空間用一個(gè)VMA結(jié)構(gòu)體標(biāo)識(shí)。
5.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法,其特征在于,所述的步驟f中,在Windows操作系統(tǒng)中,所述數(shù)據(jù)結(jié)構(gòu)為eprocess結(jié)構(gòu)體中vadroot字段指向的結(jié)構(gòu)體,在Linux操作系統(tǒng)中,所述數(shù)據(jù)結(jié)構(gòu)為task_struct結(jié)構(gòu)體中mm字段指向結(jié)構(gòu)體。
6.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法,其特征在于,所述結(jié)構(gòu)體名稱隨著系統(tǒng)版本更迭發(fā)生變化。
7.根據(jù)權(quán)利要求5所述的實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法,其特征在于,所述結(jié)構(gòu)體名稱隨著系統(tǒng)版本更迭發(fā)生變化。
8.根據(jù)權(quán)利要求1至7中任一權(quán)利要求所述的實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法,其特征在于,所述步驟a、所述步驟b、所述步驟c及所述步驟d四個(gè)步驟的順序在步驟e之前進(jìn)行任意更換步驟順序。
【專利摘要】一種實(shí)現(xiàn)虛擬機(jī)與管理域進(jìn)程間通信的方法,主要采用類型一虛擬化中的特權(quán)虛擬機(jī)或類型二中虛擬化引擎依賴的操作系統(tǒng)獲取虛擬機(jī)內(nèi)存和寄存器原始數(shù)據(jù);管理域進(jìn)程利用符號(hào)信息分析獲取虛擬機(jī)內(nèi)存和寄存器信息,從原始數(shù)據(jù)中提取出虛擬機(jī)操作系統(tǒng)或應(yīng)用程序中變量的數(shù)值、結(jié)構(gòu)體內(nèi)容以及函數(shù)地址等語(yǔ)義信息,用于描述該進(jìn)程內(nèi)存空間信息的數(shù)據(jù)結(jié)構(gòu);管理域進(jìn)程根據(jù)獲取的數(shù)據(jù)結(jié)構(gòu),檢查內(nèi)存空間內(nèi)標(biāo)記位置是否有魔數(shù);如果標(biāo)記位置有魔數(shù),則判定該內(nèi)存空間為通信緩存區(qū),利用該緩存區(qū)和約定的通信協(xié)議讀寫數(shù)據(jù)。本發(fā)明的有益效果在于:本發(fā)明可以在沒(méi)有聯(lián)通網(wǎng)絡(luò)的情況下,實(shí)現(xiàn)安全軟件與惡意軟件無(wú)法感知或管控的虛擬機(jī)和管理域的進(jìn)程間通信。
【IPC分類】G06F9-455
【公開(kāi)號(hào)】CN104850451
【申請(qǐng)?zhí)枴緾N201510246642
【發(fā)明人】楊華, 陽(yáng)曉宇, 黨艷平, 陳紅逵
【申請(qǐng)人】北京北信源軟件股份有限公司
【公開(kāi)日】2015年8月19日
【申請(qǐng)日】2015年5月15日