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