謝 鑫 馬 凌 陳 亮
(湖南信息學(xué)院 湖南 長沙 410151)
一種基于虛擬機(jī)Handler動態(tài)加解密的軟件保護(hù)方法及實(shí)現(xiàn)
謝 鑫 馬 凌 陳 亮
(湖南信息學(xué)院 湖南 長沙 410151)
考慮到Handler序列為逆向分析者的重點(diǎn)攻擊對象。針對Handler指令序列的內(nèi)存轉(zhuǎn)儲分析以及起始和終止點(diǎn)的斷點(diǎn)分析,提出一種基于虛擬機(jī)Handler動態(tài)加解密的軟件保護(hù)方法,在基于虛擬機(jī)的軟件保護(hù)方法上,增加加密和解密代碼模塊,并將所有Handler進(jìn)行加密保存。當(dāng)程序執(zhí)行到某個Handler時,先將加密過的Handler進(jìn)行解密并執(zhí)行,執(zhí)行完成后再次對其進(jìn)行加密,直到所有Handler序列執(zhí)行結(jié)束。實(shí)驗(yàn)和分析表明:該方法能夠有效防止攻擊者對于Handler的起始和終止位置進(jìn)行斷點(diǎn)調(diào)試分析和內(nèi)存轉(zhuǎn)儲分析。
逆向分析 虛擬機(jī)保護(hù) 動態(tài)加密和解密 內(nèi)存轉(zhuǎn)儲 斷點(diǎn)調(diào)試
隨著現(xiàn)代社會的快速發(fā)展,軟件技術(shù)也得以不斷更新,新開發(fā)出來的軟件產(chǎn)品應(yīng)用于人們?nèi)粘I畹母鱾€領(lǐng)域,同時產(chǎn)生了如反匯編、反編譯、動態(tài)斷點(diǎn)調(diào)試和內(nèi)存轉(zhuǎn)儲分析等眾多程序理解方法[1]。這些方法不僅可以用于分析軟件的安全性和維護(hù)軟件功能,同時可以用來對軟件進(jìn)行逆向分析,分析軟件中的關(guān)鍵算法和核心數(shù)據(jù),并結(jié)合篡改、移植和重構(gòu)等方法構(gòu)造盜版軟件。最后通過拷貝、郵件、論壇和即時通信工具等方式進(jìn)行傳播,獲取非法經(jīng)濟(jì)利益。
為了抵御針對軟件核心數(shù)據(jù)和關(guān)鍵代碼的逆向分析,防止軟件中的核心模塊被惡意利用,軟件加密[2-3]、軟件水印[4]、代碼混淆[5]和防篡改[6]技術(shù)等相繼被提出。而基于虛擬機(jī)的保護(hù)技術(shù)為軟件保護(hù)領(lǐng)域近些年來對抗軟件逆向分析和破解的新技術(shù),其為代碼混淆技術(shù)的延伸和增強(qiáng),也為軟件保護(hù)領(lǐng)域研究的熱點(diǎn)方向?,F(xiàn)有對于虛擬機(jī)保護(hù)的研究主要有:Shi等采用兩種方式比較了基于棧架構(gòu)和寄存器架構(gòu)虛擬機(jī)之間的異同,分析了兩類虛擬機(jī)的代碼量和運(yùn)行時間[7]。為了平衡性能開銷和保護(hù)強(qiáng)度,房鼎益等將扭曲變換的思想引入到虛擬機(jī)保護(hù)之中,通用模塊采用低強(qiáng)度保護(hù),核心模塊采用高強(qiáng)度保護(hù)[8]。王懷軍等利用寄存器輪轉(zhuǎn)思想從虛擬機(jī)上下文出發(fā)對虛擬機(jī)進(jìn)行強(qiáng)度提升,并在其虛擬機(jī)保護(hù)框架中引入反調(diào)試指令[9]。接著為了抵御累計(jì)經(jīng)驗(yàn)攻擊,其又引入路徑多樣性的方法對虛擬機(jī)進(jìn)行保護(hù)強(qiáng)度的升級[10-11]。楊明等分析了單虛擬機(jī)原理,提出多重虛擬機(jī)嵌套保護(hù)軟件的方法。這種保護(hù)使得攻擊者必須要完全分析清楚前一層虛擬機(jī),才能對下一層嵌套的虛擬機(jī)進(jìn)行分析,但這種方法給虛擬機(jī)引入了極大的時間開銷[12]。謝鑫等人從代碼并行化和虛擬機(jī)多樣化的角度提出了一種軟件保護(hù)方法。該方法使得攻擊者需要分析不同虛擬機(jī)的機(jī)制和并行代碼片斷才能分析得到受保護(hù)代碼的語義[13]。之后又從Handler序列多樣化的角度對虛擬機(jī)保護(hù)進(jìn)行了強(qiáng)度的改進(jìn)[14]。除了虛擬機(jī)保護(hù)的正向研究,部分學(xué)者還從對虛擬機(jī)的反向攻擊的角度開展研究,如Coogan等引入語義識別的思想,重點(diǎn)識別基于代碼混淆的虛擬指令[15],這些指令影響了程序的可觀察行為。Sharif等利用程序理解方法對被混淆的軟件進(jìn)行動態(tài)分析,并在虛擬機(jī)保護(hù)軟件運(yùn)行時利用模擬器記錄了指令的執(zhí)行軌跡[16]。雷遠(yuǎn)曉先將虛擬機(jī)種的Handler處理函數(shù)運(yùn)用指令追蹤的方法動態(tài)提取后,再采用程序分析方法對其進(jìn)行靜態(tài)理解,從而達(dá)到對Handler序列的還原[17]。
對于虛擬機(jī)保護(hù)的攻擊往往需要對Handler進(jìn)行語義分析和還原處理,而該過程的第一步為Handler序列的定位分析,攻擊者通常采用內(nèi)存斷點(diǎn)調(diào)試和轉(zhuǎn)儲分析的形式對Handler的起始,終止位置以及指令序列進(jìn)行分析。針對對于虛擬機(jī)Handler序列的斷點(diǎn)調(diào)試和轉(zhuǎn)儲分析,在一般虛擬機(jī)保護(hù)框架上,提出了一種基于Handler序列的動態(tài)加解密虛擬機(jī)(EDVM)保護(hù)方法以及具體實(shí)現(xiàn)過程。
根據(jù)現(xiàn)有文獻(xiàn)對虛擬機(jī)保護(hù)原理的描述可知,Handler序列為不同虛擬機(jī)保護(hù)框架的核心部分,也是逆向攻擊者對于虛擬機(jī)進(jìn)行反向攻擊的重點(diǎn)對象。針對Handler序列的還原分析往往需要通過多次斷點(diǎn)分析確定單個Handler的起始和終止位置,并通過內(nèi)存轉(zhuǎn)儲的手段分析各個Handler序列的具體語義。為了增強(qiáng)虛擬機(jī)保護(hù)強(qiáng)度,抵御上述分析手段,對虛擬機(jī)中Handler執(zhí)行過程進(jìn)行改進(jìn),采用多種加解密算法對Handler序列的執(zhí)行進(jìn)行處理。
1.1 基本思想
虛擬機(jī)保護(hù)方法在Handler序列生成時候,首先運(yùn)用多種不同的加密算法對Handler序列的字節(jié)碼進(jìn)行加密,保存不同加密算法的使用順序。當(dāng)程序運(yùn)行到第一個Handler序列時,依據(jù)加密算法使用順序選擇解密算法對Handler進(jìn)行解密,執(zhí)行完成該Handler序列時,再對其進(jìn)行加密。然后對下一個Handler進(jìn)行同樣的解密和加密處理,反復(fù)該過程,直到所有Handler序列的執(zhí)行結(jié)束?;贖andler序列的動態(tài)加解密原理如圖1所示。
圖1 基于Handler序列的動態(tài)加解密思想
1.2 實(shí)現(xiàn)步驟
基于虛擬機(jī)保護(hù)的一般框架和Handler動態(tài)加解密思想,Handler序列的動態(tài)加解密虛擬機(jī)保護(hù)具體實(shí)現(xiàn)步驟如下:
1) 構(gòu)建N種加解密算法集合S={
2) 提取虛擬機(jī)指令對應(yīng)的Handler字節(jié)碼集合SH={BH1,BH2,BH3,…,BHM}。
3) 在加密算法集合中隨機(jī)挑選加密算法函數(shù)對Handler字節(jié)碼進(jìn)行加密生成加密后的Handler字節(jié)碼集合ESH={Ei(BH1,key1),Ej(BH2,key2),Ek(BH3,key3),…,Ed(BHM,keyM)}和加密密鑰集合KSH={key1,key2,key3,…,keyM},將其保存到程序新節(jié)之中。
4) 依據(jù)Handler加解密執(zhí)行順序,修改虛擬機(jī)保護(hù)中的分派函數(shù)和Handler序列結(jié)束時的轉(zhuǎn)移指令。
5) 當(dāng)程序Handler執(zhí)行時,首先運(yùn)用對應(yīng)的解密算法和密鑰對加密Handler進(jìn)行解密處理,如Di(Ei(BH1,key1),key1)。然后執(zhí)行原始Handler序列BH1,執(zhí)行完成后再將其加密回去Ei(BH1,key1)。處理下一個加密Handler,直到Handler處理結(jié)束。
依據(jù)該實(shí)現(xiàn)步驟,原始程序和EDVM保護(hù)后的PE程序內(nèi)存布局如圖2所示。原始PE程序?yàn)闃?biāo)準(zhǔn)的Windows可執(zhí)行程序內(nèi)存布局組織結(jié)構(gòu),VM保護(hù)后的PE程序修改了待保護(hù)的匯編指令流,增加了跳轉(zhuǎn)表、虛擬指令系統(tǒng)、ByteCode等數(shù)據(jù)。而EDVM保護(hù)在VM保護(hù)的框架上添加了多種加密和解密函數(shù)模塊,并且增加了密鑰和Handler序列長度數(shù)據(jù)信息,以便于實(shí)現(xiàn)動態(tài)Handler序列的加密和解密。
圖2 原始PE和EDVM保護(hù)后PE內(nèi)存布局
為了實(shí)現(xiàn)Handler序列的動態(tài)加解密,需要對虛擬機(jī)Handler調(diào)度器進(jìn)行重新設(shè)計(jì),依據(jù)Handler的加密順序以及相應(yīng)的加密函數(shù),EDVM的Handler調(diào)度器原理如圖3所示。首先受保護(hù)程序基于初始化代碼進(jìn)入EDVM調(diào)度器中的分派函數(shù),根據(jù)調(diào)度地址表和加密函數(shù)使用順序,選擇解密函數(shù)隊(duì)Handler進(jìn)行解密操作。執(zhí)行完解密后的Handler,跳轉(zhuǎn)到相應(yīng)加密函數(shù),再次對執(zhí)行完的Handler進(jìn)行加密,該過程執(zhí)行完成后返回到分派函數(shù)重新進(jìn)行調(diào)度執(zhí)行。循環(huán)該過程,一直到所有需要執(zhí)行的Handler序列全部執(zhí)行完畢后,退出虛擬機(jī)保護(hù)框架。
圖3 EDVM調(diào)度器原理示意
2.1 強(qiáng)度分析
強(qiáng)度分析為基于EDVM虛擬機(jī)保護(hù)的程序抵御逆向攻擊者采用靜態(tài)和動態(tài)程序逆向分析方法的能力。未經(jīng)過改進(jìn)的虛擬機(jī)所有Handler指令序列都以明文的形式保存在被保護(hù)程序中新增加的節(jié)里,攻擊者通過內(nèi)存斷點(diǎn)、轉(zhuǎn)儲和反匯編分析,能夠準(zhǔn)確地分析Handler指令序列的語義。而基于Handler加解密的虛擬機(jī)保護(hù)方法,使得所有Handler指令序列只有在將要執(zhí)行的時候才以明文的形式加載在內(nèi)存中。通過內(nèi)存轉(zhuǎn)儲分析,每次只能獲取單個解密后的Handler指令序列,其他Handler指令序列都以加密數(shù)據(jù)形式保存在內(nèi)存中。此種方式可有效抵御程序執(zhí)行時的Handler轉(zhuǎn)儲分析。
對于未經(jīng)過改進(jìn)的虛擬機(jī)的Handler序列分析,可以通過在Handler的起始和終止位置進(jìn)行斷點(diǎn)設(shè)置,多次執(zhí)行、追蹤和分析Handler指令序列的運(yùn)行軌跡。若基于EDVM保護(hù),在Handler指令序列解密后對其起始和終止位置進(jìn)行斷點(diǎn)設(shè)置。再次加載程序時,由于Handler指令序列的加密保存,無法在加密情況下對Handler指令序列的起始和終止位置進(jìn)行斷點(diǎn)設(shè)置,需要Handler完全解密后才能對相關(guān)指令進(jìn)行斷點(diǎn)設(shè)置。該方式在一定程度上防止了斷點(diǎn)調(diào)試分析。
采用多種加密函數(shù)對不同的Handler進(jìn)行處理,若要靜態(tài)分析所有的Handler指令序列,則需要獲取相關(guān)密鑰,并對不同的加解密函數(shù)進(jìn)行逆向分析。相比未經(jīng)過改進(jìn)的虛擬機(jī)保護(hù),大大提升了分析難度。
2.2 開銷分析
開銷分析主要包括原始受保護(hù)程序應(yīng)用Handler動態(tài)加解密虛擬保護(hù)后的時間和空間開銷?;贓DVM保護(hù)和原虛擬機(jī)的程序,其所增加的時間開銷為對所有執(zhí)行Handler序列的加密和解密的時間開銷。若原始代碼經(jīng)過虛擬機(jī)保護(hù)后執(zhí)行Handler1,Handler2,…,Handlern,而基于Handler動態(tài)加解密的虛擬機(jī)保護(hù)則對其中的Handler1,Handler2,…,Handleri采用E1和D1進(jìn)行加解密,Handleri+1,…,Handlerj,采用E2和D2進(jìn)行加解密,Handlerj+1,…,Handlern采用E3和D3進(jìn)行加解密。若T為加解密時間,則時間增加了:T(E1(Handler1))+T(D1(Handler1))+…+T(E1(Handleri))+T(D1(Handleri))+T(E2(Handleri+1))+T(D2(Handleri+1))+…+T(E2(Handlerj))+T(D3(Handlerj))+T(E3(Handlerj+1))+T(D3(Handleri+1))+…+T(E3(Handlern))+T(D3(Handlern))。
基于Handler動態(tài)加密和解密的空間開銷主要包含在以下幾個部分,如圖 2所示。增加了多種加密和解密函數(shù)模塊,用于加解密的密鑰和Handler指令序列大小數(shù)據(jù)。設(shè)單個加密密鑰占k大小程序空間,單個Handler指令序列大小數(shù)據(jù)占d大小程序空間。S表示加解密函數(shù)模塊所占程序空間,則空間增長S(E1)+S(D1)+…+S(E3)+S(D3)+n×(k+d)。
本文的試驗(yàn)環(huán)境的基本配置如下:采用的處理器為Intel(R) Core(TM) 2 CPU 1.86 GHz,程序運(yùn)行的系統(tǒng)為XP Professional 5.1.2600 SP3,運(yùn)行的環(huán)境為VS 2008。在公開其源代碼的虛擬機(jī)上[18],實(shí)現(xiàn)了一個基于EDVM保護(hù)原型驗(yàn)證系統(tǒng),對插入、希爾、快速、和冒泡四款排序程序進(jìn)行了相關(guān)實(shí)驗(yàn)和分析。
3.1 內(nèi)存代碼對比分析
使用開源輕量級虛擬機(jī)VM和基于Handler動態(tài)加解密虛擬機(jī)EDVM分別對四款基準(zhǔn)程序進(jìn)行保護(hù),其中EDVM的加解密函數(shù)模塊采用簡單的xor加解密方式進(jìn)行實(shí)現(xiàn),生成相應(yīng)保護(hù)后的PE程序。采用二進(jìn)制動態(tài)調(diào)試工具OllyDbg對其進(jìn)行反匯編分析,對采用VM和EDVM保護(hù)后的希爾排序程序進(jìn)行分別分析。兩者的分派函數(shù)如圖4所示,VM的分派函數(shù)直接根據(jù)跳轉(zhuǎn)地址表跳轉(zhuǎn)到Handler中執(zhí)行,而EDVM的分派函數(shù)則需要首先根據(jù)密鑰,解密數(shù)據(jù)大小和解密函數(shù)地址跳轉(zhuǎn)到解密函數(shù)模塊,基于解密代碼解密需要執(zhí)行的Handler序列。然后再根據(jù)Handler地址表跳轉(zhuǎn)到解密后的Handler進(jìn)行執(zhí)行,執(zhí)行完成后跳轉(zhuǎn)到加密函數(shù)進(jìn)行執(zhí)行,如圖5所示,最終返回到分派函數(shù)。提取VM和EDVM中的VBegin虛擬指令進(jìn)行對比分析,如圖6(左)所示,其為實(shí)現(xiàn)VBegin虛擬指令的x86匯編指令序列,圖6(右)為經(jīng)過加密后的VBegin虛擬指令,在沒有進(jìn)行解密時無法直接對VBegin虛擬指令的語義進(jìn)行分析。
圖4 基于VM(左)和EDVM(右)保護(hù)的PE程序分派函數(shù)
圖5 基于EDVM保護(hù)的加密(左)和解密(右)函數(shù)模塊
圖6 基于VM(左)和EDVM(右)保護(hù)的VBegin指令Handler函數(shù)序列
3.2 時間和空間開銷對比和分析
使用開源輕量級虛擬機(jī)VM、虛擬機(jī)CV、VMP和基于Handler動態(tài)加解密虛擬機(jī)EDVM分別對四款基準(zhǔn)程序進(jìn)行保護(hù)。其中CV類型參數(shù)為TIGER32 (White) VM,VMP的編譯參數(shù)設(shè)置為虛擬,EDVM的加解密函數(shù)包含TEA、RC4、BlowFish和Xor四種加解密算法。在EDVM中隨機(jī)運(yùn)用四種加解密算法對虛擬機(jī)中的除分派函數(shù)和堆棧平衡檢查函數(shù)的所有Handler序列進(jìn)行加密,并在程序執(zhí)行的過程中動態(tài)加解密。
設(shè)有4組每組500個隨機(jī)數(shù)的基準(zhǔn)測試數(shù)據(jù),運(yùn)用基準(zhǔn)測試程序?qū)ζ溥M(jìn)行排序,虛擬機(jī)保護(hù)前后程序大小為表1所示。可以發(fā)現(xiàn)由于四種加解密函數(shù)模塊、加解密密鑰和Handler長度數(shù)據(jù)的寫入保護(hù)程序,基于EDVM保護(hù)的程序相比基于VM保護(hù)的程序空間增長了40 KB左右,而商業(yè)級虛擬機(jī)CV和VMP保護(hù)由于其中的Handler數(shù)目比VM和EDVM數(shù)量要多,保護(hù)后程序的空間開銷大大增長。
表1 虛擬機(jī)保護(hù)前后程序大小 KB
執(zhí)行原始程序和應(yīng)用不同虛擬機(jī)保護(hù)后的程序,測量其執(zhí)行時間可以發(fā)現(xiàn)由于EDVM引入了多樣化Handler的動態(tài)加解密技術(shù),在執(zhí)行每一條虛擬機(jī)指令時都要進(jìn)行Handler的解密、執(zhí)行和加密。該種方式能夠防止程序在執(zhí)行過程中對于Handler完整指令數(shù)據(jù)的轉(zhuǎn)儲分析,但卻較大地增加了程序的運(yùn)行時間,尤其是對包含多次循環(huán)執(zhí)行的排序程序。具體時間開銷如表2所示,采用Handler動態(tài)加解密的虛擬機(jī)保護(hù)的程序,運(yùn)行時間將大幅度增加,因此需要考慮保護(hù)強(qiáng)度和性能開銷平衡的問題。一般來說,采用EDVM只對少量核心代碼進(jìn)行保護(hù),否則將產(chǎn)生較大的時間開銷。
表2 虛擬機(jī)保護(hù)前后運(yùn)行時間 ms
3.3 不同虛擬機(jī)保護(hù)程序的信息比較和分析
分析不同虛擬機(jī)保護(hù)后的程序,其中Handler數(shù)目、序列狀態(tài)和新增數(shù)據(jù)如表3所示。可知商業(yè)級虛擬機(jī)軟件CV和VMP中虛擬指令對應(yīng)的Handler數(shù)目較多,而對于輕量級虛擬機(jī)VM和基于VM改進(jìn)的動態(tài)加解密EDVM中的Handler數(shù)目較少。CV、VMP和VM虛擬機(jī)保護(hù)中的Handler為非加密明文指令序列,在程序執(zhí)行過程中直接進(jìn)行執(zhí)行。動態(tài)加解密EDVM虛擬機(jī)保護(hù)中的Handler為加密密文數(shù)據(jù),在程序執(zhí)行過程中通過解密后才能執(zhí)行。由于CV、VMP和VM基于虛擬機(jī)保護(hù)一般性實(shí)現(xiàn)框架,保護(hù)中程序新增的數(shù)據(jù)為跳轉(zhuǎn)表、虛擬指令系統(tǒng)和字節(jié)碼序列。而由于EDVM需要實(shí)現(xiàn)Handler序列的動態(tài)加解密,則向程序增加了多種加解密函數(shù)模塊、加解密密鑰數(shù)據(jù)和用于Handler加解密的長度信息。
表3 不同虛擬機(jī)保護(hù)后程序的信息比較
本文針對Handler的內(nèi)存斷點(diǎn)分析和轉(zhuǎn)儲分析,對輕量級虛擬VM進(jìn)行改進(jìn),提出一種基于虛擬機(jī)Handler動態(tài)加解密的軟件保護(hù)方法和具體實(shí)現(xiàn),提升了Handler序列對于靜態(tài)反匯編、內(nèi)存斷點(diǎn)和內(nèi)存轉(zhuǎn)儲的分析難度,提升了利用虛擬機(jī)框架對軟件進(jìn)行保護(hù)的安全強(qiáng)度。然而不足的是對Handler進(jìn)行動態(tài)加解密需在程序中添加加解密函數(shù)、密鑰、Handler長度等信息,給程序引入了一定的空間開銷,而且由于Handler的動態(tài)加解密執(zhí)行,使得程序的時間開銷有較大的增長,該方法需要進(jìn)一步的優(yōu)化和完善。
[1] 薛芳芳,房鼎益,王懷軍,等.基于攻擊目的的軟件攻擊分類方法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2015,32(2):283-287.
[2] Kleber S,Unterstein F,Matousek M,et al.Secure Execution Architecture based on PUF-driven Instruction Level Code Encryption[J].IACR Cryptology ePrint Archive,2015,651:1-26.
[3] 高琦,劉克勝,常超,等.基于自修改字節(jié)碼的Android軟件保護(hù)技術(shù)研究[J].計(jì)算機(jī)應(yīng)用與軟件,2016,33(4):230-234.
[4] 王葉茂,車生兵.軟件水印及其研究現(xiàn)狀概述[J].計(jì)算機(jī)應(yīng)用與軟件,2015,32(4):6-10.
[5] 宣以廣,周華.基于字符熵的JavaScript代碼混淆自動檢測方法[J].計(jì)算機(jī)應(yīng)用與軟件,2015,32(1):309-312.
[6] 馬巧梅,胡沙沙,陳夠喜.基于完整性驗(yàn)證的軟件防篡改方案[J].計(jì)算機(jī)應(yīng)用與軟件,2016,33(8):312-314,318.
[7] Shi Y H,Kevin C,Anton E,et al.Virtual machine showdown:stack versus registers[J].ACM Transactions on Architecture and Code Optimization,2008,4(4):1-36.
[8] Fang D,Gao L,Tang Z,et al.A Software Protection Framework Based on Thin Virtual Machine Using Distorted Encryption[C]//International Conference on Network Computing and Information Security.IEEE,2011:266-271.
[9] Wang H J,Fang D Y,Li G H.NISLVMP:improved virtual machine-based software protection[C]//Proceedings of Ninth International Conference on Computational Intelligence and Security,2013:479-483.
[10] Wang H,Fang D,Li G,et al.TDVMP:Improved Virtual Machine-Based Software Protection with Time Diversity[C]//ACM Sigplan on Program Protection and Reverse Engineering Workshop.ACM,2014:1-9.
[11] 王懷軍,房鼎益,董浩,等.白盒環(huán)境中防動態(tài)攻擊的軟件保護(hù)方法研究[J].電子學(xué)報(bào),2014,42(3):529-537.
[12] 楊明,黃劉生.一種采用嵌套虛擬機(jī)的軟件保護(hù)方案[J].小型微型計(jì)算機(jī)系統(tǒng),2011,32(2):237-241.
[13] 謝鑫,劉粉林,蘆斌,等.一種基于代碼并行化和虛擬機(jī)多樣化的軟件保護(hù)方法[J].小型微型計(jì)算機(jī)系統(tǒng),2015,36(11):2588-2593.
[14] 謝鑫,劉粉林,蘆斌,等.Handler混淆增強(qiáng)的虛擬機(jī)保護(hù)方法[J].計(jì)算機(jī)工程與應(yīng)用,2016,52(15):146-152.
[15] Kevin C,Gen L,Saumya D.Deobfuscation of virtualization-obfuscated software a semantics-based approach[C]//Proceedings of the 18th ACM conference on Computer and Communications Security,2011:275-284.
[16] Sharif M,Lanzi A,Giffin J,et al.Automatic reverse engineering of malware emulators[C]//Proceedings of 30th IEEE Symposium on Security and Privacy,2009:94-109.
[17] 雷遠(yuǎn)曉.針對虛擬機(jī)軟件保護(hù)的攻擊方法研究[D].西北大學(xué),2013.
[18] 段鋼.加密與解密[M].3版.電子工業(yè)出版社,2008:471-490.
ASOFTWAREPROTECTIONMETHODBASEDONDYNAMICENCRYPTIONANDDECRYPTIONOFVIRTUALMACHINEHANDLERSANDITSIMPLEMENTATION
Xie Xin Ma Ling Cheng Liang
(HunanInstituteofInformationTechnology,Changsha410151,Hunan,China)
Virtual instruction handlers are the core targets for reverse analyzers to be attacked. Aiming at memory dump and breakpoint analysis for handler sequences, a software protection method based dynamic encryption and decryption of virtual machine handlers is proposed. On the basis of framework of virtual machine protection, code modules of encryption and decryption are embedded into the framework, and all encrypted handlers are restored. When a Handler is executed, the encrypted Handler is decrypted and executed. After execution, it is encrypted again until all Handler sequences are finished. Experiments and analysis showed that the method effectively prevented attackers from memory dumping and breakpoint debugging.
Reverse analysis Virtual machine protection Dynamic encryption and decryption Memory dump Breakpoint debug
2017-02-07。謝鑫,講師,主研領(lǐng)域:軟件安全,軟件保護(hù)。馬凌,副教授。陳亮,高工。
TP3
A
10.3969/j.issn.1000-386x.2017.12.060