新四季網

一種軟體程序的保護方法、裝置及系統的製作方法

2023-08-13 01:22:06 1

專利名稱:一種軟體程序的保護方法、裝置及系統的製作方法
技術領域:
本發明涉及軟體保護技術,具體來說涉及一種軟體程序的保護方法、裝 置及系統。
背景技術:
隨著經濟技術的飛速發展,軟體作為輔助工具已經深入到了各行各業當 中。軟體程序是軟體設計者和軟體編程人員智慧的結晶,軟體企業的生存和 發展是軟體產品充足供應的基礎,因而,保護軟體程序的版權,防止軟體程 序被盜版、被非法授權使用,具有很重要的現實意義。傳統的軟體程序保護措施有序列號保護、使用時間限制、軟體加殼等; 其具體實現就是在軟體程序中設置相應的功能模塊,實現相應的保護功能, 例如防拷貝功能、加密功能、限制使用時間的功能等。破解者要達到破解 軟體程序的目的,通常釆用以下兩種方式第一種方式是靜態分析技術,就是利用反編譯或反彙編技術得到源程序 清單,進而分析軟體程序的流程,了解各個模塊所完成的功能,從而通過修 改軟體程序來達到破解的目的。例如可以通過修改某模塊的判斷條件,使 相應模塊的保護功能失效,從而達到破解的目的。下面簡要介紹反編譯和反 彙編」汰術使用高級語言編寫的軟體程序需要按照運行該軟體程序的計算機的主 機系統指令集(也可稱為機器語言指令集),轉換為由一條一條的主機系統 指令(也可稱為機器語言指令)構成的機器語言代碼才能被計算機識別並執 行。通常,將轉換前的軟體程序稱為源程序,將轉換後得到的代碼稱為目標 代碼。彙編語言是一種介於高級語言與機器語言之間的低級語言,它與機器語 言相比具有便於記憶、符合人類語言表達習慣的特性,機器語言與彙編語言 之間存在幾乎——對應的映射關係。由機器語言目標代碼得到彙編語言程序的過程稱為反彙編;由機器語言目標代碼得到高級語言源程序的過程稱為反 編譯。因此,只要獲取到軟體程序的機器語言目標代碼,就能通過反彙編技 術或反編譯技術將其轉化成便於破解者理解的彙編語言程序或高級語言源 程序。上述靜態分析技術正是通過在軟體程序執行之前,獲取軟體程序的機器 語言目標代碼,然後利用反編i奪和反彙編技術來達到^5皮解的目的。第二種方式是動態分析技術,即破解者利用調試工具跟蹤軟體的運行, 了解軟體關鍵算法的流程和功能,並通過取消軟體程序的防拷貝或加密功能 等,達到破解的目的。這種方式中最重要的工具就是調試器,例如SoftICE, OllyDbg等。一方面,目前的通用計算機體系中,不存在對靜態分析技術和動態分析 技術進行防範的技術;另一方面,現有技術中存在眾多功能強大的、對應於 目前通用的主機系統指令集的調試器及相應的使用手冊,使得破解者能夠非 常容易地實施動態分析技術,而且,大部分軟體開發人員對於主機系統指令 比較熟悉,可以很方便地對軟體程序進行分析,導致現有軟體程序保護措施 無法對軟體程序提供真正有效的保護。發明內容有鑑於此,本發明提供一種軟體程序保護的方法、裝置及系統,以對軟 件程序的安全性提供有效的保護。為達到上述目的,本發明實施例的技術方案具體是這樣實現的 一種軟體程序保護方法,預先設置虛擬系統指令集,由虛擬系統指令集中 的虛擬系統指令構成的代碼段為虛擬系統代碼段;並構造能夠識別所述虛擬系 統指令集的軟體虛擬系統,所述軟體虛擬系統運行於計算機上,所述軟體虛擬系統是所述軟體程序的運行環境,該方法還包括A、 按照所述虛擬系統指令集將所述軟體程序中需要保護的程序原始碼轉 換為虛擬系統指令,得到包含虛擬系統代碼段的目標代碼;B、 在執行所述目標代碼時,對於虛擬系統代碼段,由所述軟體虛擬系統 將其按照所述計算機的主機系統指令集解析為機器語言指令並執行。進一步地,在所述軟體虛擬系統運行之前或運行過程中,可以包括 判斷所述軟體虛擬系統是否已經與信息安全硬體設備綁定,如果已經綁定, 則運行軟體虛擬系統;否則,終止軟體虛擬系統的運行。 所述步驟A可以包括Al、確定軟體程序中需要保護的程序源'代碼;A2、讀取所述軟體程序原始碼,將所讀取到的需要保護的程序原始碼按照 虛擬系統指令集轉換為對應的虛擬系統指令,得到對應的虛擬系統代碼段;將 所讀取到的除所述需要保護的程序原始碼之外的程序原始碼按照主機系統指令 集轉換為對應的機器語言指令,得到對應的機器語言代碼段;A3、得到由虛擬系統代碼段和機器語言代碼段構成的目標代碼。進一步地,在執行步驟A2所述將所讀取到的需要保護的程序原始碼按照 虛擬系統指令集轉換為對應的虛擬系統指令時,可以使用數據加密變換算法對 所讀取到的程序原始碼中的tt據進行加密變換;在執行步驟B所述解析時,可以進一步使用與所述數據加密變換算法對應 的數據解密變換算法對所述虛擬系統指令中的數據進行解密變換。所述預先設置的虛擬系統指令集可以包括自定義的指令集。一種指令轉換器,包括程序原始碼讀取模塊,用於讀取並判斷程序原始碼,將需要保護的程序源 代碼發送給虛擬指令轉換模塊;虛擬指令轉換模塊,用於將來自於程序原始碼讀取模塊的程序原始碼轉換為對應的虛擬系統指令,並發送給目標代碼生成模塊;目標代碼生成模塊,用於將來自於虛擬指令轉換模塊的虛擬系統指令放在目標代碼中與所述需要保護的程序原始碼對應的目標代碼的位置。較佳地,所述程序原始碼讀取模塊,還可以用於將除所述需要保護的程序原始碼之外的程序原始碼發送給機器指令轉換模塊;所述指令轉換器中進一步可以包括機器指令轉換模塊,用於將來自於程 序原始碼讀取模塊的程序原始碼轉換為對應的機器語言指令,並發送給目標代 碼生成模塊;所述目標代碼生成模塊,還可以用於將來自於機器指令轉換模塊的機器語 言指令放在目標代碼中與所述除所述需要保護的程序原始碼之外的程序原始碼 對應的目標代碼的位置。所述虛擬指令轉換模塊,還可以用於使用數據加密變換算法對來自於程序 原始碼讀取^f莫塊的程序原始碼中的數據進行加密變換。一種軟體虛擬系統,包括虛擬代碼接口模塊,用於讀入包含虛擬系統代碼段的目標代碼,當識別到 所述目標代碼中的虛擬系統代碼段時,通知虛擬代碼執行模塊;所述虛擬系統 代碼段為由預先設置的虛擬系統指令集中的虛擬系統指令構成的代碼段;虛擬代碼執行模塊,用於根據虛擬代碼接口模塊的通知,從所述虛擬系統 代碼段中讀入虛擬系統指令,按照運行所述軟體虛擬系統的計算機的主機系統 指令集將所述虛擬系統指令解析為機器語言指令,並執行所述解析得到的機器 語言指令。進一步地,所述軟體虛擬系統中可以包括判斷模塊,用於在虛擬代碼接口模塊讀入目標代碼之前或虛擬代碼執行模 塊的執行過程中,判斷軟體虛擬系統是否已經與信息安全硬體設備綁定,如果 沒有綁定則終止軟體虛擬系統運行,如果已經綁定則由虛擬代碼接口模塊或虛 擬代碼執行模塊繼續執行。所述虛擬代碼接口模塊,還可以用於將虛擬系統代碼段的位置、大小通知 虛擬代碼執行模塊中的代碼讀取子模塊,並用於接收來自於代碼執行子模塊的 執行結果;代碼讀取子模塊,可以用於根據虛擬代碼接口模塊通知的虛擬系統代碼段的位置,從目標程序的相應位置讀取虛擬系統指令,發送給代碼解析子模塊; 並用於判斷是否已讀取完虛擬系統代碼段的指令,在已讀取完時,通知代碼執 行子模塊;代碼解析子模塊,可以用於按照運行所述軟體虛擬系統的計算機的主機系 統指令集將來自於代碼讀取子模塊的虛擬系統指令解析為機器語言指令,並發 送給代碼執行子模塊;代碼執行子模塊,可以用於執行來自於代碼解析子模塊的機器語言指令, 並根據來自於代碼讀取子模塊的通知,向虛擬代碼接口模塊返回所述虛擬系統 代碼段的執行結果。所述虛擬代碼接口模塊,還可以用於將數據變換算法、數據變換密鑰通知 代碼解析子模塊;所述代碼解析子模塊,還可以用於根據虛擬代碼接口模塊通知的數據變 換算法和數據變換密鑰對來自於代碼讀取子模塊的虛擬系統指令中的數據 進行解密變換,並將解密變換後得到的數據發送給代碼執行子模塊。由上述技術方案可見,本發明所提供的軟體程序保護方案的實現過程 是預先設置虛擬系統指令集,並構造能夠識別該虛擬系統指令集的軟體虛 擬系統為軟體程序提供運行環境,然後將軟體程序中需要保護的部分程序源 代碼按照所述虛擬系統指令集轉換為虛擬系統指令,並在執行包含虛擬系統 代碼段的目標代碼時,由所述軟體虛擬系統將虛擬系統代碼段轉換為相應的 機器語言指令執行。所述軟體虛擬系統在運行前以及運行的過程中,還可以 隨時判斷是否與信息安全硬體設備綁定,即沒有信息安全硬體設備,所述 軟體虛擬系統無法運行。如此,可以為軟體程序提供另一層保護。可見,在本發明技術方案中,軟體程序中需要保護的部分程序原始碼是 先被轉換成僅能被軟體虛擬系統識別的虛擬系統指令,然後由軟體虛擬系統 轉換成相應的機器語言指令執行的。如此, 一方面,目標代碼中包含虛擬系 統代碼段,而破解者並不知道本發明所釆取的虛擬系統指令集,也就無從知道所述虛擬系統代碼段與編寫軟體程序所採用的高級語言之間的對應關係, 當破解者採用靜態分析技術分析目標代碼時,無法反彙編或反編譯出正確的源程序;另一方面,虛擬系統代碼段不是直接運行於實際硬體主機的CPU 上,而是由軟體虛擬系統轉換為機器語言指令執行的,由於軟體虛擬系統本 身的地位也等同於一個軟體程序,軟體虛擬系統本身的執行過程也具有一定 的複雜性,因此,如果想採用動態分析技術來破解被保護的軟體程序,首先 需要成功分析出本發明軟體虛擬系統的執行流程,並從軟體虛擬系統的執行 流程區分出被保護軟體程序的執行流程,其難度非常大;然後,還需要破解 本發明預先設置的虛擬系統指令集,這大大增加了破解的難度;最後一方面, 軟體虛擬系統在運行前以及運行過程中,隨時可以判斷是否與信息安全硬體 設備綁定,如果沒有綁定則軟體虛擬系統無法運行,因而沒有信息安全硬體 設備的破解者將無法使用軟體虛擬系統,也就不可能對運行時的軟體虛擬系 統進行動態跟蹤。由此可見,採用本發明技術方案使得破解者很難對被保護軟體程序實施 反向工程,因此,可以較好地防備破解軟體程序必須採用的兩種途徑,從而 可以在很大程度上保護軟體程序的安全性。


