謝 鑫,梁衛(wèi)芳,陳 敏
(湖南信息學(xué)院 計(jì)算機(jī)科學(xué)與工程學(xué)院,湖南 長沙 410151)
現(xiàn)代社會(huì)是建立在軟件之上的,過去幾年,人工智能、大數(shù)據(jù)、5G和云計(jì)算等新興產(chǎn)業(yè)的迅猛發(fā)展,推動(dòng)了軟件產(chǎn)業(yè)快速迭代和變革。從傳統(tǒng)電腦和手機(jī)終端等個(gè)人應(yīng)用軟件,到城市管理、物聯(lián)網(wǎng)、區(qū)塊鏈、智能制造和工業(yè)控制等新興系統(tǒng)軟件,覆蓋了人們生活和工作的眾多場景,產(chǎn)生了巨大的經(jīng)濟(jì)和社會(huì)效益。軟件內(nèi)部的架構(gòu)、邏輯和算法是重要的數(shù)字資產(chǎn),在不斷變化和擴(kuò)大的網(wǎng)絡(luò)安全環(huán)境中,常常面臨惡意逆向分析和篡改、盜版分發(fā)和傳播等威脅。研發(fā)人員對軟件的安全性進(jìn)行需求分析和設(shè)計(jì),開展安全編碼和測試,進(jìn)行安全保護(hù)和運(yùn)營維護(hù),而在整個(gè)軟件生命周期內(nèi),對核心代碼和數(shù)據(jù)進(jìn)行保護(hù),成為眾多研究者應(yīng)對和解決日益提升的軟件安全性需求的重要方向。
代碼混淆技術(shù)是一種典型的保護(hù)方法,一般基于混淆策略對于軟件代碼和數(shù)據(jù)進(jìn)行等價(jià)變換以保證軟件機(jī)密性,出現(xiàn)了基于指令、函數(shù)、控制流和代碼遷移等多種代碼層面的混淆方法,也出現(xiàn)了基于數(shù)據(jù)值、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)流圖等多種數(shù)據(jù)層面的混淆方法。隨著混淆技術(shù)研究的深入,采用虛擬機(jī)(Virtual Machine,VM)框架對軟件進(jìn)行保護(hù)成了研究者的聚焦方向,如下:
虛擬機(jī)結(jié)合傳統(tǒng)代碼混淆保護(hù):基于隨機(jī)和模擬退火的指令亂序混淆算法改進(jìn)虛擬指令解釋函數(shù)(Handler);基于等價(jià)替換和亂序切分的指令序列多樣化算法改進(jìn)虛擬機(jī)Handlers模塊;基于語義等價(jià)變換和控制流混淆的具有時(shí)間多樣性的虛擬機(jī)執(zhí)行路徑混淆;基于代碼隔離的虛擬機(jī)保護(hù)技術(shù);采用花指令和指令模糊變換技術(shù)對虛擬機(jī)指令模塊強(qiáng)度進(jìn)行改進(jìn);基于基本塊混淆和多樣化虛擬環(huán)境的虛擬機(jī)保護(hù)框架改進(jìn);基于多樣化技術(shù)對虛擬指令解釋函數(shù)、虛擬指令調(diào)度器和虛擬指令集進(jìn)行處理,實(shí)現(xiàn)多虛擬機(jī)框架混淆從虛擬機(jī)操作碼到本地機(jī)器指令的映射;采用隨機(jī)化技術(shù)實(shí)現(xiàn)虛擬指令到字節(jié)碼指令的編碼和隨機(jī)化;基于多分區(qū)和隨機(jī)化映射實(shí)現(xiàn)虛擬指令到字節(jié)碼映射的混淆;基于多重虛擬機(jī)嵌套的保護(hù)框架改進(jìn);基于多套虛擬機(jī)對并行代碼進(jìn)行保護(hù)。
虛擬機(jī)結(jié)合加密、防篡改、防調(diào)試技術(shù)保護(hù):基于動(dòng)態(tài)加解密技術(shù)對虛擬機(jī)框架中的虛擬指令解釋函數(shù)(Handler)模塊安全性進(jìn)行提升;基于字節(jié)碼的加解密技術(shù)對基本指令集保護(hù)力度進(jìn)行提升;基于寄存器值檢查的虛擬機(jī)防調(diào)試指令設(shè)計(jì);基于軟件哨兵和哨兵環(huán)技術(shù)的虛擬機(jī)安全指令和防篡改保護(hù)設(shè)計(jì)。
虛擬機(jī)結(jié)合多技術(shù)混合保護(hù):融合數(shù)據(jù)流混淆引擎、異常處理機(jī)制和雙進(jìn)程技術(shù)實(shí)現(xiàn)虛擬機(jī)保護(hù)的數(shù)據(jù)流和執(zhí)行流復(fù)雜化;融合控制流迭代變形、指令序列隨機(jī)切分和動(dòng)態(tài)加解密技術(shù)實(shí)現(xiàn)虛擬指令調(diào)度器(Dispatcher)模塊安全性改進(jìn);融合隨機(jī)秘鑰還原和多樣化調(diào)度器解碼的虛擬代碼折疊技術(shù)實(shí)現(xiàn)降低虛擬機(jī)代碼靜態(tài)呈現(xiàn)的數(shù)目。
上述研究工作從虛擬機(jī)框架模塊內(nèi)部、模塊間映射和框架整體角度出發(fā),并結(jié)合傳統(tǒng)混淆技術(shù)、防調(diào)試技術(shù)、防篡改技術(shù)和加密技術(shù)對虛擬機(jī)框架不斷進(jìn)行改進(jìn),在提升虛擬機(jī)保護(hù)技術(shù)的安全性方面取得了一定的成果,并呈現(xiàn)出虛擬機(jī)+混合技術(shù)的保護(hù)發(fā)展趨勢。不過大部分的工作依然聚焦于虛擬機(jī)保護(hù)的復(fù)雜性、隱蔽性或防篡改性單一維度性能的提升,而虛擬機(jī)保護(hù)的安全性體現(xiàn)又是多維度的,由于虛擬機(jī)整體框架的固定性,當(dāng)虛擬機(jī)框架內(nèi)模塊連接部分的復(fù)雜性、防篡改性或隱秘性不高的時(shí)候,容易被攻擊者定位、分析和理解,從而實(shí)現(xiàn)虛擬機(jī)整體保護(hù)框架的破解。本文針對虛擬機(jī)模塊連接復(fù)雜性、隱蔽性和防篡改性較弱的問題,提出一種多維防御混合的虛擬機(jī)保護(hù)安全性增強(qiáng)方法:首先融合ROP、指令自修改技術(shù)和指令重疊技術(shù)實(shí)現(xiàn)虛擬機(jī)框架模塊連接指令序列的隱蔽混淆,并采用多樣化和隨機(jī)化思想進(jìn)一步提升指令序列復(fù)雜性,最后采用檢測和修復(fù)雙哨兵集和三線程實(shí)現(xiàn)模塊連接的防篡改。
采用虛擬機(jī)保護(hù)框架對程序進(jìn)行保護(hù)的基本流程為:先抽取程序中的核心代碼和數(shù)據(jù),用虛擬機(jī)框架對其進(jìn)行保護(hù),然后用保護(hù)后的程序替換原始程序的核心代碼和數(shù)據(jù),并嵌入完成虛擬指令序列解釋執(zhí)行的虛擬機(jī)各個(gè)模塊。原始程序執(zhí)行時(shí)為本地代碼的順序執(zhí)行,而受虛擬機(jī)保護(hù)后的代碼,執(zhí)行流首先會(huì)被虛擬機(jī)解釋執(zhí)行框架接管,通過解釋執(zhí)行框架對于虛擬指令集進(jìn)行解釋執(zhí)行,完成所有虛擬指令執(zhí)行后,執(zhí)行流再回到原始程序中執(zhí)行。這種保護(hù)方式本質(zhì)上是在原始程序的基礎(chǔ)上構(gòu)建了一層抽象層,用抽象層的復(fù)雜性、難以理解性來對抗逆向攻擊者對于核心代碼和數(shù)據(jù)的分析和理解。而這一抽象層為基于解釋執(zhí)行邏輯的虛擬機(jī),實(shí)現(xiàn)解釋執(zhí)行的虛擬機(jī)框架由眾多模塊構(gòu)成,一般包括:字節(jié)碼集,虛擬指令解釋函數(shù)集,虛擬指令調(diào)度器,跳轉(zhuǎn)表,虛擬機(jī)上下文和虛擬機(jī)入口和出口代碼。這些模塊之間的連接一般具有穩(wěn)定的基本結(jié)構(gòu),如圖1所示。
基于虛擬機(jī)的代碼保護(hù)技術(shù)是將需要保護(hù)的可執(zhí)行代碼進(jìn)行虛擬化,運(yùn)用許多虛擬指令執(zhí)行序列來模擬被保護(hù)代碼,完成與被保護(hù)代碼相同執(zhí)行結(jié)果,從而達(dá)到目標(biāo)代碼不被輕易逆向分析和惡意篡改,典型的應(yīng)用是將基于x86匯編系統(tǒng)的可執(zhí)行代碼轉(zhuǎn)化為字節(jié)碼指令系統(tǒng)的代碼。
在使用虛擬機(jī)對目標(biāo)代碼進(jìn)行保護(hù)時(shí),先定位需要保護(hù)的關(guān)鍵代碼,然后對其進(jìn)行虛擬化,完成后去除原始代碼,并將虛擬機(jī)代碼模塊嵌入受保護(hù)程序內(nèi)部,如圖1(a)所示。受保護(hù)代碼需要執(zhí)行時(shí),首先從目標(biāo)代碼指令流切換到虛擬機(jī)保護(hù)代碼入口,完成對目標(biāo)代碼當(dāng)前執(zhí)行CPU上下文環(huán)境的保存后,運(yùn)用虛擬機(jī)調(diào)度器,跳轉(zhuǎn)表和解釋函數(shù)等虛擬機(jī)保護(hù)核心模塊,對虛擬指令序列進(jìn)行解釋執(zhí)行,執(zhí)行完所有虛擬指令序列后,先對目標(biāo)代碼指令執(zhí)行環(huán)境進(jìn)行恢復(fù),然后退出虛擬機(jī)解釋執(zhí)行框架,并進(jìn)行之后指令的執(zhí)行,如圖1(b)所示。
圖1 虛擬機(jī)保護(hù)基本框架和原理
ROP全稱為Return Oriented Programming,基本思想源于提取報(bào)刊上英文單詞中的若干字母,連接組成一句具有語義的話,后來延伸到軟件安全領(lǐng)域,是一種基于代碼復(fù)用的攻擊技術(shù)。在程序中通過對指令序列進(jìn)行ROP形式的代碼插裝,將原始指令序列轉(zhuǎn)換為以ret指令結(jié)尾的gadget形式,在程序執(zhí)行過程中,所有的gadget指令通過ret返回指令相連,最后執(zhí)行一段完成特殊功能的指令序列,如圖2所示。
圖2 ROP攻擊原理示例
指令自修改技術(shù)(Self-Modifying Code,SMC),在真正執(zhí)行程序中的某一段指令序列時(shí),程序本身存在的指令序列會(huì)對部分代碼或數(shù)據(jù)進(jìn)行修改,修改后的代碼或數(shù)據(jù)是可匯編和可執(zhí)行的。
在原始程序指令序列(,,…,)中插入指令序列(,,…,),并將原始程序指令序列中要偽裝的目標(biāo)指令序列(,,…,),用指令序列(,,…,)進(jìn)行替換,在程序?qū)嶋H運(yùn)行過程中,指令序列(,,…,)對指令序列(,,…,)進(jìn)行修改,將(,,…,) 恢復(fù)為目標(biāo)指令序列(,,…,)。
反匯編算法的假設(shè)前提為指令之間不重疊,因此指令重疊技術(shù)作為一種重要的反反匯編技術(shù),廣泛應(yīng)用于與惡意代碼混淆變形之中,用于對抗程序靜態(tài)分析。一般分為三種類型:向后重疊,向前重疊和自身中間重疊。如:設(shè)有兩條連續(xù)指令=(,,…,)和=(,,…,),緊跟隨在后執(zhí)行,且<,其中表示或指令中的一位十六進(jìn)制字節(jié)。若指令之間不重疊,則指令最后一字節(jié)一定緊跟指令第一字節(jié),連續(xù)指令和的十六進(jìn)制字節(jié)數(shù)據(jù)為(,,…,)。若-+1=,…,=,<,則說明指令末尾字節(jié)和指令的起始字節(jié)重疊,記為(,…,-,…,);若=,則表明指令末尾字節(jié)為整條指令。
軟件哨兵技術(shù)是一種用于軟件防篡改的動(dòng)態(tài)保護(hù)技術(shù),通過在軟件內(nèi)部嵌入檢測哨兵代碼和恢復(fù)哨兵代碼,形成哨兵保護(hù)網(wǎng)絡(luò),在軟件執(zhí)行過程中,檢測哨兵代碼可以對自身所負(fù)責(zé)的區(qū)域進(jìn)行完整性檢測,如果檢測到異常,恢復(fù)哨兵代碼對其進(jìn)行動(dòng)態(tài)恢復(fù)。
基于基本虛擬機(jī)保護(hù)框架,結(jié)合上述軟件防御技術(shù)基本原理,提出一種基于多維防御混合策略的虛擬機(jī)保護(hù)安全性增強(qiáng)方法,用于提升虛擬模塊連接指令序列的安全性,基本流程如下:
1)構(gòu)建基本虛擬機(jī)保護(hù)框架。
2)定位需要保護(hù)增強(qiáng)的虛擬機(jī)模塊連接指令序列。
3)混合ROP技術(shù)、SMC技術(shù)和指令重疊技術(shù)對其進(jìn)行混淆,具體步驟如下:
3.1)通過搜索和構(gòu)造結(jié)合方式獲取與需保護(hù)指令序列等價(jià)的內(nèi)存空間gadget。
3.2)生成不透明謂詞集合={,,,…,},其中為不透明謂詞。
3.3)運(yùn)用指令重疊方法對單條gadget指令序列=(,,,…-1,RET)進(jìn)行混淆,生成混淆后指令序列′=(,,,…,-1,,,,…,-1,,),其中(,,,…,-1)為新增實(shí)現(xiàn)不透明謂詞組合算式的指令序列,完成跳轉(zhuǎn)指令偏移數(shù)據(jù)的生成,可表示為二進(jìn)制序列(…),其公式如式(1)所示。跳轉(zhuǎn)指令的形式為jmp base+,base為重疊指令的基地址,其中=(…1…),其中RET指令序列的二進(jìn)制,表示為(…)。
(1)
3.4)通過指令自修改方法對指令序列′再次進(jìn)行混淆,生成混淆后的指令序列″=(,,,…,,,,,…,-1,,-1,…,-1,,,,…,-1,,),其中(,,,…,-1)為實(shí)現(xiàn)不透明謂詞組合算式的指令序列,完成跳轉(zhuǎn)指令偏移數(shù)據(jù)的生成,可表示為二進(jìn)制序列(…),其公式如式(2)所示。數(shù)據(jù)移動(dòng)指令形式為mov [base+],Data,Data為自修改指令數(shù)據(jù),base為數(shù)據(jù)移動(dòng)指令的基地址,其中可以修改非控制轉(zhuǎn)移指令成為控制轉(zhuǎn)移指令。
(2)
3.5)構(gòu)造自修改指令集合={,,,…,},對不透明謂詞組合算式指令序列(,,,…,-1)和(,,,…,-1)中包含的所有跳轉(zhuǎn)指令進(jìn)行混淆,將所有跳轉(zhuǎn)指令修改為非控制轉(zhuǎn)移指令。
4)采用指令多樣化和隨機(jī)化技術(shù)對3)結(jié)束所產(chǎn)生的指令序列進(jìn)行混淆處理。
4.1)基于等價(jià)指令替換和代碼數(shù)據(jù)互相轉(zhuǎn)換雙重策略進(jìn)行指令多樣化,如圖3(a)和(b)為基于指令替換技術(shù)的指令多樣化示意,圖3(c)為基于代碼和數(shù)據(jù)轉(zhuǎn)換的指令多樣化示意。
圖3 指令多樣化策略示例
4.2)基于多樣化指令序列和路徑隨機(jī)選擇指令構(gòu)建指令混淆網(wǎng)絡(luò)如圖4所示,其中指令序列(,,,…,1),(,,,…,2),…,(1,2,3,…,)為等價(jià)指令序列,集合{,,,…,1},{,,3,…,2},…,{1,2,3,…,}單個(gè)集合內(nèi)的每一個(gè)指令片段等價(jià)。
圖4 指令混淆網(wǎng)絡(luò)構(gòu)建
5)基于檢測和修復(fù)軟件哨兵和三線程,對虛擬機(jī)模塊連接結(jié)構(gòu)的混淆指令序列進(jìn)行保護(hù)。
5.1)基于最小覆蓋的哨兵的防篡改保護(hù)。
5.2)基于三線程的防篡改增強(qiáng)。
6)生成安全增強(qiáng)虛擬機(jī)保護(hù)框架。
Windows10家庭中文版64位操作系統(tǒng),CPU為Intel(R) Core(TM)i7-8700 CPU,內(nèi)存為16 GB,主頻為3.2 GHz。采用IDA7.2對6款測試程序進(jìn)行分析,獲取程序的大小和所包含的函數(shù)個(gè)數(shù),并采用Local Windows Debugger調(diào)試器,對各測試程序關(guān)鍵代碼段進(jìn)行分析,獲取的基本信息如表1所示。
表1 測試用例描述
首先基于虛擬機(jī)設(shè)計(jì)原則,構(gòu)建虛擬機(jī)代碼保護(hù)原型系統(tǒng)M-VM,然后運(yùn)用基于多維防御混合策略的虛擬機(jī)增強(qiáng)方法對原型系統(tǒng)M-VM進(jìn)行混淆增強(qiáng)變換,加入ROP, SMC和指令重疊技術(shù),生成M-VM,在此基礎(chǔ)上再加入多樣化和隨機(jī)化指令混淆網(wǎng)絡(luò),生成M-VM,最后加入軟件哨兵和三線程防篡改保護(hù),生成M-VM。
然后基于表 1中的測試程序,分別采用M-VM,M-VM,M-VM,M-VM以及商用軟件Code Virtualizer(CV),VMProtect(VMP)對其進(jìn)行保護(hù),其中CV版本號(hào)為3.0.8.0,使用的虛擬機(jī)類型為Tiger32 White;VMP版本號(hào)為3.5,采用默認(rèn)設(shè)置策略進(jìn)行虛擬機(jī)保護(hù)。表2為保護(hù)前后軟件大小的變化,表3為保護(hù)前后關(guān)鍵代碼指令執(zhí)行時(shí)間的變化,為了降低測試的誤差,執(zhí)行時(shí)間為20次結(jié)果的平均值。
表2 虛擬機(jī)保護(hù)前后程序大小
表3 虛擬機(jī)保護(hù)前后關(guān)鍵代碼執(zhí)行時(shí)間
兩款商用軟件具有很強(qiáng)的保護(hù)功能,測試程序經(jīng)過商業(yè)虛擬機(jī)保護(hù)軟件CV和VMP處理后,往程序中嵌入了實(shí)現(xiàn)保護(hù)功能的虛擬機(jī)保護(hù)框架,程序大小有較大幅度的增長。虛擬機(jī)原型保護(hù)系統(tǒng)M-VM由于是輕量級(jí)的功能實(shí)現(xiàn),經(jīng)過其保護(hù)的程序大小,只有小幅度的增長。在M-VM上通過增加ROP、指令折疊和自修改技術(shù)而實(shí)現(xiàn)的M-VM,其中所添加的不透明謂詞,都是代碼量小的不透明謂詞,可以發(fā)現(xiàn)其程序增長開銷不大。在M-VM基礎(chǔ)上通過引入多樣化和隨機(jī)化技術(shù)而實(shí)現(xiàn)的M-VM的每一條指令序列生成三條功能等價(jià)的指令序列,而每一條指令序列被切分為三段指令片段,進(jìn)行隨機(jī)化連接,可以發(fā)現(xiàn)M-VM相比M-VM空間有較大的增長。在M-VM基礎(chǔ)上通過引入哨兵和三線程實(shí)現(xiàn)的M-VM,添加了響應(yīng)、恢復(fù)和監(jiān)控哨兵指令序列,在嵌入哨兵的時(shí)候,盡可能嵌入PE頭的冗余空間之中,并控制了不同功能的哨兵數(shù)目,程序增長空間較小。因此從表2可得,在實(shí)際使用多維防御混合策略生成虛擬機(jī)保護(hù)框架對程序進(jìn)行保護(hù)的時(shí)候,如需控制程序的增長,需要對不透明謂詞類型和復(fù)雜程度進(jìn)行選擇,并要不斷調(diào)整多樣化和隨機(jī)化實(shí)現(xiàn)過程中的參數(shù)選擇,以平衡保護(hù)強(qiáng)度和增長程序體積。
除了空間開銷外,經(jīng)過不同虛擬機(jī)保護(hù)框架處理后程序關(guān)鍵代碼執(zhí)行時(shí)間如表3所示,經(jīng)過CV和VMP處理后,核心代碼指令序列的執(zhí)行時(shí)間有了不同程度的增長,CV整體時(shí)間開銷遠(yuǎn)大于VMP,M-VM是輕量級(jí)實(shí)現(xiàn),增長的時(shí)間開銷符合虛擬機(jī)保護(hù)框架指令膨脹的基本特點(diǎn)。在實(shí)際實(shí)驗(yàn)中,選擇了運(yùn)算速度快的不透明謂詞,M-VM相比較與M-VM增長的大部分時(shí)間為實(shí)現(xiàn)指令折疊和自修改時(shí),不透明謂詞執(zhí)行的增長時(shí)間,另外,一部分時(shí)間為實(shí)現(xiàn)ROP的執(zhí)行時(shí)間。M-VM相比M-VM增長的時(shí)間在混淆指令網(wǎng)絡(luò)中的隨機(jī)選擇指令序列,每一條指令序列生成三條功能等價(jià)的指令序列,而每一條指令序列被切分為三段指令片段,每次執(zhí)行一次混淆指令網(wǎng)絡(luò),隨機(jī)選擇指令序列執(zhí)行兩次。M-VM相比M-VM的大部分時(shí)間增長,由于測試過程中,并沒有引發(fā)篡改響應(yīng)和恢復(fù)功能,三線程保護(hù)引入了指令執(zhí)行時(shí)間的增長。因此可得,在實(shí)際使用多維防御混合策略生成虛擬機(jī)保護(hù)框架對程序進(jìn)行保護(hù)的時(shí)候,如需要控制程序時(shí)間開銷的增長,需要對不透明謂詞類型和復(fù)雜程度進(jìn)行選擇,并需要對多樣化和隨機(jī)化的參數(shù)選擇進(jìn)行擇優(yōu)選擇,以平衡保護(hù)強(qiáng)度和程序執(zhí)行時(shí)間開銷。
從表2和3可得,經(jīng)多維防御混合虛擬機(jī)保護(hù)后,程序無論在程序大小還是在運(yùn)行時(shí)間上都會(huì)有較大增長。M-VM,M-VM和M-VM保護(hù)強(qiáng)度呈階梯增強(qiáng),如果要提高其安全強(qiáng)度,可以構(gòu)造安全性更高的不透明謂詞進(jìn)行嵌入,迭代生成和構(gòu)造更多類型的ROP指令序列,等價(jià)指令序列和多樣化指令片段,運(yùn)用更復(fù)雜的方式在代碼和數(shù)據(jù)之間進(jìn)行等價(jià)轉(zhuǎn)換混淆,嵌入更多的哨兵,對線程保護(hù)進(jìn)行增強(qiáng),但這樣會(huì)使得程序的空間和時(shí)間有大幅度的增長。實(shí)際使用多維防御虛擬機(jī)框架對程序進(jìn)行保護(hù)時(shí),需要平衡安全性、可用性和所保護(hù)的核心代碼范圍。
基于多維防御混合策略的虛擬機(jī)框架增強(qiáng)方法,在現(xiàn)有虛擬機(jī)保護(hù)框架的基礎(chǔ)上,通過ROP、指令重疊和指令自修改技術(shù)組合混淆策略,增強(qiáng)了虛擬機(jī)模塊間連接代碼的隱蔽性;通過多樣化和隨機(jī)化混淆指令網(wǎng)絡(luò),增強(qiáng)了虛擬機(jī)模塊連接代碼的復(fù)雜性;通過多功能哨兵和三線程保護(hù),實(shí)現(xiàn)模塊連接的防篡改。從模塊連接的復(fù)雜性、隱蔽性和防篡改三方面進(jìn)行了安全性增強(qiáng),提升了整體框架在面對惡意攻擊者定位、分析和篡改方面的安全性能。
基于-原型虛擬機(jī)實(shí)現(xiàn)了增強(qiáng)型-,-,-虛擬機(jī)原型系統(tǒng),實(shí)驗(yàn)驗(yàn)證了方法的可行性,基于多維防御混合方法改進(jìn)的虛擬機(jī)框架,對于核心代碼和數(shù)據(jù)的保護(hù)具有更高的保護(hù)強(qiáng)度。不過,在實(shí)際應(yīng)用方法的時(shí)候,需考慮安全強(qiáng)度和保護(hù)后程序的時(shí)空開銷平衡問題,這也是下一步的工作方向。