專利名稱:一種軟件保護方法和裝置的制作方法
技術領域:
本發(fā)明涉及軟件版權保護技術領域,特別涉及一種軟件保護方法和裝置。
背景技術:
軟件由于其純數字化的特征,一直遭受盜版的困擾,在現有技術中,通常采用兩種軟件保護方法防止盜版,一種為基于硬件的保護方法,例如,采用加密鎖進行軟件保護,另一種為基于軟件的保護方法,例如,采用虛擬機機制進行軟件保護。下面,對現有技術中這兩種軟件保護方法進行介紹。加密鎖是一種具有一定處理能力的硬件設備,其通過應用程序編程(API)接口和軟件平臺相連,受保護軟件的運行環(huán)境為所述軟件平臺,將受保護軟件的部分代碼移植至加密鎖中,取而代之地,受保護軟件中被移植代碼部分用調用函數替換,調用函數用于表示調用加密鎖中的被移植代碼。受保護軟件在軟件平臺上運行的過程中,當運行至原有的被移植代碼部分時,采用調用函數調用加密鎖中被移植代碼,被移植代碼在加密鎖中運行完畢后,再將結果再返回至軟件平臺上的受保護軟件。為了對加密鎖的上述工作過程進行詳細說明,下面舉例說明。假設軟件平臺為計算機上的S系統(tǒng),受保護軟件用于依次連續(xù)執(zhí)行步驟1、2、3、4, 步驟1對應代碼段a,步驟2對應代碼段段b,步驟3對應代碼段c,步驟4對應代碼段d,加密鎖與計算機上的S系統(tǒng)連接后,可將受保護軟件中的代碼段c轉化為加密鎖可識別的指令移植至加密鎖中,受保護軟件中的代碼段c用調用函數f(x)替換,f(x)用于表示調用加密鎖中的代碼段c,當受保護軟件在計算機上的S系統(tǒng)運行完畢代碼段a后,運行f (χ)調用加密鎖中的代碼段b,代碼段b在加密鎖中運行完畢后,將結果返回至計算機上的S系統(tǒng)中的受保護軟件,然后受保護軟件在計算機上的S系統(tǒng)中再運行代碼段c、d。由上述方法可知,由于受保護軟件的一部分在加密鎖硬件中運行,脫離加密鎖的受保護軟件是不完整的,破解者必須還原出加密鎖內運行的代碼才能實現對軟件的破解, 因此受保護軟件的保護強度就依賴于加密鎖硬件內運行的那部分代碼的保護強度,而加密鎖硬件通常會使用安全性極高的安全處理器或者智能卡,確保內部代碼無法跟蹤,顯然這種保護方式具有極高的保護強度?,F有的虛擬機保護技術和上述的加密鎖保護技術非常相似,也是通過將軟件的部分代碼置于安全環(huán)境中運行來實現對軟件的保護,與加密鎖保護方法的主要區(qū)別在于所述的安全環(huán)境并不是由額外的硬件提供,而是由和受保護軟件同一硬件中的虛擬機提供。為了對虛擬機的上述工作過程進行詳細說明,下面舉例說明。假設受保護軟件和虛擬機均運行于某計算機上的S系統(tǒng)中,受保護軟件用于連續(xù)執(zhí)行步驟1、2、3、4,步驟1對應代碼a段,步驟2對應代碼b段,步驟3對應代碼c段,步驟 4對應代碼段d,可將受保護軟件中的代碼段c轉化為虛擬機指令移植至虛擬機中,受保護軟件中的代碼段c用調用函數f(x)替換,f(x)用于表示調用虛擬機中的代碼段c,當受保護軟件在計算機上的S系統(tǒng)運行完畢代碼段a后,運行f (χ)調用S系統(tǒng)中的虛擬機的代碼段b,代碼段b在虛擬機中運行完畢后,將結果返回至S系統(tǒng)中的受保護軟件,然后受保護軟件在計算機上的S系統(tǒng)中再運行代碼段c、d。需要強調的是,本發(fā)明所述的虛擬機和VMWare,QEMU等虛擬機不同,本發(fā)明所述的虛擬機是指一組指令集和執(zhí)行此指令集所需的運行環(huán)境,而并不需要對應某種真實機器,類似于自定義指令集的高級語言虛擬機,下文中稱為安全虛擬機。此安全虛擬機為軟件保護目的而設計,可以嵌入到受保護軟件中運行,且安全虛擬機的指令集和運行機制等技術細節(jié)完全不公開,從而使安全虛擬機指令的跟蹤和分析難度明顯提高,這樣運行在安全虛擬機中的代碼就得到了保護。由于此安全虛擬機和受保護軟件運行在相同的平臺中,不會遇到類似加密鎖保護技術那樣的性能和資源瓶頸,因此可以從受保護軟件中選擇的代碼范圍和運行效率大大增加。然而,上述兩種軟件保護方法均存在一些缺陷,詳細論述如下對于基于加密鎖的軟件保護方法來說,在選擇足夠復雜的代碼的情況下,其能實現的保護強度顯然是最高的,但在實際應用中,由于受限于加密鎖的硬件性能和可用資源等原因,在很多保護方案中,受保護軟件中最終可以移植到加密鎖中的代碼是有限的,也就是說,這種情況下,被移植代碼的復雜度有可能達不到要求,破解者通過跟蹤、分析受保護軟件和加密鎖之間交互的規(guī)律,有可能還原出被移植代碼的功能,從而實現破解。對于基于虛擬機的軟件保護方法來說,由于虛擬機技術其自身由軟件實現,且運行在和受保護軟件相同的平臺中,并不能擺脫破解者的跟蹤和分析,一旦破解者分析出安全虛擬機的指令集和運行特征,仍然可以如同普通的軟件破解一樣,對安全虛擬機中運行的指令進行跟蹤和分析,還原出安全虛擬機中運行的代碼的功能,甚至可以對安全虛擬機中運行的代碼直接進行篡改,從而實現破解。綜上,現有技術中基于加密鎖和安全虛擬機的保護技術各有缺陷,都不能完全滿高強度的軟件保護需求。
發(fā)明內容
有鑒于此,本發(fā)明提供一種軟件保護方法和裝置,能夠提高軟件保護強度。為實現上述發(fā)明目的,本發(fā)明的技術方案是這樣實現的一種軟件保護方法,該方法用于對受保護軟件進行保護,所述受保護軟件包括依次按照執(zhí)行順序排列的代碼段1、2. ..N, N為正整數,所述受保護軟件運行于軟件平臺,在所述軟件平臺中設置安全虛擬機,所述加密鎖還與軟件平臺連接,該方法包括將N個代碼段中的多個代碼段作為第一被移植代碼,將第一被移植代碼轉化為安全虛擬機的指令并移植至安全虛擬機中,將所述第一被移植代碼中的一個或多個代碼段作為第二被移植代碼,將第二被移植代碼轉化為加密鎖的指令并移植至加密鎖中。將第一被移植代碼轉化為安全虛擬機的指令并移植至安全虛擬機中,且將所述第一被移植代碼中的一個或多個代碼段作為第二被移植代碼,將第二被移植代碼轉化為加密鎖的指令并移植至加密鎖中之后,該方法進一步包括受保護軟件依次執(zhí)行N個代碼段,其中,若欲執(zhí)行的代碼段為第一被移植代碼時, 受保護軟件調用安全虛擬機執(zhí)行所第一被移植代碼,安全虛擬機執(zhí)行完畢后將執(zhí)行結果返回至受保護軟件,當安全虛擬機執(zhí)行所述第一被移植代碼時,若欲執(zhí)行的代碼段為第一被移植代碼中的第二被移植代碼時,安全虛擬機調用加密鎖執(zhí)行所述第二被移植代碼,加密鎖執(zhí)行完畢后將執(zhí)行結果返回至安全虛擬機。該方法進一步包括預先將安全虛擬機本身的實現代碼中的一部分代碼移植至加密鎖中。一種軟件保護裝置,該裝置用于對受保護軟件進行保護,所述受保護軟件包括依次按照執(zhí)行順序排列的代碼段1、2. ..N, N為正整數,該裝置包括軟件平臺和加密鎖,所述軟件平臺包括安全虛擬機單元、執(zhí)行單元、移植單元和接口單元;其中,所述執(zhí)行單元,用于存儲受保護軟件;所述移植單元,將N個代碼段中的多個代碼段作為第一被移植代碼,將第一被移植代碼通過接口單元移植至安全虛擬機單元中,將所述第一被移植代碼中的一個或多個代碼段作為第二被移植代碼通過接口單元移植至加密鎖中;所述安全虛擬機單元,用于接收所述第一被移植代碼,將其轉化為自身的指令;所述加密鎖,用于接收所述第二被移植代碼,將其轉化為自身的指令。所述執(zhí)行單元,進一步用于控制受保護軟件依次執(zhí)行N個代碼段,其中,若欲執(zhí)行的代碼段為第一被移植代碼時,執(zhí)行單元通過接口單元調用安全虛擬機單元執(zhí)行所第一被移植代碼,安全虛擬機單元執(zhí)行完畢后通過接口單元將執(zhí)行結果返回至執(zhí)行單元,當安全虛擬機單元執(zhí)行所述第一被移植代碼時,若欲執(zhí)行的代碼段為第一被移植代碼中的第二被移植代碼時,安全虛擬機單元通過接口單元調用加密鎖執(zhí)行所述第二被移植代碼,加密鎖執(zhí)行完畢后通過接口單元將執(zhí)行結果返回至安全虛擬機單元。根據本發(fā)明所提供的技術方案,將受保護軟件的N個代碼段中的多個代碼段作為第一被移植代碼,將第一被移植代碼轉化為安全虛擬機可識別的指令并移植至安全虛擬機中,將所述第一被移植代碼中的一個或多個代碼段作為第二被移植代碼,將第二被移植代碼轉化為加密鎖可識別的指令并移植至加密鎖中,當受保護軟件執(zhí)行代碼的過程中,若欲執(zhí)行的代碼段為第一被移植代碼時,受保護軟件調用安全虛擬機執(zhí)行所第一被移植代碼, 當安全虛擬機執(zhí)行所述第一被移植代碼時,若欲執(zhí)行的代碼段為第一被移植代碼中的第二被移植代碼時,安全虛擬機調用加密鎖執(zhí)行所述第二被移植代碼。顯然,本發(fā)明中,受保護軟件可以選擇的移植代碼范圍與虛擬機保護技術相同,而保護強度則相當于虛擬機保護技術的基礎上再增加加密鎖的保護。進一步地,在安全虛擬機中運行的代碼可以為對運行效率要求高的代碼,在加密鎖中運行的代碼可以為效率要求不高,但邏輯足夠復雜的代碼,則本發(fā)明中代碼運行的效率能夠接近虛擬機保護技術所能達到的最高效率,而保護強度能夠接近虛擬機保護技術和加密鎖保護技術的理論最高保護強度之和,運行效率和安全都可以兼顧??梢?,本發(fā)明將基于虛擬機的軟件保護技術和基于加密鎖的保護技術有效結合在一起,充分汲取了兩種保護技術的優(yōu)點,并相互彌補的各自的缺點,擴大了代碼保護的范圍,提高了軟件保護的強度。
圖1為本發(fā)明所提供的一種軟件保護方法的實施例的流程圖。圖2為本發(fā)明所提供的一種軟件保護裝置的實施例的結構圖。
具體實施例方式為使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明所述方案作進一步地詳細說明。本發(fā)明的核心思想為將受保護軟件中的一部分代碼移植至安全虛擬機中,同時, 將移植至安全虛擬機中的代碼的一部分移植至加密鎖中,因此將基于虛擬機的軟件保護技術和基于硬件的保護技術有效地結合在一起,充分汲取了兩種保護技術的優(yōu)點,并相互彌補的各自的缺點,提高了軟件保護的強度。圖1為本發(fā)明所提供的一種軟件保護方法的實施例的流程圖,該方法用于對受保護軟件進行保護,所述受保護軟件包括依次按照執(zhí)行順序排列的代碼段1、2. ..N, N為正整數,所述受保護軟件運行于軟件平臺,在所述軟件平臺中設置安全虛擬機,所述加密鎖還與軟件平臺連接。如圖1所示,該方法包括以下步驟步驟101,將N個代碼段中的多個代碼段作為第一被移植代碼,將第一被移植代碼轉化為安全虛擬機的指令并移植至安全虛擬機中,將所述第一被移植代碼中的一個或多個代碼段作為第二被移植代碼,將第二被移植代碼轉化為加密鎖的指令并移植至加密鎖中。在本步驟中,指令轉化方法以及移植方法為現有技術中的內容,此處不予贅述。例如,將第一被移植代碼轉化為安全虛擬機的指令并移植至安全虛擬機中的過程可能是手工進行的,也可能是自動進行的。手工方式就是用戶自己用安全虛擬機的指令重新編寫代碼, 自動方式可以通過現有工具處理受保護軟件源代碼或者編譯好的二進制代碼,將其轉換為安全虛擬機的指令,例如可以將編譯好的文件中的x86指令逐一轉換為虛擬機指令序列 (例如x86指令ADD EAX, 2可以轉換成虛擬機指令序列SET Ml、SET M2和ADD Ml, M2),這樣可以降低開發(fā)保護方案的難度。同理,第二被移植代碼轉化為加密鎖的指令并移植至加密鎖中的移植過程可以是手工也可以是自動的,例如加密鎖也能提供安全虛擬機指令運行環(huán)境的情況下,那么就可以直接從安全虛擬機中自動選擇部分代碼放到加密鎖中執(zhí)行。由于加密鎖的優(yōu)點在于安全性比較高,缺點在于受限于硬件性能的局限性,被移植代碼對運行效率和資源不能要求太高,而安全虛擬機的優(yōu)點在于運行效率比較高,缺點在于安全性比較低,因此,在安全虛擬機中運行的第一被移植代碼可以為對運行效率要求高的代碼,在加密鎖中運行的第二被移植代碼可以為效率要求不高,但邏輯足夠復雜的代碼。例如,第二被移植代碼對安全性的要求可以高于第一被移植代碼對安全性的要求,第一被移植代碼對運行效率的要求可以高于第二被移植代碼對運行效率的要求。第一被移植代碼和第二被移植代碼的選擇也可以是動態(tài)的,例如在受保護軟件運行的時候安全虛擬機根據當前平臺的運行速度、存儲空間、運算能力來決定哪些代碼在加密鎖中執(zhí)行。當然,本發(fā)明不對第一被移植代碼和第二被移植代碼的具體特性進行限定,上述第一被移植代碼和第二被移植代碼的特性僅為實施例。步驟102,受保護軟件依次執(zhí)行N個代碼段,其中,若欲執(zhí)行的代碼段為第一被移植代碼時,受保護軟件調用安全虛擬機執(zhí)行所第一被移植代碼,安全虛擬機執(zhí)行完畢后將執(zhí)行結果返回至受保護軟件,當安全虛擬機執(zhí)行所述第一被移植代碼時,若欲執(zhí)行的代碼段為第一被移植代碼中的第二被移植代碼時,安全虛擬機調用加密鎖執(zhí)行所述第二被移植代碼,加密鎖執(zhí)行完畢后將執(zhí)行結果返回至安全虛擬機。其中,調用加密鎖、安全虛擬機以及結果返回的方法為現有技術的內容,此處不予贅述。可見,本發(fā)明從安全性的角度來看,破解者首先必須找到第一被移植代碼對應的安全虛擬機指令和受保護軟件指令的映射關系才能對安全虛擬機中的代碼進行分析,而即使分析出映射關系,第二被移植代碼又在加密鎖中運行,基于加密鎖硬件的安全性,破解者無法跟蹤這段代碼,顯然,這樣整體方案的安全級別是有保障的。至此,本流程結束。本發(fā)明還可進一步包括在步驟101之前,本發(fā)明還可將安全虛擬機本身的實現代碼中的一部分代碼也移植至加密鎖中,由于加密鎖內的代碼無法跟蹤,所以還原安全虛擬機架構的工作就會有比較大的門檻,從而也能提高受安全虛擬機保護的代碼的安全。所述一部分代碼的長度沒有限定,根據具體情況而定。下面,通過一個實施例對本發(fā)明的技術方案進行詳細說明。假設軟件平臺為計算機上的S系統(tǒng),受保護軟件和安全虛擬機均運行于該計算上的S系統(tǒng)中,加密鎖與計算機上的S系統(tǒng)連接,受保護軟件用于連續(xù)執(zhí)行步驟1、2、3、4、5,步驟1對應代碼段a,步驟2對應代碼段b,步驟3對應代碼段c,步驟4對應代碼段d,步驟5 對應代碼段e??蓪⒋a段a、b、C、d作為第一被移植代碼,將第一被移植代碼轉化為虛擬機可識別的指令并移植至安全虛擬機中。同時,受保護軟件中的代碼段a、b、c、d用調用函數f(xl) 替換,f (xl)用于表示調用虛擬機中的代碼段a、b、c、d。 若代碼段a對安全性要求比較高,則可將代碼段a作為第二被移植代碼,將第二被移植代碼轉化為加密鎖可識別的指令并移植至加密鎖中。虛擬機中的代碼段a用調用函數 f(x2)替換,f(x2)用于表示調用加密鎖中的代碼段a。當受保護軟件在計算機上的S系統(tǒng)欲執(zhí)行代碼段a、b、c、d、e時,首先運行f(xl)調用安全虛擬機執(zhí)行,當安全虛擬機欲執(zhí)行代碼段a時,運行f (U)調用加密鎖執(zhí)行,加密鎖執(zhí)行完畢后將執(zhí)行結果返回至虛擬機,然后安全虛擬機接著執(zhí)行代碼段b、c、d,安全虛擬機執(zhí)行完畢后將執(zhí)行結果返回至受保護軟件,然后受保護軟件執(zhí)行代碼段e。至此,對本實施例介紹完畢。圖2為本發(fā)明所提供的一種軟件保護裝置的實施例的結構圖,該裝置用于對受保護軟件進行保護,所述受保護軟件包括依次按照執(zhí)行順序排列的代碼段1、2. ..N, N為正整數,如圖2所示,該裝置包括軟件平臺201和加密鎖202,所述軟件平臺201包括安全虛擬機單元203、執(zhí)行單元204、移植單元205和接口單元206。所述執(zhí)行單元204,用于存儲受保護軟件;所述移植單元205,將N個代碼段中的多個代碼段作為第一被移植代碼,將第一被移植代碼通過接口單元移206植至安全虛擬機單元203中,將所述第一被移植代碼中的一個或多個代碼段作為第二被移植代碼通過接口單元206移植至加密鎖202中;所述安全虛擬機單元203,用于接收所述第一被移植代碼,將其轉化為自身的指令;所述加密鎖202,用于接收所述第二被移植代碼,將其轉化為自身的指令。所述執(zhí)行單元204,進一步用于控制受保護軟件依次執(zhí)行N個代碼段,其中,若欲執(zhí)行的代碼段為第一被移植代碼時,執(zhí)行單元通過接口單元206調用安全虛擬機單元203 執(zhí)行所第一被移植代碼,安全虛擬機單元203執(zhí)行完畢后通過接口單元206將執(zhí)行結果返回至執(zhí)行單元204,當安全虛擬機單元203執(zhí)行所述第一被移植代碼時,若欲執(zhí)行的代碼段為第一被移植代碼中的第二被移植代碼時,安全虛擬機單元203通過接口單元206調用加密鎖202執(zhí)行所述第二被移植代碼,加密鎖執(zhí)202行完畢后通過接口單元將執(zhí)行結果返回至虛擬機單元203。關于裝置部分的詳細介紹可參考方法部分的說明,此處不予贅述。綜上,在本發(fā)明中,首將受保護軟件的N個代碼段中的多個代碼段作為第一被移植代碼,將第一被移植代碼轉化為安全虛擬機可識別的指令并移植至安全虛擬機中,將所述第一被移植代碼中的一個或多個代碼段作為第二被移植代碼,將第二被移植代碼轉化為加密鎖可識別的指令并移植至加密鎖中,當受保護軟件執(zhí)行代碼的過程中,若欲執(zhí)行的代碼段為第一被移植代碼時,受保護軟件調用安全虛擬機執(zhí)行所第一被移植代碼,當安全虛擬機執(zhí)行所述第一被移植代碼時,若欲執(zhí)行的代碼段為第一被移植代碼中的第二被移植代碼時,安全虛擬機調用加密鎖執(zhí)行所述第二被移植代碼??梢?,本發(fā)明將基于安全虛擬機的軟件保護技術和基于硬件的保護技術有機地結合在一起,充分汲取了兩種保護技術的優(yōu)點,并相互彌補的各自的缺點,提高了軟件保護的強度。進一步地,在安全虛擬機中運行的代碼可以為對運行效率要求高的代碼,在加密鎖中運行的代碼可以為效率要求不高,但邏輯足夠復雜的代碼,則本發(fā)明中代碼運行的效率能夠接近虛擬機保護技術所能達到的最高效率,而保護強度能夠接近虛擬機保護技術和加密鎖保護技術的理論最高保護強度之和,運行效率和安全都可以兼顧。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種軟件保護方法,該方法用于對受保護軟件進行保護,所述受保護軟件包括依次按照執(zhí)行順序排列的代碼段1、2. ..N, N為正整數,所述受保護軟件運行于軟件平臺,其特征在于,在所述軟件平臺中設置安全虛擬機,所述加密鎖還與軟件平臺連接,該方法包括將N個代碼段中的多個代碼段作為第一被移植代碼,將第一被移植代碼轉化為安全虛擬機的指令并移植至安全虛擬機中,將所述第一被移植代碼中的一個或多個代碼段作為第二被移植代碼,將第二被移植代碼轉化為加密鎖的指令并移植至加密鎖中。
2.根據權利要求1所述的方法,其特征在于,將第一被移植代碼轉化為安全虛擬機的指令并移植至安全虛擬機中,且將所述第一被移植代碼中的一個或多個代碼段作為第二被移植代碼,將第二被移植代碼轉化為加密鎖的指令并移植至加密鎖中之后,該方法進一步包括受保護軟件依次執(zhí)行N個代碼段,其中,若欲執(zhí)行的代碼段為第一被移植代碼時,受保護軟件調用安全虛擬機執(zhí)行所第一被移植代碼,安全虛擬機執(zhí)行完畢后將執(zhí)行結果返回至受保護軟件,當安全虛擬機執(zhí)行所述第一被移植代碼時,若欲執(zhí)行的代碼段為第一被移植代碼中的第二被移植代碼時,安全虛擬機調用加密鎖執(zhí)行所述第二被移植代碼,加密鎖執(zhí)行完畢后將執(zhí)行結果返回至安全虛擬機。
3.根據權利要求1或2所述的方法,其特征在于,該方法進一步包括預先將安全虛擬機本身的實現代碼中的一部分代碼移植至加密鎖中。
4.一種軟件保護裝置,該裝置用于對受保護軟件進行保護,所述受保護軟件包括依次按照執(zhí)行順序排列的代碼段1、2. ..N, N為正整數,其特征在于,該裝置包括軟件平臺和加密鎖,所述軟件平臺包括安全虛擬機單元、執(zhí)行單元、移植單元和接口單元;其中,所述執(zhí)行單元,用于存儲受保護軟件;所述移植單元,將N個代碼段中的多個代碼段作為第一被移植代碼,將第一被移植代碼通過接口單元移植至安全虛擬機單元中,將所述第一被移植代碼中的一個或多個代碼段作為第二被移植代碼通過接口單元移植至加密鎖中;所述安全虛擬機單元,用于接收所述第一被移植代碼,將其轉化為自身的指令;所述加密鎖,用于接收所述第二被移植代碼,將其轉化為自身的指令。
5.根據權利要求4所述的裝置,其特征在于,所述執(zhí)行單元,進一步用于控制受保護軟件依次執(zhí)行N個代碼段,其中,若欲執(zhí)行的代碼段為第一被移植代碼時,執(zhí)行單元通過接口單元調用安全虛擬機單元執(zhí)行所第一被移植代碼,安全虛擬機單元執(zhí)行完畢后通過接口單元將執(zhí)行結果返回至執(zhí)行單元,當安全虛擬機單元執(zhí)行所述第一被移植代碼時,若欲執(zhí)行的代碼段為第一被移植代碼中的第二被移植代碼時,安全虛擬機單元通過接口單元調用加密鎖執(zhí)行所述第二被移植代碼,加密鎖執(zhí)行完畢后通過接口單元將執(zhí)行結果返回至安全虛擬機單元。
全文摘要
本發(fā)明公開了一種軟件保護方法,將受保護軟件的N個代碼段中的多個代碼段作為第一被移植代碼,將第一被移植代碼轉化為安全虛擬機的指令并移植至安全虛擬機中,將第一被移植代碼中的一個或多個代碼段作為第二被移植代碼,將第二被移植代碼轉化為加密鎖的指令并移植至加密鎖中,當受保護軟件執(zhí)行代碼的過程中,若欲執(zhí)行的代碼段為第一被移植代碼時,受保護軟件調用安全虛擬機執(zhí)行所第一被移植代碼,當安全虛擬機執(zhí)行所述第一被移植代碼時,若欲執(zhí)行的代碼段為第一被移植代碼中的第二被移植代碼時,安全虛擬機調用加密鎖執(zhí)行所述第二被移植代碼。同時,本發(fā)明還公開了一種軟件保護裝置,本發(fā)明公開的方法和裝置提高了軟件保護的強度。
文檔編號G06F21/00GK102214281SQ20111010669
公開日2011年10月12日 申請日期2011年4月27日 優(yōu)先權日2011年4月27日
發(fā)明者孫吉平, 韓勇 申請人:北京深思洛克軟件技術股份有限公司