圖1為本發明軟體程序的保護方法的流程示意圖;圖2示出了圖1所示步驟102中指令轉換的流程示意圖;圖3為本發明指令轉換器的組成結構示意圖;圖4為本發明軟體虛擬系統的組成結構示意圖。
具體實施方式
為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖並舉 實施例,對本發明作進一步詳細說明。本發明實施例的主要思想是預先設置虛擬系統指令集,並構造能夠識別該虛擬系統指令集的軟體虛擬系統為軟體程序提供運行環境,然後將軟體 程序中需要保護的部分程序按照所述虛擬系統指令集轉換為虛擬系統指令, 並在執行包含虛擬系統代碼段的目標代碼時,由所述軟體虛擬系統將虛擬系 統代碼段轉換為相應的機器語言指令執行。下面結合附圖詳細說明本發明技 術方案的實現過程。圖1為本發明軟體程序的保護方法的流程示意圖。參見圖1,該方法包括步驟10L預先設置虛擬系統指令集,並構造能夠識別所述虛擬系統指 令集的軟體虛擬系統。本發明所述虛擬系統指令集是一套指令的集合,與機器語言指令集等其 他指令集類似,每一條指令均存在確切的語義,因此,該集合中的指令與高 級語言程序中的指令之間存在一定的對應關係,相應地,該集合中的指令與 機器語言指令之間也存在一定的對應關係。也就是說可以按照該虛擬系統指令集,將用高級語言編寫的軟體程序中的每一條 或幾條語句轉換為對應的虛擬系統指令,這些轉換後的虛擬系統指令組合在 一起,就構成了與軟體程序對應的虛擬系統代碼。在本發明後續描述中,將 由虛擬系統指令集中的虛擬系統指令構成的一段代碼稱為虛擬系統代碼段。當然,也可以按照主機系統指令集進行虛擬系統指令與主機系統指令之 間的轉換,即將虛擬系統代碼中的每一條或幾條指令轉換為對應的主機系 統指令。假設本發明所述軟體程序和軟體虛擬系統運行於目前最通用的計算機 系統——x86系統下,那麼,較佳地,可以自定義一套不同於x86主機系統 指令集的指令集作為本發明所述虛擬系統指令集。當然也可以釆用現有技術 中已經存在、但是較為不通用的指令集,只要不同於運行軟體程序和軟體虛 擬系統的計算機的主機系統指令集即可。現有技術中存在一些不如x86主機 系統通用的計算機系統,相應地,存在一些不如x86主機系統指令集通用的指令集,針對這些主機系統指令集很難獲取到通用的調試工具,因此,即使採用這些指令集作為本發明所述虛擬系統指令集,也能增加破解的難度。本步驟所構造的軟體虛擬系統是被保護軟體程序的運行環境,也就是說被保護軟體程序並不是如通常情況那樣,直接運行於主機CPU上,而 是運行於軟體虛擬系統中,其所有功能都將轉化為軟體虛擬系統的相應操作 執行,因此,對主機CPU來說,只能感知到軟體虛擬系統的執行,無法直 接感知被保護軟體程序的執行。本發明所述軟體虛擬系統其實質上可以看作 是運行於主作業系統之上的一個虛擬作業系統,其地位等同於運行於計算機 上的普通軟體程序。所構造的軟體虛擬系統需要能夠識別本發明預先設置的虛擬系統指令 集,如此,才能明確每一個虛擬系統指令的語義,並將其解析為相應的機器 語言指令並l丸4亍。步驟102:進行指令轉換按照預先設置的虛擬系統指令集將軟體程序 中需要保護的程序原始碼轉換為虛擬系統指令,得到包含虛擬系統代碼段的 目標代碼。本步驟中,將按照虛擬系統指令集轉換軟體程序中需要保護的部分或全 部程序原始碼,得到對應的虛擬系統代碼段,並按照軟體虛擬系統所在的計 算機的主機系統指令集轉換軟體程序中除需要保護的程序原始碼之外的程 序原始碼,得到對應的機器語言代碼段,最終得到的目標代碼中將包含虛擬 系統代碼段和機器語言代碼段。在執行所述代碼轉換的過程中,可以使用數據加密變換算法對程序源代 碼中的數據進行加密變換,相應的,在後續解析、執行時,需要使用相應的 數據解密變換算法和解密密鑰對虛擬系統指令中的數據進行解密變換。可以構造相應的指令轉換器來實現本步驟所述轉換。該指令轉換器可以 作為與本發明所述軟體虛擬系統配套的軟體程序,獨立運行於計算機上,也 可以作為本發明所述軟體虛擬系統的 一個功能模塊,運行於軟體虛擬系統 中。步驟103:判斷軟體虛擬系統是否已經與信息安全硬體設備綁定,如果已經綁定,則運行軟體虛擬系統,並繼續執行步驟104;否則,軟體虛擬系 統無法運行,從而目標代碼也無法執行,結束本方法流程。本步驟所述信息安全硬體設備是指實現了軟體加密保護或身份認證等 功能的硬體。本步驟所述判斷軟體虛擬系統是否已經與信息安全硬體設備綁 定可以採用多種方式,例如可以由軟體虛擬系統調用信息安全硬體設備的應用編程接口 ( API, Application Programming Interface)來4全查信息安全硬體設備是否連4妾在主 機上;或者,也可以通過向信息安全硬體設備發送一些輸入數據,看信息安全 硬體設備能否根據一定的輸入返回對應的輸出,來判斷軟體虛擬系統是否綁 定了安全硬體設備。本步驟中判斷軟體虛擬系統是否已經與信息安全硬體設備綁定的操作 不僅可以在執行目標代碼之前運行,也可以在其他適當的時機進行,例如, 可以在軟體虛擬系統中定時、隨才幾或採取其他方式確定的時才幾進行,即可 以在步驟104之前,或步驟104 ~步驟108之間的任何時刻執行本步驟所述 判斷。執行所述判斷達到的效果是如果沒有綁定信息安全硬體設備,則軟 件虛擬系統無法運行或者其運行是不正確的。以下通過步驟104 ~步驟108,詳細描述目標代碼在軟體虛擬系統中的 執行過程步驟104:判斷當前指令是否是虛擬系統指令,如果是,表示已執行到 目標代碼中的虛擬系統代碼段,繼續執行步驟105;否則,表示執行的是目 標代碼中的機器語言代碼段,直接執行當前指令,並針對當前指令的下一條 指令執行所述步驟104。步驟105:讀取虛擬系統代碼段中的當前虛擬系統指令。 步驟106:按照主機系統指令集將所讀取到的虛擬系統指令解析為機器 語言指令。如前所述,虛擬系統指令集中的每一條指令均存在確切的語義,虛擬系統指令與機器語言指令之間存在一定的對應關係,而本發明提供的軟體虛擬 系統具備識別該虛擬系統指令集的功能,因而能夠按照機器語言指令集將所 讀取到的虛擬系統指令解析為相應的機器語言指令。如果在步驟102所述指令轉換的過程中,對程序原始碼中的數據進行了 加密變換,那麼在本步驟中,需要釆用相應的數據解密變換算法和解密密鑰 對虛擬系統指令中的數據進行解密。步驟107:執行機器語言指令。在執行上述解析、執行的過程中,可以根據實際應用的需要對所述指令 以順序、並行或亂序等方式進行,這樣可以進一步加大破解的難度。步驟108:判斷虛擬系統代碼段是否執行完,如果尚未執行完,則將當 前虛擬系統指令的下一條指令作為當前虛擬系統指令,返回執行步驟105; 否則,繼續執行步驟109。步驟109:將虛擬系統代碼段的執行結果返回。本步驟中,如果整個目標代碼已執行完,此時,可以將執行結果返回; 否則,如果僅僅是本段虛擬系統代碼段已執行完,可以將執行結果返回給後 續的機器語言代碼段作為輸入參數使用,或者也可以將執行結果保存。在目標代碼尚未執行完的情況下,由於後續可能還存在虛擬系統代碼 段,因此,可以繼續返回執行步驟104,直至^L行完目標代碼中的所有指令, 得到執行結果,由軟體虛擬系統將該執行結果返回,該執行結果就是軟體程 序的執行結果。至此,結束本發明軟體程序的保護方法的流程。圖2示出了圖1所示步驟102中指令轉換的流程示意圖。參見圖2,該 指令轉換過程包括步驟201:逐條或一次多條地讀取軟體程序中的原始碼。步驟202:判斷所讀取的軟體程序原始碼是否為需要保護的程序原始碼, 如果是,則繼續執行步驟203;否則,繼續執行步驟204。步驟203:將所讀取到的程序原始碼按照虛擬系統指令集轉換為虛擬系統指令,繼續執行步驟205。步驟204:將所讀取到的除所述需要保護的程序原始碼之外的程序源代 碼按照主機系統指令集轉換為機器語言指令,繼續執行步驟205。步驟205:判斷所述軟體程序原始碼是否已轉換完,如果未轉換完,則 繼續執行步驟201,讀取軟體程序原始碼中的下一條或多條原始碼;如果已 轉換完,則生成目標程序。經過上述步驟201 ~步驟205的轉換之後,已經將軟體程序原始碼轉換 成了由相應的虛擬系統代碼段和機器語言代碼段組成的目標程序。至此,得到包含虛擬系統代碼段、機器語言代碼段,結束指令轉換過程。由上述實施例可見,在本發明提供的軟體保護方法中,軟體程序中需要 保護的部分程序原始碼是先被轉換成僅能被軟體虛擬系統識別的虛擬系統 指令,然後由軟體虛擬系統轉換成相應的機器語言指令執行的。如此, 一方 面,目標代碼中包含虛擬系統代碼,而破解者並不知道本發明所採取的虛擬 系統指令集,也就無從知道所述虛擬系統代碼與軟體程序語言之間的對應關 系,當破解者採用靜態分析技術分析目標代碼時,無法反彙編或反編譯出正 確的源程序;另一方面,虛擬系統代碼不是直接運行於實際硬體主機的CPU 上,而是由軟體虛擬系統轉換為機器語言指令執行的,由於軟體虛擬系統本 身的地位也等同於一個軟體程序,軟體虛擬系統本身的執行過程也具有一定 的複雜性,因此,如果想採用動態分析技術來破解被保護的軟體程序,首先 需要成功分析出本發明軟體虛擬系統的執行流程,並從軟體虛擬系統的執行 流程區分出被保護軟體程序的執行流程,其難度非常大;然後,還需要破解 本發明預先設置的虛擬系統指令集,這大大增加了破解的難度。最後,軟體 虛擬系統在運行前以及運行的過程中,隨時可以判斷是否與信息安全硬體設 備綁定,沒有綁定則軟體虛擬系統無法運行,因而沒有信息安全硬體設備的 破解者無法使用軟體虛擬系統,也就不可能對運行時的軟體虛擬系統進行動 態跟蹤。由此可見,採用本發明技術方案使得破解者很難對被保護軟體程序 實施反向工程,因此,可以較好地防備破解軟體程序必須採用的兩種途徑,從而可以在很大程度上保護軟體程序的安全性。下面結合附圖,對笨發明提供的指令轉換器及軟體虛擬系統進行詳細說明。圖3為本發明指令轉換器的組成結構示意圖。參見圖3,該指令轉換器 包括程序原始碼讀取^^塊310,用於讀取並判斷程序原始碼,將需要保護的程 序原始碼發送給虛擬指令轉換模塊320;虛擬指令轉換模塊320,用於將來自於程序原始碼讀取模塊的程序原始碼 轉換為對應的虛擬系統指令,並發送給目標代碼生成模塊330;目標代碼生成模塊330,用於將來自於虛擬指令轉換模塊320的虛擬系 統指令放在目標代碼中與所述需要保護的程序原始碼對應的目標代碼的位 置。圖3所示指令轉換器中還可以包括機器指令轉換模塊340,用於將來 自於程序原始碼讀取模塊310的除需要保護的程序原始碼之外的程序源代 碼轉換為對應的機器語言指令,並發送給目標代碼生成模塊330;此時,程序原始碼讀取模塊310,還用於將除所述需要保護的程序源代 碼之外的程序原始碼發送給機器指令轉換模塊340;目標代碼生成模塊330,還用於將來自於機器指令轉換模塊340的機器 語言指令放在目標代碼中與所述除所述需要保護的程序原始碼之外的程序 原始碼對應的目標代碼的位置。圖3所示虛擬指令轉換模塊320,還可以用於使用數據加密變換算法對來 自於程序原始碼讀取才莫塊的程序中的數據進行加密變換。圖4為本發明軟體虛擬系統的組成結構示意圖。參見圖4,該軟體虛擬 系統包4舌虛擬代碼接口模塊410,用於讀入包含虛擬系統代碼段的目標代碼,當識 別到所述目標代碼中的虛擬系統代碼段時,通知虛擬代碼執行模塊420;所述 虛擬系統代碼段為由預先設置的虛擬系統指令集中的虛擬系統指令構成的代碼段;虛擬代碼執行模塊420,用於根據虛擬代碼接口模塊410的通知,從所 述虛擬系統代碼段中讀入虛擬系統指令,按照運行所述軟體虛擬系統的計算 機的主機系統指令集將所述虛擬系統指令解析為機器語言指令,並執行所述 解析得到的機器語言指令。圖4所示軟體虛擬系統中可以進一步包括判斷模塊,用於在虛擬代碼 接口模塊410讀入目標代碼之前或虛擬代碼執行模塊420的執行過程中,判 斷軟體虛擬系統是否已經與信息安全硬體設備綁定,如果沒有綁定則中止軟 件虛擬系統運行,如果已經綁定則由虛擬代碼接口模塊410或虛擬代碼執行 模塊420繼續執行。圖4所示虛擬代碼執行模塊420中可以包括代碼讀取子模塊421、代 碼解析子模塊422和代碼執行子模塊423,分別用於完成上述讀入虛擬系統 指令、將虛擬系統指令解析為機器語言指令和執行機器語言指令的操作。圖4所示虛擬代碼接口模塊410,還可以用於將虛擬系統代碼段的位置、 大小通知虛擬代碼執行模塊中的代碼讀取子模塊421,並用於接收來自於代 碼執行子模塊423的執行結果;代碼讀取子模塊421,用於根據虛擬代碼接口模塊410通知的虛擬系統 代碼段的位置,從目標程序的相應位置讀取虛擬系統指令,發送給代碼解析 子模塊422;並用於判斷是否已讀取完虛擬系統代碼段的指令,在已讀取完 時,通知代碼執行子模塊423;代碼解析子模塊422,用於按照運行所述軟體虛擬系統的計算機的主機 系統指令集將來自於代碼讀取子模塊的虛擬系統指令解析為機器語言指令, 並發送給代碼執行子模塊423;代碼執行子模塊423,用於執行來自於代碼解析子模塊422的機器語言 指令,並根據來自於代碼讀取子模塊421的通知,向虛擬代碼接口模塊410 返回所述虛擬系統代碼段的執行結果。如果在指令轉換的過程中,對軟體程序中的數據進行了加密變換,則圖4所示虛擬代碼接口模塊410,還可以用於將數據變換算法、數據變換密鑰通知 代碼解析子模塊422;所述代碼解析子模塊422,還用於根據虛擬代碼接口模塊410通知的數 據變換算法和數據變換密鑰對來自於代碼讀取子模塊421的虛擬系統指令 中的數據進行解密變換,並將解密變換後得到的數據發送給代碼執行子模塊 423。由上述實施例可見,利用本發明提供的指令轉換器可以將軟體程序中需 要保護的部分程序原始碼轉換成僅能被軟體虛擬系統識別的虛擬系統代碼, 然後由本發明軟體虛擬系統將虛擬系統代碼轉換成相應的機器語言指令執 行。如此, 一方面,目標代碼中包含虛擬系統代碼,而破解者並不知道本發 明所採取的虛擬系統指令集,也就無從知道所述虛擬系統代碼與軟體程序語 言之間的對應關係,當破解者採用靜態分析技術分析目標代碼時,無法反匯 編或反編譯出正確的源程序;另一方面,虛擬系統代碼不是直接運行於實際 硬體主機的CPU上,而是由軟體虛擬系統轉換為機器語言指令執行的,由 於軟體虛擬系統本身的地位也等同於一個軟體程序,軟體虛擬系統本身的執 行過程也具有一定的複雜性,因此,如果想採用動態分析技術來破解被保護 的軟體程序,首先需要成功分析出本發明軟體虛擬系統的執行流程,並從軟 件虛擬系統的執行流程區分出被保護軟體程序的執行流程,其難度非常大; 然後,還需要破解本發明預先設置的虛擬系統指令集,這大大增加了破解的 難度。最後一方面,軟體虛擬系統在運行前以及運行的過程中,隨時可以判 斷是否與信息安全硬體設備綁定,沒有綁定則軟體虛擬系統無法運行,因而 沒有信息安全硬體設備的破解者無法使用軟體虛擬系統,也就不可能對運行 時的軟體虛擬系統進行動態跟蹤。由上述分析可見,採用本發明技術方案使得破解者很難對被保護軟體程 序實施反向工程,因此,可以較好地防備破解軟體程序必須採用的兩種途徑, 從而可以在很大程度上保護軟體程序的安全性。以上所述僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。凡在本發明的精神和原則之內所作的任何修改、等同替換、改進等,均 應包含在本發明的保護範圍之內。
權利要求
1、一種軟體程序保護方法,其特徵在於,預先設置虛擬系統指令集,由虛擬系統指令集中的虛擬系統指令構成的代碼段為虛擬系統代碼段;並構造能夠識別所述虛擬系統指令集的軟體虛擬系統,所述軟體虛擬系統運行於計算機上,所述軟體虛擬系統是所述軟體程序的運行環境,該方法還包括A、按照所述虛擬系統指令集將所述軟體程序中需要保護的程序原始碼轉換為虛擬系統指令,得到包含虛擬系統代碼段的目標代碼;B、在執行所述目標代碼時,對於虛擬系統代碼段,由所述軟體虛擬系統將其按照所述計算機的主機系統指令集解析為機器語言指令並執行。
2、 根據權利要求1所述的方法,其特徵在於,在所述軟體虛擬系統運行之 前或運行過程中,進一步包括判斷所述軟體虛擬系統是否已經與信息安全硬體設備綁定,如果已經綁定, 則運行軟體虛擬系統;否則,終止軟體虛擬系統的運行。
3、 根據權利要求1或2所述的方法,其特徵在於,所述步驟A包括 Al、確定軟體程序中需要保護的程序原始碼;A2、讀取所述軟體程序原始碼,將所讀取到的需要保護的程序原始碼按照 虛擬系統指令集轉換為對應的虛擬系統指令,得到對應的虛擬系統代碼段;將 所讀取到的除所述需要保護的程序原始碼之外的程序原始碼按照主機系統指令 集轉換為對應的機器語言指令,得到對應的機器語言代碼段;A3、得到由虛擬系統代碼段和機器語言代碼段構成的目標代碼。
4、 根據權利要求3所述的方法,其特徵在於,在執行步驟A2所述將所讀 取到的需要保護的程序原始碼按照虛擬系統指令集轉換為對應的虛擬系統指令 時,進一步使用數據加密變換算法對所讀取到的程序原始碼中的數據進行加密 變換;在執行步驟B所述解析時,進一步使用與所述數據加密變換算法對應的數 據解密變換算法對所述虛擬系統指令中的數據進行解密變換。
5、 根據權利要求3所述的方法,其特徵在於,所述預先設置的虛擬系統指 令集包括自定義的指令集。
6、 一種指令轉換器,其特徵在於,包括程序原始碼讀取模塊,用於讀取並判斷程序原始碼,將需要保護的程序源 代碼發送給虛擬指令轉換^莫塊;虛擬指令轉換模塊,用於將來自於程序原始碼讀取模塊的程序原始碼轉換為對應的虛擬系統指令,並發送給目標代碼生成模塊;目標代碼生成模塊,用於將來自於虛擬指令轉換模塊的虛擬系統指令放在 目標代碼中與所述需要保護的程序原始碼對應的目標代碼的位置。
7、 根據權利要求6所述的指令轉換器,其特徵在於 所述程序原始碼讀取模塊,還用於將除所述需要保護的程序原始碼之外的程序原始碼發送給機器指令轉換模塊;所述指令轉換器中進一步包括機器指令轉換模塊,用於將來自於程序源 代碼讀取模塊的程序原始碼轉換為對應的機器語言指令,並發送給目標代碼生成模塊;所述目標代碼生成模塊,還用於將來自於機器指令轉換模塊的機器語言指 令放在目標代碼中與所述除所述需要保護的程序原始碼之外的程序原始碼對應 的目標代碼的位置。
8、 根據權利要求6或7所述的指令轉換器,其特徵在於 所述虛擬指令轉換才莫塊,還用於使用數據加密變換算法對來自於程序原始碼讀取模塊的程序原始碼中的數據進行加密變換。
9、 一種軟體虛擬系統,其特徵在於,包括虛擬代碼接口模塊,用於讀入包含虛擬系統代碼段的目標代碼,當識別到 所述目標代碼中的虛擬系統代碼段時,通知虛擬代碼執行模塊;所述虛擬系統 代碼段為由預先設置的虛擬系統指令集中的虛擬系統指令構成的代碼段;虛擬代碼執行模塊,用於根據虛擬代碼接口模塊的通知,從所述虛擬系統 代碼段中讀入虛擬系統指令,按照運行所述軟體虛擬系統的計算機的主機系統指令集將所述虛擬系統指令解析為機器語言指令,並執行所述解析得到的機器 語言指令。
10、 根據權利要求9所述的軟體虛擬系統,其特徵在於,所述軟體虛擬系 統中進一步包括判斷模塊,用於在虛擬代碼接口模塊讀入目標代碼之前或虛擬代碼執行模 塊的執行過程中,判斷軟體虛擬系統是否已經與信息安全硬體設備綁定,如果 沒有綁定則終止軟體虛擬系統運行,如果已經綁定則由虛擬代碼接口;f莫塊或虛 擬代碼執行模塊繼續執行。
11、 根據權利要求9或IO所述的軟體虛擬系統,其特徵在於,所述虛擬代 碼接口模塊,還用於將虛擬系統代碼段的位置、大小通知虛擬代碼執行模塊中的代碼讀取子模塊,並用於接收來自於代碼執行子模塊的執行結果;代碼讀取子模塊,用於根據虛擬代碼接口模塊通知的虛擬系統代碼段的位 置,從目標程序的相應位置讀取虛擬系統指令,發送給代碼解析子模塊;並用 於判斷是否已讀取完虛擬系統代碼段的指令,在已讀取完時,通知代碼執行子 模塊;代碼解析子模塊,用於按照運行所述軟體虛擬系統的計算機的主機系統指 令集將來自於代碼讀取子模塊的虛擬系統指令解析為機器語言指令,並發送給 代碼執行子模塊;代碼執行子模塊,用於執行來自於代碼解析子模塊的機器語言指令,並根 據來自於代碼讀取子模塊的通知,向虛擬代碼接口模塊返回所述虛擬系統代碼 段的執行結果。
12、 根據權利要求11所述的軟體虛擬系統,其特徵在於,所述虛擬代碼接 口模塊,還用於將數據變換算法、數據變換密鑰通知代碼解析子模塊;所述代碼解析子模塊,還用於根據虛擬代碼接口模塊通知的數據變換算法 和數據變換密鑰對來自於代碼讀取子模塊的虛擬系統指令中的數據進行解密變 換,並將解密變換後得到的數據發送給代碼執行子模塊。
全文摘要
本發明實施例中公開了一種軟體程序的保護方法,該方法預先設置虛擬系統指令集,並構造能夠運行所述虛擬系統指令集指令的軟體虛擬系統,所述軟體虛擬系統運行於計算機上,並為所述軟體程序提供一部分運行環境,在執行軟體程序之前,按照虛擬系統指令集將所述軟體程序中需要保護的程序原始碼轉換為虛擬系統指令,得到包含虛擬系統代碼段的目標代碼;在執行所述目標代碼時,對於虛擬系統代碼段,由軟體虛擬系統解釋執行。本發明實施例中還提供了一種指令轉換器和一種軟體虛擬系統,採用本發明技術方案使得軟體破解者難以實施反彙編或反編譯等反向工程,從而有效保護了軟體程序。
文檔編號G06F9/45GK101216775SQ20081005599
公開日2008年7月9日 申請日期2008年1月3日 優先權日2008年1月3日
發明者孫吉平, 勇 韓 申請人:北京深思洛克數據保護中心

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