專利名稱:利用加密鎖對軟件進(jìn)行保護(hù)的方法及加密鎖的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件保護(hù)領(lǐng)域,特別涉及一種利用加密鎖對軟件進(jìn)行保護(hù)的方法及加密鎖。
背景技術(shù):
軟件作為一種特殊的產(chǎn)品,由于其純數(shù)字化的特征,從問世起就一直遭受盜版的困擾。盜版的存在不僅給軟件開發(fā)者造成了巨大的損失,也極大阻礙了整個軟件行業(yè)的發(fā)展。因此,幾乎所有的軟件都采取了相應(yīng)的技術(shù)措施來避免軟件遭受破解和盜版,其中最為有效的就是基于硬件的加密鎖技術(shù)。加密鎖是一個連接在計算機(jī)并口或USB 口上的硬件設(shè)備,內(nèi)部包含特定的功能,例如一部分存儲空間、一些密碼算法或者一些用戶自定義的算法或功能。在軟件發(fā)行之前,軟件開發(fā)者修改自己的軟件代碼,使得軟件在運行過程中需要使用到加密鎖內(nèi)部的一些功能,這樣軟件離開加密鎖就無法運行,同時加密鎖作為一種硬件設(shè)備,復(fù)制的難度較大,從而起到防止盜版軟件非法傳播的作用。當(dāng)前市場上主要的加密鎖包括:美國SafeNet公司的Sentinel Superpro>以色列Aladdin公司的Hasp HL、中國北京深思洛克數(shù)據(jù)保護(hù)中心的精銳IV以及德國W1-Bu公司的WIBU-Key等。所有這些加密鎖都提供了內(nèi)置的存儲空間、私有或者公開的密碼算法,當(dāng)軟件運行過程中,可以調(diào)用這些功能來驗證是否屬于正版。軟件版權(quán)保護(hù)的強(qiáng)度取決于兩個方面:第一是加密鎖的可靠性,包括其硬件的安全性、內(nèi)部算法的安全性;第二是軟件與加密鎖之間結(jié)合的緊密性。與此相對應(yīng),軟件的破解也是從這兩個方面入手。通常來說,如果加密鎖的硬件足夠安全,例如選用安全級別很高的智能卡芯片,并采用國際通用的密碼學(xué)算法或者用戶自定義的相對較為復(fù)雜的算法,硬件的安全性是比較高的。也就是說,破解者很難從加密鎖自身入手來制作軟件的盜版。多數(shù)情況下,破解者會利用各種軟件調(diào)試工具,對軟件運行過程中與加密鎖的通信進(jìn)行跟蹤,從而得知軟件對加密鎖的使用意圖,然后通過軟件打補(bǔ)丁、模擬加密鎖的功能等方式來制作盜版。也就是說,軟件版權(quán)保護(hù)的強(qiáng)度,實際上取決于軟件與加密鎖捆綁的緊密程度,這種捆綁越緊密,破解者就越難以實現(xiàn)加密鎖的剝離(即盜版)。然而,由于操作系統(tǒng)的開放性,軟件的全部執(zhí)行過程是在破解者的監(jiān)控之下的,換而言之,破解者可以對軟件執(zhí)行過程的任何一個環(huán)節(jié)進(jìn)行跟蹤,包括軟件與加密鎖的通信過程,以及調(diào)用加密鎖后的結(jié)果處理過程。而現(xiàn)有方法中,加密鎖是屬于從屬設(shè)備,每次調(diào)用過程都是被動的根據(jù)應(yīng)用軟件的輸入給出對應(yīng)的結(jié)果,軟件調(diào)用和硬件輸出的過程中沒有時間限制,這種方式下,破解者破解某個加密點的時候,只需要動態(tài)調(diào)試軟件,在加密點附近設(shè)置斷點,并耐心分析這部分的軟件功能、調(diào)用規(guī)則及返回結(jié)果使用方式,從而實現(xiàn)破解
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種利用加密鎖對軟件進(jìn)行保護(hù)的方法及加密鎖,以解決現(xiàn)有技術(shù)中因軟件調(diào)用和硬件輸出的過程中沒有時間限制而導(dǎo)致軟件容易被破解的問題。為了實現(xiàn)上述目的,本發(fā)明提供了一種利用加密鎖對軟件進(jìn)行保護(hù)的方法,所述軟件運行在終端設(shè)備中,所述終端設(shè)備與加密鎖相互通信連接,所述方法包括以下步驟:S1:軟件向加密鎖發(fā)送開始計時指令;S2:加密鎖接收到所述開始計時指令后檢查自身是否處于自鎖狀態(tài),如果是,則加密鎖不能被調(diào)用,結(jié)束執(zhí)行;如果否,則執(zhí)行步驟S3 ;S3:加密鎖啟動內(nèi)置的計時器開始累計時間,并向軟件發(fā)送允許調(diào)用指令;S4:軟件接收到所述允許調(diào)用指令后向加密鎖發(fā)送功能調(diào)用指令和所需數(shù)據(jù);S5:加密鎖接收到所述功能調(diào)用指令和所需數(shù)據(jù)后檢查所述計時器當(dāng)前累計的時間是否超過預(yù)定值,如果是,則執(zhí)行步驟S10,如果否,則執(zhí)行步驟S6 ;S6:加密鎖對所述所需數(shù)據(jù)進(jìn)行處理后將處理結(jié)果返回給軟件;S7:軟件接收到所述返回結(jié)果后向加密鎖發(fā)送終止計時指令;S8:加密鎖接收到所述終止計時指令后檢查所述計時器當(dāng)前累計的時間是否超過所述預(yù)定值,如果是,則執(zhí)行步驟S10,如果否,則執(zhí)行步驟S9 ;S9:所述計時器停止計時,加密鎖等待下次調(diào)用;SlO:加密鎖進(jìn)入自鎖狀態(tài)。作為優(yōu)選,所述終端設(shè)備與加密鎖之間的通信方式為串行接口通信、并行接口通信、1394接口通信、射頻識別接口通信、無線局域網(wǎng)接口通信、通用串行總線接口通信、藍(lán)牙通信、紅外通信、無線保真通信或者IS07816通信。作為優(yōu)選,步驟S2中,如果加密鎖處于自鎖狀態(tài),則還包括:加密鎖向軟件返回預(yù)定義的錯誤碼的步驟。作為優(yōu)選,步驟S3中,所述計時器啟動時先清零上次調(diào)用時累計的時間。作為優(yōu)選,步驟S9中,所述計時器停止計時后將累計的時間清零。為了實現(xiàn)上述目的,本發(fā)明還提供了一種加密鎖,用于對軟件進(jìn)行保護(hù),所述軟件運行在終端設(shè)備中,所述終端設(shè)備與加密鎖相互通信連接,所述加密鎖包括第一判斷模塊、通信模塊、自鎖模塊、數(shù)據(jù)處理模塊、計時器和第二判斷模塊;所述第一判斷模塊用于在所述加密鎖接收到軟件發(fā)送的開始計時指令后檢查加密鎖是否處于自鎖狀態(tài),所述自鎖狀態(tài)為加密鎖不能被調(diào)用的狀態(tài);所述計時器用于當(dāng)所述第一判斷模塊判定加密鎖未處于自鎖狀態(tài)時開始累計時間;所述通信模塊用于當(dāng)所述第一判斷模塊判定加密鎖未處于自鎖狀態(tài)時向軟件發(fā)送允許調(diào)用指令,以及接收軟件接收到所述允許調(diào)用指令后向加密鎖發(fā)送的功能調(diào)用指令和所需數(shù)據(jù);所述第二判斷模塊用于在所述加密鎖接收到軟件發(fā)送的功能調(diào)用指令和所需數(shù)據(jù)后檢查所述計時器當(dāng)前累計的時間是否超過預(yù)定值;所述自鎖模塊用于當(dāng)所述第二判斷模塊判定所述計時器當(dāng)前累計的時間超過預(yù)定值時使加密鎖進(jìn)入自鎖狀態(tài);所述數(shù)據(jù)處理模塊用于當(dāng)所述第二判斷模塊在加密鎖接收到軟件發(fā)送的功能調(diào)用指令和所需數(shù)據(jù)后判定所述計時器當(dāng)前累計的時間未超過預(yù)定值時對所述所需數(shù)據(jù)進(jìn)行處理;所述通信模塊還用于將所述數(shù)據(jù)處理模塊的處理結(jié)果返回給軟件;所述第二判斷模塊還用于在所述加密鎖接收到軟件發(fā)送的終止計時指令后檢查所述計時器當(dāng)前累計的時間是否超過所述預(yù)定值;所述計時器還用于當(dāng)所述第二判斷模塊在所述加密鎖接收到軟件發(fā)送的終止計時指令后判定所述計時器當(dāng)前累計的時間未超過預(yù)定值時停止計時。作為優(yōu)選,所述終端設(shè)備與加密鎖之間的通信方式為串行接口通信、并行接口通信、1394接口通信、射頻識別接口通信、無線局域網(wǎng)接口通信、通用串行總線接口通信、藍(lán)牙通信、紅外通信、無線保真通信或者IS07816通信。作為優(yōu)選,還包括錯誤碼發(fā)送模塊,其用于當(dāng)所述第一判斷模塊檢查到加密鎖處于自鎖狀態(tài)時,向軟件返回預(yù)定義的錯誤碼。作為優(yōu)選,所述預(yù)定值由加密鎖提供商預(yù)設(shè)或者由軟件開發(fā)商設(shè)定。作為優(yōu)選,所述計時器還用于在停止計時后將累計的時間清零或者在啟動時清零上次調(diào)用時累計的時間。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:通過本發(fā)明提供的方法及加密鎖,破解者動態(tài)調(diào)式受保護(hù)軟件時,如果破解者分析和調(diào)試軟件的時間超過了加密鎖內(nèi)設(shè)定的預(yù)定值,那么加密鎖就會自鎖,此后軟件將無法調(diào)用加密鎖內(nèi)的功能,這就防止了破解者跟蹤加密鎖的輸出結(jié)果,極大程度上提高了反破解能力。
圖1為本發(fā)明的利用加密鎖對軟件進(jìn)行保護(hù)的方法的流程示意圖;圖2為本發(fā)明的加密鎖的結(jié)構(gòu)示意圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明的具體實施例進(jìn)行詳細(xì)說明。如圖1所示,提供了一種利用加密鎖對軟件進(jìn)行保護(hù)的方法,所述軟件運行在終端設(shè)備中,所述終端設(shè)備與加密鎖相互通信連接,所述方法包括以下步驟:S1:軟件向加密鎖發(fā)送開始計時指令;S2:加密鎖接收到所述開始計時指令后檢查自身是否處于自鎖狀態(tài),如果是,則加密鎖不能被調(diào)用,結(jié)束執(zhí)行;如果否,則執(zhí)行步驟S3 ;S3:加密鎖啟動內(nèi)置的計時器開始累計時間,并向軟件發(fā)送允許調(diào)用指令;S4:軟件接收到所述允許調(diào)用指令后向加密鎖發(fā)送功能調(diào)用指令和所需數(shù)據(jù);S5:加密鎖接收到所述功能調(diào)用指令和所需數(shù)據(jù)后檢查所述計時器當(dāng)前累計的時間是否超過預(yù)定值,如果是,則執(zhí)行步驟S10,如果否,則執(zhí)行步驟S6 ;S6:加密鎖對所述所需數(shù)據(jù)進(jìn)行處理后將處理結(jié)果返回給軟件;S7:軟件接收到所述返回結(jié)果后向加密鎖發(fā)送終止計時指令;S8:加密鎖接收到所述終止計時指令后檢查所述計時器當(dāng)前累計的時間是否超過所述預(yù)定值,如果是,則執(zhí)行步驟S10,如果否,則執(zhí)行步驟S9 ;
S9:所述計時器停止計時,加密鎖等待下次調(diào)用;SlO:加密鎖進(jìn)入自鎖狀態(tài)。其中,所述加密鎖與計算機(jī)主機(jī)之間的通信方式可以是串行接口通信、并行接口通信、1394接口通信、射頻識別(RFID)接口通信、無線局域網(wǎng)接口(IEEE802.11接口等)通信、通用串行總線(USB)接口通信、藍(lán)牙通信、紅外通信、無線保真(W1-Fi)通信以及IS07816通信等。加密鎖處于自鎖狀態(tài)時,軟件將無法調(diào)用加密鎖內(nèi)的預(yù)定義功能,如果軟件再次向加密鎖發(fā)出開始計時指令或者功能調(diào)用指令,加密鎖將返回預(yù)定義的錯誤碼。所述預(yù)定值可以由加密鎖提供商預(yù)設(shè),也可以由軟件開發(fā)商自定設(shè)定。加密鎖執(zhí)行完鎖內(nèi)功能后,可以將計時器清零并重新計時,也可以基于當(dāng)前的累計時間值繼續(xù)遞增,等待下一個功能調(diào)用指令或者終止計時指令。下面通過對某文字處理軟件的加密和保護(hù)過程說明本發(fā)明的方法。這是為了說明本發(fā)明的一個簡化實施例,實際的加密過程要比這個例子復(fù)雜得多,假設(shè)本例中只對字處理軟件的打印設(shè)置過程進(jìn)行加密,步驟如下:一、確定軟件需要加密的功能要素,比如控制頁面的大小、字體的大小、字體的間距、打印頁數(shù)等;也就是說,在當(dāng)受保護(hù)的軟件需要進(jìn)行打印時,其頁面的大小、字體的大小、字體間距的結(jié)果與加密鎖內(nèi)部計算密切相關(guān)。二、軟件向加密鎖發(fā)送開始計時指令,如果加密鎖未自鎖,則啟動計時器,開始累計時間。三、軟件向加密鎖發(fā)送功能調(diào)用指令,同時將要打印的內(nèi)容的特征信息發(fā)送給加密鎖,例如:字?jǐn)?shù)、段落數(shù)、預(yù)期的打印頁數(shù)。加密鎖接收到上述指令和數(shù)據(jù)后,先檢查當(dāng)前的累計時間值是否超過最大限定值,如果沒有超過最大限定值,那么調(diào)用內(nèi)部相應(yīng)的功能模塊,根據(jù)字?jǐn)?shù)、段落數(shù)、預(yù)期的打印頁數(shù)來估算字體的大小、字體的間距以及頁面的大小,計算完畢后將估算結(jié)果輸出給軟件。四、在步驟三中,如果軟件完成了加密鎖內(nèi)的功能調(diào)用,則向加密鎖發(fā)送終止計時指令,加密鎖接收到指令后,檢查當(dāng)前的累計時間值是否超過最大限定值,如果沒有超過最大限定值,那么加密鎖將停止計時,并將計時器清零,等待下一次限時調(diào)用。結(jié)合圖2,下面對本發(fā)明提供的加密鎖進(jìn)行詳細(xì)說明。加密鎖裝置是用于軟件版權(quán)保護(hù)的硬件設(shè)備,包括MCU、存儲器以及與CPU相連接的接口模塊。所述的存儲器與MCU相連接,用于保存用戶的數(shù)據(jù);所述的接口模塊與MCU相連接,負(fù)責(zé)MCU與主機(jī)CPU之間的通信。所述MCU、存儲器、接口模塊也可以集成到同一個芯片中,由單一的芯片提供所有的功能。加密鎖裝置內(nèi)部包括:通信模塊1、進(jìn)程管理模塊2、資源管理模塊3。通信模塊I負(fù)責(zé)加密鎖與終端設(shè)備(例如計算機(jī)主機(jī))之間的通信,通信方式可以是串行接口通信、并行接口通信、1394接口通信、射頻識別(RFID)接口通信、無線局域網(wǎng)接口(IEEE802.11接口等)通信、通用串行總線(USB)接口通信、藍(lán)牙接口通信、紅外接口通信、無線保真(W1-Fi)接口通信、IS07816串行通信等。進(jìn)程管理模塊2負(fù)責(zé)進(jìn)程的啟動、執(zhí)行和終止。所述進(jìn)程管理模塊2可以通過通信模塊I與計算機(jī)主機(jī)之間進(jìn)行通信,進(jìn)程啟動后,進(jìn)程也可以通過通信模塊I與計算機(jī)主機(jī)之間進(jìn)行通信。進(jìn)程管理模塊2可以根據(jù)需要自行啟動進(jìn)程,例如在加密鎖裝置上電啟動后即啟動進(jìn)程,也可以在接收到計算機(jī)主機(jī)的指令后啟動進(jìn)程。進(jìn)程啟動后即進(jìn)入執(zhí)行過程,所述進(jìn)程可以是一個循環(huán)執(zhí)行的程序代碼,在進(jìn)程管理模塊2終止進(jìn)程的執(zhí)行前始終保持運行狀態(tài)。進(jìn)程在執(zhí)行過程中可以接收計算機(jī)主機(jī)發(fā)送的調(diào)用指令、所需數(shù)據(jù)、獲取處理結(jié)果指令等,根據(jù)指令的要求在內(nèi)部轉(zhuǎn)移到相應(yīng)的程序分支,完成需要的處理過程。所述的內(nèi)部程序分支,可以是加密鎖預(yù)定義的內(nèi)部功能,比如數(shù)據(jù)的加密或解密處理,也可以是用戶自定義的程序片段。加密鎖裝置為進(jìn)程的執(zhí)行提供所需的內(nèi)存,內(nèi)存在加密鎖裝置的芯片內(nèi)部,外部無法直接訪問,以保證內(nèi)部執(zhí)行環(huán)境的安全。進(jìn)程可以將處理的最終結(jié)果或者所需的中間變量放置在加密鎖內(nèi)部的內(nèi)存中,當(dāng)受保護(hù)的軟件程序需要使用某次調(diào)用的處理結(jié)果時,進(jìn)程可以通過通信模塊I或者通過管理模塊和通信模塊I將所需的數(shù)據(jù)從內(nèi)存中取出并傳送給受保護(hù)的軟件程序。資源管理模塊3負(fù)責(zé)對加密鎖裝置內(nèi)部的資源進(jìn)行管理,包括前面所述的內(nèi)存管理、加密鎖裝置內(nèi)部的非易失存儲單元管理(例如Flash或者EEPR0M)、除接口模塊所使用到的IO端口之外的其它IO端口等。所述進(jìn)程可以通過資源管理模塊3對所述的資源進(jìn)行訪問,例如向Flash或者EEPROM中寫入或者讀出數(shù)據(jù)、通過控制某個IO端口實現(xiàn)指示燈的亮、滅等。資源管理模塊3也可以直接與通信模塊I相連,在受控制的情況下不通過進(jìn)程直接向計算機(jī)主機(jī)提供部分非敏感資源的訪問,例如指示燈的亮滅。本發(fā)明的加密鎖內(nèi)部除包括上述基本模塊外,還包括:第一判斷模塊4、自鎖模塊
7、數(shù)據(jù)處理模塊8、錯誤碼發(fā)送模塊9、計時器5和第二判斷模塊6 ;第一判斷模塊4用于在所述加密鎖接收到軟件發(fā)送的開始計時指令后檢查加密鎖是否處于自鎖狀態(tài),如果是,則加密鎖不能被調(diào)用;如果否,則所述加密鎖啟動所述計時器5開始累計時間,并向軟件發(fā)送允許調(diào)用指令;錯誤碼發(fā)送模塊9用于當(dāng)?shù)谝慌袛嗄K4檢查到加密鎖處于自鎖狀態(tài)時,向軟件返回預(yù)定義的錯誤碼;計時器5用于當(dāng)?shù)谝慌袛嗄K4判定加密鎖未處于自鎖狀態(tài)時開始累計時間;通信模塊I用于當(dāng)?shù)谝慌袛嗄K4判定加密鎖未處于自鎖狀態(tài)時向軟件發(fā)送允許調(diào)用指令;第二判斷模塊6用于在所述加密鎖接收到軟件發(fā)送的功能調(diào)用指令和所需數(shù)據(jù)后檢查所述計時器5當(dāng)前累計的時間是否超過預(yù)定值,如果是,則加密鎖進(jìn)入自鎖狀態(tài),如果否,則加密鎖對所述所需數(shù)據(jù)進(jìn)行處理后將處理結(jié)果返回給軟件;自鎖模塊7用于當(dāng)?shù)诙袛嗄K6判定計時器5當(dāng)前累計的時間超過預(yù)定值時使加密鎖進(jìn)入自鎖狀態(tài);數(shù)據(jù)處理模塊8用于當(dāng)?shù)诙袛嗄K6在加密鎖接收到軟件發(fā)送的功能調(diào)用指令和所需數(shù)據(jù)后判定計時器5當(dāng)前累計的時間未超過預(yù)定值時對所述所需數(shù)據(jù)進(jìn)行處理;通信模塊I還用于將數(shù)據(jù)處理模塊8的處理結(jié)果返回給軟件;第二判斷模塊6還用于在所述加密鎖接收到軟件發(fā)送的終止計時指令后檢查所述計時器5當(dāng)前累計的時間是否超過所述預(yù)定值,如果是,則加密鎖進(jìn)入自鎖狀態(tài),如果否,則所述計時器5停止計時,加密鎖等待下次調(diào)用;
計時器5還用于當(dāng)?shù)诙袛嗄K6在所述加密鎖接收到軟件發(fā)送的終止計時指令后判定計時器5當(dāng)前累計的時間未超過預(yù)定值時停止計時,將累計的時間清零。加密鎖處于自鎖狀態(tài)時,軟件將無法調(diào)用加密鎖內(nèi)的預(yù)定義功能。如果軟件再次向加密鎖發(fā)出開始計時指令或者功能調(diào)用指令,加密鎖將返回預(yù)定義的錯誤碼。所述預(yù)定值可以由加密鎖提供商預(yù)設(shè),也可以由軟件開發(fā)商自定設(shè)定。加密鎖執(zhí)行完鎖內(nèi)功能后,可以將計時器5清零并重新計時,也可以基于當(dāng)前的累計時間值繼續(xù)遞增,等待下一個功能調(diào)用指令或者終止計時指令。以上實施例僅為本發(fā)明的示例性實施例,不用于限制本發(fā)明,本發(fā)明的保護(hù)范圍由權(quán)利要求書限定。本領(lǐng)域技術(shù)人員可以在本發(fā)明的實質(zhì)和保護(hù)范圍內(nèi),對本發(fā)明做出各種修改或等同替換,這種修改或等同替換也應(yīng)視為落在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種利用加密鎖對軟件進(jìn)行保護(hù)的方法,所述軟件運行在終端設(shè)備中,所述終端設(shè)備與加密鎖相互通信連接,其特征在于,所述方法包括以下步驟: S1:軟件向加密鎖發(fā)送開始計時指令; 52:加密鎖接收到所述開始計時指令后檢查自身是否處于自鎖狀態(tài),如果是,則加密鎖不能被調(diào)用,結(jié)束執(zhí)行;如果否,則執(zhí)行步驟S3 ; 53:加密鎖啟動內(nèi)置的計時器開始累計時間,并向軟件發(fā)送允許調(diào)用指令; 54:軟件接收到所述允許調(diào)用指令后向加密鎖發(fā)送功能調(diào)用指令和所需數(shù)據(jù); S5:加密鎖接收到所述功能調(diào)用指令和所需數(shù)據(jù)后檢查所述計時器當(dāng)前累計的時間是否超過預(yù)定值,如果是,則執(zhí)行步驟S10,如果否,則執(zhí)行步驟S6 ; 56:加密鎖對所述所需數(shù)據(jù)進(jìn)行處理后將處理結(jié)果返回給軟件; 57:軟件接收到所述返回結(jié)果后向加密鎖發(fā)送終止計時指令; S8:加密鎖接收到所述終止計時指令后檢查所述計時器當(dāng)前累計的時間是否超過所述預(yù)定值,如果是,則執(zhí)行步驟S10,如果否,則執(zhí)行步驟S9 ; S9:所述計時器停止計時,加密鎖等待下次調(diào)用; SlO:加密鎖進(jìn)入自鎖狀態(tài)。
2.根據(jù)權(quán)利要求1所述的利用加密鎖對軟件進(jìn)行保護(hù)的方法,其特征在于,所述終端設(shè)備與加密鎖之間的通信方式為串行接口通信、并行接口通信、1394接口通信、射頻識別接口通信、無線局域網(wǎng)接口通信、通用串行總線接口通信、藍(lán)牙通信、紅外通信、無線保真通信或者IS07816通信。
3.根據(jù)權(quán)利要求1所述的利用加密鎖對軟件進(jìn)行保護(hù)的方法,其特征在于,步驟S2中,如果加密鎖處于自鎖狀態(tài),則還包括:加密鎖向軟件返回預(yù)定義的錯誤碼的步驟。
4.根據(jù)權(quán)利要求1所述的利用加密鎖對軟件進(jìn)行保護(hù)的方法,其特征在于,步驟S3中,所述計時器啟動時先清零上次調(diào)用時累計的時間。
5.根據(jù)權(quán)利要求1所述的利用加密鎖對軟件進(jìn)行保護(hù)的方法,其特征在于,步驟S9中,所述計時器停止計時后將累計的時間清零。
6.一種加密鎖,用于對軟件進(jìn)行保護(hù),所述軟件運行在終端設(shè)備中,所述終端設(shè)備與加密鎖相互通信連接,其特征在于,所述加密鎖包括第一判斷模塊、通信模塊、自鎖模塊、數(shù)據(jù)處理模塊、計時器和第二判斷模塊; 所述第一判斷模塊用于在所述加密鎖接收到軟件發(fā)送的開始計時指令后檢查加密鎖是否處于自鎖狀態(tài),所述自鎖狀態(tài)為加密鎖不能被調(diào)用的狀態(tài); 所述計時器用于當(dāng)所述第一判斷模塊判定加密鎖未處于自鎖狀態(tài)時開始累計時間; 所述通信模塊用于當(dāng)所述第一判斷模塊判定加密鎖未處于自鎖狀態(tài)時向軟件發(fā)送允許調(diào)用指令,以及接收軟件接收到所述允許調(diào)用指令后向加密鎖發(fā)送的功能調(diào)用指令和所需數(shù)據(jù); 所述第二判斷模塊用于在所述加密鎖接收到軟件發(fā)送的功能調(diào)用指令和所需數(shù)據(jù)后檢查所述計時器當(dāng)前累計的時間是否超過預(yù)定值; 所述自鎖模塊用于當(dāng)所述第二判斷模塊判定所述計時器當(dāng)前累計的時間超過預(yù)定值時使加密鎖進(jìn)入自鎖狀態(tài); 所述數(shù)據(jù)處理模塊用于當(dāng)所述第二判斷模塊在加密鎖接收到軟件發(fā)送的功能調(diào)用指令和所需數(shù)據(jù)后判定所述計時器當(dāng)前累計的時間未超過預(yù)定值時對所述所需數(shù)據(jù)進(jìn)行處理; 所述通信模塊還用于將所述數(shù)據(jù)處理模塊的處理結(jié)果返回給軟件; 所述第二判斷模塊還用于在所述加密鎖接收到軟件發(fā)送的終止計時指令后檢查所述計時器當(dāng)前累計的時間是否超過所述預(yù)定值; 所述計時器還用于當(dāng)所述第二判斷模塊在所述加密鎖接收到軟件發(fā)送的終止計時指令后判定所述計時器當(dāng)前累計的時間未超過預(yù)定值時停止計時。
7.根據(jù)權(quán)利要求6所述的加密鎖,其特征在于,所述終端設(shè)備與加密鎖之間的通信方式為串行接口通信、并行接口通信、1394接口通信、射頻識別接口通信、無線局域網(wǎng)接口通信、通用串行總線接口通信、藍(lán)牙通信、紅外通信、無線保真通信或者IS07816通信。
8.根據(jù)權(quán)利要求6所述的加密鎖,其特征在于,還包括錯誤碼發(fā)送模塊,其用于當(dāng)所述第一判斷模塊檢查到加密鎖處 于自鎖狀態(tài)時,向軟件返回預(yù)定義的錯誤碼。
9.根據(jù)權(quán)利要求6所述的加密鎖,其特征在于,所述預(yù)定值由加密鎖提供商預(yù)設(shè)或者由軟件開發(fā)商設(shè)定。
10.根據(jù)權(quán)利要求6所述的加密鎖,其特征在于,所述計時器還用于在停止計時后將累計的時間清零或者在啟動時清零上次調(diào)用時累計的時間。
全文摘要
本發(fā)明公開了一種利用加密鎖對軟件進(jìn)行保護(hù)的方法及加密鎖,所述方法包括以下步驟軟件向加密鎖發(fā)送開始計時指令;加密鎖檢查自身是否處于自鎖狀態(tài),如果否,則加密鎖啟動計時器開始累計時間;軟件向加密鎖發(fā)送功能調(diào)用指令和所需數(shù)據(jù);加密鎖檢查計時器當(dāng)前累計的時間是否超過預(yù)定值,如果是,則加密鎖進(jìn)入自鎖狀態(tài),如果否,則加密鎖將處理結(jié)果返回給軟件;軟件向加密鎖發(fā)送終止計時指令;加密鎖檢查當(dāng)前累計的時間是否超過預(yù)定值,如果是,則加密鎖進(jìn)入自鎖狀態(tài),如果否,則計時器停止計時,加密鎖等待下次調(diào)用。通過利用加密鎖內(nèi)部的計時器,對軟件調(diào)用加密鎖進(jìn)行限時,有效地提高了破解者動態(tài)調(diào)試及破解的難度。
文檔編號G06F21/12GK103186729SQ20131010001
公開日2013年7月3日 申請日期2013年3月26日 優(yōu)先權(quán)日2013年3月26日
發(fā)明者孫吉平, 韓勇 申請人:北京深思數(shù)盾科技有限公司