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