摘 要:本文以基于虛擬機(jī)的軟件保護(hù)為研究對(duì)象,首先針對(duì)基于虛擬機(jī)的軟件保護(hù)基本工作原理進(jìn)行了簡(jiǎn)要分析,進(jìn)而分別從虛擬機(jī)編譯器設(shè)計(jì)方案、代碼混淆技術(shù)設(shè)計(jì)方案這兩個(gè)方面入手,針對(duì)基于虛擬機(jī)的軟件保護(hù)設(shè)計(jì)方案加以了詳細(xì)分析與闡述,上述問題旨在于引起各方特別關(guān)注與重視。
關(guān)鍵詞:虛擬機(jī) 軟件保護(hù) 工作原理 設(shè)計(jì)方案 分析
中圖分類號(hào):TP309 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2013)05(a)-0002-02
軟件產(chǎn)品有著極為突出的技術(shù)密集型特征。在軟件產(chǎn)品的開發(fā)過程當(dāng)中,往往需要消耗大量的人力及物力,可以說,軟件產(chǎn)品的開發(fā)與生成是一個(gè)極為復(fù)雜的過程。然而,軟件產(chǎn)品在生成之后,卻極容易被復(fù)制。正是由于這一特點(diǎn),使得軟件產(chǎn)品市場(chǎng)面臨著極為猖獗的盜版影響。從這一角度上來說,如何實(shí)現(xiàn)對(duì)軟件的有效保護(hù),這一問題備受各方人員的特別關(guān)注與重視。特別是對(duì)于本文所研究的建立在虛擬機(jī)基礎(chǔ)之上的軟件保護(hù)而言,設(shè)計(jì)過程當(dāng)中需要重點(diǎn)關(guān)注對(duì)包括虛擬機(jī)編譯器的設(shè)計(jì)方案、以及代碼混淆技術(shù)的應(yīng)用,以保障其應(yīng)用質(zhì)量的有效性。本文試針對(duì)以上相關(guān)問題做詳細(xì)分析與說明。
1 基于虛擬機(jī)的軟件保護(hù)工作原理分析
在現(xiàn)階段技術(shù)條件支持下,按照功能進(jìn)行劃分,可以將軟件保護(hù)技術(shù)劃分為兩種類型:(1)以防止未經(jīng)授權(quán)非法使用為目的的軟件保護(hù)技術(shù);(2)以防止非法篡改、或者重利用為目的的軟件保護(hù)技術(shù)。其中,前者主要建立在登陸密碼、或者是序列號(hào)的前提下所實(shí)現(xiàn),而后者則主要是建立在虛擬機(jī)基礎(chǔ)之上所實(shí)現(xiàn)。虛擬機(jī)從本質(zhì)上來說屬于存儲(chǔ)程序計(jì)算機(jī),常規(guī)運(yùn)行狀態(tài)下主要涉及到的取指指令、解碼指令、執(zhí)行指令這幾個(gè)方面。具體的操作方式在于:將軟件程序當(dāng)中的某一特定部分重新編譯成為僅能夠?yàn)樽远x虛擬機(jī)所識(shí)別與讀取的代碼,將這部分代碼的執(zhí)行指令交由虛擬機(jī),以此種方式防止代碼執(zhí)行出現(xiàn)逆向運(yùn)算的問題。
在的那個(gè)錢技術(shù)條件支持下,一個(gè)完整的虛擬機(jī)主要由以下幾個(gè)部分所構(gòu)成:(1)虛擬CPU處理環(huán)境;(2)虛擬機(jī)編譯器;(3)虛擬機(jī)解釋器;(4)虛擬機(jī)指令系統(tǒng)。在上述部分的共同作用之下,虛擬機(jī)主要實(shí)現(xiàn)的技術(shù)包括以下幾類:(1)硬件層:主要應(yīng)用對(duì)整個(gè)操作系統(tǒng)的執(zhí)行,例如VM Ware一類;(2)硬件/軟件層:主要應(yīng)用于對(duì)特定部分操作的執(zhí)行,例如殺毒軟件一類;(3)匯編代碼層:主要在對(duì)特定部分操作指令進(jìn)行執(zhí)行的過程當(dāng)中,實(shí)現(xiàn)對(duì)程序代碼的有效保護(hù)。結(jié)合上述分析不難發(fā)現(xiàn):基于對(duì)虛擬機(jī)軟件保護(hù)基本工作原理的分析,在有關(guān)虛擬機(jī)軟件保護(hù)的技術(shù)的研究過程當(dāng)中,需要建立在基本保護(hù)思想的基礎(chǔ)之上,突出虛擬機(jī)編譯器設(shè)計(jì)以及代碼混淆技術(shù)設(shè)計(jì)的重要性。
2 基于虛擬機(jī)的軟件保護(hù)思想分析
基于虛擬機(jī)的軟件保護(hù)思想的核心在于:通過設(shè)定獨(dú)立運(yùn)行指令系統(tǒng)的方式,將現(xiàn)實(shí)生活中不存在的計(jì)算機(jī)匯編器以及調(diào)試器設(shè)備構(gòu)造出來,使其能夠完成對(duì)重要代碼的編寫作業(yè)。具體的軟件保護(hù)設(shè)計(jì)框架結(jié)構(gòu)示意圖(見圖1)。按照這一流程來說,在應(yīng)用虛擬機(jī)進(jìn)行軟件保護(hù)的過程當(dāng)中,首先需要通過編譯的方式,將源程序轉(zhuǎn)化成為適宜于本地虛擬機(jī)的機(jī)器指令,結(jié)合預(yù)先設(shè)定的保護(hù)對(duì)象,選取相應(yīng)的保護(hù)代碼,并將其傳輸至虛擬機(jī)當(dāng)中,經(jīng)過編譯器的指令轉(zhuǎn)換處理,再在虛擬解釋器當(dāng)中嵌入相應(yīng)的代碼,最終輸出程序。整個(gè)基于虛擬機(jī)軟件保護(hù)的優(yōu)勢(shì)在于:能夠?qū)ΡWo(hù)殼中絕大部分重要代碼進(jìn)行編寫作業(yè),且最大限度的避免保護(hù)注冊(cè)算法出現(xiàn)逆向問題,提高軟件保護(hù)的安全性。
3 基于虛擬機(jī)的軟件保護(hù)關(guān)鍵問題分析
3.1 虛擬機(jī)編譯器的設(shè)計(jì)方案分析
按照工作運(yùn)行狀態(tài)的差異性來劃分,虛擬機(jī)主要可以分為(1)基于寄存器的虛擬機(jī)、以及(2)基于堆棧的虛擬機(jī)這兩種類型。這兩者之間在工作運(yùn)行狀態(tài)上的差異性主要受到其提供指令集體系結(jié)構(gòu)的差異性。結(jié)合軟件保護(hù)的基本要求來看,現(xiàn)階段,在眾多的軟件保護(hù)環(huán)境當(dāng)中,以Windows操作系統(tǒng)的應(yīng)用最為普遍。該操作系統(tǒng)環(huán)境下所應(yīng)用的指令集體系結(jié)構(gòu)均表現(xiàn)為X86結(jié)構(gòu)。此種架構(gòu)設(shè)計(jì)模式不但能夠顯著控制編碼的復(fù)雜程度,從而防止編譯器運(yùn)行過程中過函數(shù)因出現(xiàn)跳轉(zhuǎn)偏移問題而需要進(jìn)行的修復(fù)工作,同時(shí)還能夠?qū)崿F(xiàn)對(duì)整個(gè)虛擬機(jī)模擬功能的完善,確保其對(duì)各種異常運(yùn)行問題的處理。按照此種方式來說,對(duì)于虛擬機(jī)編譯器的設(shè)計(jì)僅需要建立在X86結(jié)構(gòu)指令的基礎(chǔ)之上完成即可。
3.2 虛擬機(jī)代碼混淆技術(shù)設(shè)計(jì)方案分析
通過對(duì)代碼混淆技術(shù)的合理應(yīng)用,能夠使基于虛擬機(jī)的軟件保護(hù)性能得到顯著的增強(qiáng)與完善,其中所涉及到的主要內(nèi)容包括:(1)代碼亂序;(2)代碼替換。其中,前者能夠使軟件保護(hù)行為實(shí)施過程當(dāng)中所對(duì)應(yīng)的逆向工程難度增大,確保虛擬機(jī)殼能夠重新獲取相對(duì)于軟件保護(hù)程序的控制權(quán);而后者則能夠?qū)崿F(xiàn)對(duì)軟件內(nèi)存部分的有效保護(hù)。在諸多的代碼混淆技術(shù)當(dāng)中,又以花指令技術(shù)的應(yīng)用作為頻繁。在虛擬機(jī)代碼混淆技術(shù)的設(shè)計(jì)過程當(dāng)中,可行的方案包括以下兩個(gè)方面:第一,在功能條件保持恒定的狀態(tài)下,針對(duì)下一程序A進(jìn)行轉(zhuǎn)換,轉(zhuǎn)化后的所得程序?yàn)锳’,而A’可實(shí)現(xiàn)A程序所有的功能,但在安全性方向,A’>A。借助于此種方式,實(shí)現(xiàn)整個(gè)基于虛擬機(jī)軟件保護(hù)系統(tǒng)對(duì)逆向工程的對(duì)抗;第二,在程序代碼當(dāng)中預(yù)制包括方程求解代碼、以及矩陣生成代碼在內(nèi)的數(shù)據(jù)。在軟件保護(hù)的過程當(dāng)中,將這部分預(yù)制代碼作為花指令下的隨機(jī)生成代碼,干擾并混淆破解人員的事先,在不影響源代碼功能的前提下,提高破解難度與時(shí)間。
4 結(jié)語
通過本文以上分析需要認(rèn)識(shí)到:在現(xiàn)代意義上的計(jì)算機(jī)安全研究領(lǐng)域當(dāng)中,虛擬機(jī)技術(shù)的研究與應(yīng)用備受各方關(guān)注與重視。因此,針對(duì)虛擬機(jī)實(shí)際運(yùn)行情況,引入軟件保護(hù)概念,這一問題是至關(guān)重要的。總而言之,本文針對(duì)有關(guān)基于虛擬機(jī)的軟件保護(hù)研究與設(shè)計(jì)過程中所涉及到的相關(guān)問題做出了簡(jiǎn)要分析與說明,希望能夠?yàn)榻窈笙嚓P(guān)研究與實(shí)踐工作的開展提供一定的參考與幫助。
參考文獻(xiàn)
[1] 陳彬,肖儂,蔡志平,等.基于優(yōu)化的COW虛擬塊設(shè)備的虛擬機(jī)按需部署機(jī)制[J].計(jì)算機(jī)學(xué)報(bào),2009,32(10):1915-1926.
[2] 鈕艷,鄭衍松,楊春,等.GOSBMB:基于客戶操作系統(tǒng)行為的虛擬機(jī)內(nèi)存均衡方法[J].電子學(xué)報(bào),2011,39(9):2178-2183.
[3] 莊威,桂小林,林建材,等.云環(huán)境下基于多屬性層次分析的虛擬機(jī)部署與調(diào)度策略[J].西安交通大學(xué)學(xué)報(bào),2013,47(2):28-32,130.
[4] 敖琪,蔡嵩松,王劍,等.基于硬件cache鎖機(jī)制的Java虛擬機(jī)即時(shí)編譯器優(yōu)化[J].計(jì)算機(jī)研究與發(fā)展,2012,49(z1):185-190.
[5] 任怡,劉曉建,管劍波,等.一種支持在線遷移的虛擬機(jī)間快速通信方法[J].解放軍理工大學(xué)學(xué)報(bào):自然科學(xué)版,2012,13(5):511-515.