專利名稱:一種控制軟件保護(hù)裝置中可執(zhí)行文件執(zhí)行的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)安全領(lǐng)域,特別涉及一種控制軟件保護(hù)裝置中可執(zhí)行文件執(zhí)行的方法。
背景技術(shù):
軟件作為一種特殊的產(chǎn)品,由于其純數(shù)字化的特征,從問世起就一直遭受盜版的困擾。盜版的存在不僅給軟件開發(fā)者造成了巨大的損失,也極大阻礙了整個軟件行業(yè)的發(fā)展。因此,幾乎所有的軟件都采取了相應(yīng)的技術(shù)措施來避免軟件遭受破解和盜版,其中最為有效的就是基于硬件的軟件保護(hù)裝置。軟件保護(hù)裝置是一種通過計(jì)算機(jī)硬件接口(諸如串口、并口、USB接口等多種接口)連接到計(jì)算機(jī)主機(jī)上的硬件設(shè)備。該設(shè)備內(nèi)部具有非易失性存儲空間可供讀寫,通常還具有單片機(jī)或者微處理控制芯片等計(jì)算處理單元。軟件開發(fā)者可以通過接口函數(shù)和軟件保護(hù)裝置進(jìn)行數(shù)據(jù)交換(即對軟件保護(hù)裝置進(jìn)行讀寫),來檢查軟件保護(hù)裝置是否插在接口上;或者直接用軟件保護(hù)裝置附帶的工具進(jìn)行加密。這樣,軟件開發(fā)者可以在軟件中設(shè)置多處軟件鎖,利用軟件保護(hù)裝置作為鑰匙來打開這些鎖;如果沒插軟件保護(hù)裝置或軟件保護(hù)裝置不對應(yīng),軟件將不能正常執(zhí)行。此外,軟件保護(hù)裝置內(nèi)部包含特定的功能,例如一部分存儲空間、一些密碼算法或者一些使用者自定義的算法或者功能。在軟件發(fā)行之前,軟件開發(fā)者修改自己的軟件代碼,使得軟件在運(yùn)行過程中需要使用到軟件保護(hù)裝置內(nèi)部的一些功能,這樣軟件離開軟件保護(hù)裝置之后就會無法運(yùn)行,而軟件保護(hù)裝置作為一種硬件設(shè)備復(fù)制的難度較大,從而起到防止盜版軟件非法傳播的作用。當(dāng)前市場上主要的軟件保護(hù)裝置包括:美國SafeNet公司的Sentinel Superpro>以色列Aladdin公司的Hasp HL、中國北京深思洛克數(shù)據(jù)保護(hù)中心的精銳IV、德國W1-Bu公司的WIBU-Key等。所有這些軟件保護(hù)裝置都提供了內(nèi)置的存儲空間、私有或公開的密碼算法,當(dāng)軟件運(yùn)行過程中可以調(diào)用這些功能來檢驗(yàn)是否屬于正版。其中北京深思洛克數(shù)據(jù)保護(hù)中心的精銳IV于2002年上市,其特點(diǎn)是采用了智能卡芯片作為硬件的基礎(chǔ),而且支持使用者將自己定義的功能寫入到軟件保護(hù)裝置內(nèi)部,甚至可以直接將軟件的部分功能移植到軟件保護(hù)裝置內(nèi)部完成,從而大大提高了軟件被盜版的難度,通常稱這種將自己定義的功能或者軟件的部分功能移植到軟件保護(hù)裝置內(nèi)部的技術(shù)為代碼移植。北京深思洛克數(shù)據(jù)保護(hù)中心是本申請人的前身,現(xiàn)在對應(yīng)網(wǎng)站為http://www.sense, com, cn/,其中詳細(xì)公開了本申請人開發(fā)的精銳IV型軟件保護(hù)裝置的具體參數(shù)性能和工作原理。在軟件版權(quán)保護(hù)領(lǐng)域,經(jīng)常通過授權(quán)許可的方式對軟件保護(hù)裝置內(nèi)的可執(zhí)行文件的各種使用方式進(jìn)行限制。關(guān)于軟件保護(hù)裝置內(nèi)運(yùn)行可執(zhí)行文件這種技術(shù)的詳細(xì)描述,請參考本申請人以前申請的申請?zhí)枮?00610064823.6的發(fā)明專利申請,這部分內(nèi)部不在本發(fā)明中進(jìn)行詳細(xì)描述,而該申請全文引入本發(fā)明的說明書中以作為技術(shù)參考。具體而言,現(xiàn)有技術(shù)中例如通過限制所述可執(zhí)行文件的使用次數(shù)、限制所述可執(zhí)行文件的使用天數(shù)以及規(guī)定所述可執(zhí)行文件使用的到期時間等,從而對軟件保護(hù)裝置內(nèi)部的可執(zhí)行文件進(jìn)行特定方式的限制。其具體方式是在所述可執(zhí)行文件運(yùn)行之前,首先檢查與其關(guān)聯(lián)的授權(quán)文件來判定所述可執(zhí)行文件是否可以運(yùn)行。現(xiàn)有技術(shù)中通常的實(shí)現(xiàn)這種檢查、判斷的方式是:在軟件保護(hù)裝置內(nèi)的可執(zhí)行文件中添加驗(yàn)證授權(quán)的邏輯代碼,從而驗(yàn)證關(guān)聯(lián)的授權(quán)文件是否有效。但是這種方式必然會增加開發(fā)軟件保護(hù)裝置內(nèi)可執(zhí)行文件的復(fù)雜度,影響其工作效率,而且也容易出錯,增加了軟件正確運(yùn)行的風(fēng)險。更重要的是,如果需要對已發(fā)布的軟件添加授權(quán)或更改授權(quán)條件,由于驗(yàn)證授權(quán)的邏輯已經(jīng)存在于軟件保護(hù)裝置內(nèi)的可執(zhí)行文件中,所以就必須對所述可執(zhí)行文件也進(jìn)行更新,這樣更進(jìn)一步地增加了升級軟件保護(hù)裝置內(nèi)部授權(quán)功能的工作量。此外,現(xiàn)有技術(shù)中也提及一種控制方法,從而控制一個設(shè)備中的可執(zhí)行文件的執(zhí)行。參見申請?zhí)枮?00810098164.7的發(fā)明專利申請,其發(fā)明名稱為《控制用于IC卡的小應(yīng)用程序運(yùn)行的方法》。該技術(shù)中通過一個存儲在IC卡的存儲區(qū)中的平臺識別號來簡單判定在所述IC卡中運(yùn)行的小應(yīng)用程序是否可以執(zhí)行,也就是說,能在該平臺上運(yùn)行的小應(yīng)用程序都必須能被該平臺所識別。但是,這種技術(shù)的判斷情況比較單一,無法進(jìn)行更加靈活和豐富的判斷以滿足不同的開發(fā)和應(yīng)用需求。而且這種技術(shù)在可執(zhí)行文件沒有相關(guān)聯(lián)的授權(quán)文件時不能運(yùn)行的,無法根據(jù)實(shí)際情況自行決定在沒有授權(quán)情況下是否可以執(zhí)行,造成其使用范圍受到了一定程度的限制。另外,這種技術(shù)的應(yīng)用場景范圍較窄,主要是應(yīng)用在IC卡上,目的是防止其他人私自編寫的不被識別的應(yīng)用程序在所述平臺上運(yùn)行,以保護(hù)IC卡的合法使用。這種技術(shù)不能應(yīng)用在軟件保護(hù)裝置中,軟件開發(fā)者在使用軟件保護(hù)裝置對其軟件產(chǎn)品進(jìn)行保護(hù)時無法方便地對其中的可執(zhí)行文件進(jìn)行授權(quán)管理。此外,這種技術(shù)中的代碼編寫過程非常復(fù)雜,增加了代碼編寫的工作量、效率和成本。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種控制軟件保護(hù)裝置內(nèi)可執(zhí)行文件執(zhí)行的方法,使得在開發(fā)所述軟件保護(hù)裝置內(nèi)的可執(zhí)行文件時只需考慮所述可執(zhí)行文件本身的業(yè)務(wù)邏輯功能,而不必考慮添加驗(yàn)證授權(quán)和管理授權(quán)的邏輯代碼。所述軟件保護(hù)裝置可以自動查找到所述可執(zhí)行文件關(guān)聯(lián)的授權(quán)文件并驗(yàn)證各授權(quán)項(xiàng)是否有效,并且在驗(yàn)證通過后由所述軟件保護(hù)裝置來修改所述授權(quán)文件的各授權(quán)項(xiàng)。另外,本發(fā)明應(yīng)用在軟件保護(hù)裝置中,目的是為了方便軟件開發(fā)者在使用所述軟件保護(hù)裝置對其軟件產(chǎn)品進(jìn)行保護(hù)時,對其中的可執(zhí)行文件進(jìn)行授權(quán)管理,擴(kuò)大了軟件保護(hù)裝置的易用性。根據(jù)本發(fā)明的一個方面,一種控制軟件保護(hù)裝置內(nèi)的可執(zhí)行文件執(zhí)行的方法,所述軟件保護(hù)裝置是用于軟件保護(hù)的硬件設(shè)備,該方法包括如下步驟:步驟1:所述軟件保護(hù)裝置接收到受保護(hù)軟件發(fā)出的運(yùn)行可執(zhí)行文件的命令時,檢查所述軟件保護(hù)裝置中是否存在與所述可執(zhí)行文件關(guān)聯(lián)的授權(quán)文件;步驟2:如果存在與所述可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件,則檢查所述授權(quán)文件并判斷所述授權(quán)文件中的授權(quán)項(xiàng)是否符合預(yù)定條件,從而確定在是否在所述軟件保護(hù)裝置內(nèi)執(zhí)行所述軟件保護(hù)裝置中的可執(zhí)行文件;步驟3:如果不存在與所述可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件,則根據(jù)預(yù)先確定的執(zhí)行規(guī)則,確定在是否在所述軟件保護(hù)裝置內(nèi)執(zhí)行所述軟件保護(hù)裝置中的可執(zhí)行文件。根據(jù)本發(fā)明方法的一個方面,在步驟I中,所述軟件保護(hù)裝置根據(jù)預(yù)定的關(guān)聯(lián)對應(yīng)關(guān)系,檢查所述軟件保護(hù)裝置中是否存在與所述可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件。根據(jù)本發(fā)明方法的一個方面,在步驟2中,當(dāng)所述授權(quán)項(xiàng)中的一個授權(quán)項(xiàng)符合預(yù)定條件時,執(zhí)行所述軟件保護(hù)裝置內(nèi)的所述可執(zhí)行文件,或者當(dāng)所述授權(quán)項(xiàng)中的多個授權(quán)項(xiàng)都符合預(yù)定條件時,執(zhí)行所述軟件保護(hù)裝置內(nèi)的所述可執(zhí)行文件。根據(jù)本發(fā)明方法的一個方面,由所述軟件保護(hù)裝置的開發(fā)者或者使用者設(shè)定所述可執(zhí)行文件與所述授權(quán)文件的關(guān)聯(lián)方式。根據(jù)本發(fā)明方法的一個方面,所述可執(zhí)行文件與所述授權(quán)文件的關(guān)聯(lián)方式包括:自動關(guān)聯(lián)所述可執(zhí)行文件和所述授權(quán)文件,或者手動關(guān)聯(lián)所述可執(zhí)行文件和所述授權(quán)文件。根據(jù)本發(fā)明方法的一個方面,執(zhí)行所述可執(zhí)行文件之后,所述軟件保護(hù)裝置修改所述授權(quán)文件中的授權(quán)項(xiàng)的值,然后將修改后的所述授權(quán)項(xiàng)的值保存到所述授權(quán)文件中。。
圖1是按照本發(fā)明一個實(shí)施例的在軟件保護(hù)裝置上的可執(zhí)行文件和授權(quán)文件的一種關(guān)聯(lián)方式示意圖。圖2是對比現(xiàn)有技術(shù)與本發(fā)明的流程示意圖。圖3是根據(jù)圖1的關(guān)聯(lián)方式來運(yùn)行軟件保護(hù)裝置內(nèi)的一個可執(zhí)行文件時的流程圖。圖4是按照本發(fā)明另一個實(shí)施例的在軟件保護(hù)裝置上的可執(zhí)行文件和授權(quán)文件的另一種關(guān)聯(lián)方式示意圖。圖5是根據(jù)圖4的關(guān)聯(lián)方式來運(yùn)行軟件保護(hù)裝置內(nèi)的一個可執(zhí)行文件時的流程圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。本發(fā)明是通過檢查可執(zhí)行文件的各項(xiàng)授權(quán)內(nèi)容來判定是否可以執(zhí)行,判斷條件比現(xiàn)有技術(shù)更加靈活和豐富,而且在可執(zhí)行文件沒有相關(guān)聯(lián)的授權(quán)文件時也不是一定不能運(yùn)行的,可以根據(jù)實(shí)際情況自行決定在沒有授權(quán)情況下是否可以執(zhí)行,從而增加了可執(zhí)行文件的執(zhí)行靈活度。根據(jù)本發(fā)明的一個具體實(shí)施方式
,本發(fā)明中的軟件保護(hù)裝置為用于軟件版權(quán)保護(hù)的硬件設(shè)備,從硬件結(jié)構(gòu)角度而言,包括微控制器單元(Micro Control Unit,下稱MCU)、存儲器以及用于與計(jì)算機(jī)主機(jī)相連接的接口模塊。根據(jù)本發(fā)明的一個具體實(shí)施方式
,所述的存儲器與MCU相連接,用于保存的數(shù)據(jù)。所述存儲器包括但不限于非易失性存儲器、易失性存儲器。根據(jù)本發(fā)明的一個具體實(shí)施方式
,所述的接口模塊與MCU相連接,負(fù)責(zé)MCU與計(jì)算機(jī)主機(jī)之間的通信。所述的接口模塊包括但不限于串行接口、并行接口、1394接口、射頻識別(RFID)接口、無線局域網(wǎng)接口(IEEE802.11接口等)、通用串行總線(USB)接口、藍(lán)牙接口、紅外接口、無線保真(W1-Fi)接口、ISO 7816串行等。根據(jù)本發(fā)明的一個具體實(shí)施方式
,所述MCU、存儲器、接口模塊也可以集成到同一個芯片中,由單一的芯片提供所有的功能。根據(jù)本發(fā)明的一個具體實(shí)施方式
,軟件保護(hù)裝置內(nèi)部的功能模塊包括:通信模塊、存儲模塊、文件系統(tǒng)、授權(quán)管理模塊。作為一種實(shí)施例,軟件保護(hù)裝置中的這些模塊都是通過軟件代碼實(shí)現(xiàn)的,類似于Windows操作系統(tǒng)運(yùn)行在計(jì)算機(jī)硬件上一樣,所述多個模塊運(yùn)行在軟件保護(hù)裝置的硬件芯片上。當(dāng)然,本領(lǐng)域的技術(shù)人員根據(jù)本發(fā)明所揭示和教導(dǎo)的內(nèi)容,完全能夠采用其它的方式(包括但不限于硬件、固件、軟件的形式)來實(shí)現(xiàn)這些模塊以完成類似的功能,或者對這些模塊進(jìn)行更進(jìn)一步的合并、拆分、組合以實(shí)現(xiàn)類似的功能??傊诖藘H描述本發(fā)明的核心思想和具體實(shí)施例,并不意味著本發(fā)明的實(shí)施以及要求保護(hù)的范圍僅受具體實(shí)施例的限制。其中,通信模塊,用于軟件保護(hù)裝置與計(jì)算機(jī)主機(jī)之間的通信。通信方式包括但不限于串行接口通信、并行接口通信、1394接口通信、射頻識別(RFID)接口通信、無線局域網(wǎng)接口(IEEE802.11接口等)通信、通用串行總線(USB)接口通信、藍(lán)牙接口通信、紅外接口通信、無線保真(W1-Fi)接口通信、ISO 7816串行通信等。存儲模塊,用于存儲使用者移植到軟件保護(hù)裝置內(nèi)部的可執(zhí)行代碼,當(dāng)+需要啟動軟件保護(hù)裝置內(nèi)部的使用者進(jìn)程時,進(jìn)程管理模塊會到存儲模塊中找到對應(yīng)的代碼,然后執(zhí)行。文件系統(tǒng),用于存儲和管理軟件保護(hù)裝置中的各種文件。授權(quán)管理模塊,用于實(shí)現(xiàn)通過軟件保護(hù)裝置的硬件自動管理授權(quán)文件。該模塊用于管理軟件保護(hù)裝置內(nèi)的可執(zhí)行文件和授權(quán)文件的關(guān)聯(lián)方式、修改授權(quán)文件各授權(quán)項(xiàng)的值以及在沒有關(guān)聯(lián)的可執(zhí)行文件和授權(quán)文件時控制是否運(yùn)行軟件保護(hù)裝置內(nèi)的可執(zhí)行文件等操作。根據(jù)本發(fā)明的一個具體實(shí)施方式
,實(shí)現(xiàn)本發(fā)明的操作步驟包括:步驟A:軟件保護(hù)裝置通過其通信模塊接收到受保護(hù)軟件發(fā)出的運(yùn)行可執(zhí)行文件的命令時,首先由軟件保護(hù)裝置的授權(quán)管理模塊檢查所述可執(zhí)行文件是否存在關(guān)聯(lián)的授權(quán)文件。具體而言,軟件保護(hù)裝置內(nèi)的可執(zhí)行文件和授權(quán)文件是否關(guān)聯(lián)是根據(jù)預(yù)先確定的關(guān)聯(lián)規(guī)則進(jìn)行判斷的。作為一種示例,可以有兩種方式進(jìn)行判斷:一種是由軟件保護(hù)裝置的開發(fā)者來定義所述關(guān)聯(lián)規(guī)則。作為一種示例,例如通過文件名相同、擴(kuò)展名不同的方式將可執(zhí)行文件和授權(quán)文件相關(guān)聯(lián)。如果采用這種關(guān)聯(lián)方式,軟件保護(hù)裝置的開發(fā)者需要將這種關(guān)聯(lián)規(guī)則以程序代碼形式寫入軟件保護(hù)裝置的授權(quán)管理模塊。這樣,每次在執(zhí)行可執(zhí)行文件時,都會通過這種固定的方式來檢查是否存在與所執(zhí)行的可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件。這種關(guān)聯(lián)方式稱為自動關(guān)聯(lián)方式。所謂自動關(guān)聯(lián)就是軟件保護(hù)裝置內(nèi)的授權(quán)管理模塊預(yù)先定義了一套可執(zhí)行文件和授權(quán)文件相關(guān)聯(lián)的規(guī)則,當(dāng)需要杳找關(guān)聯(lián)文件時軟件保護(hù)裝置按照這套預(yù)定義規(guī)則自動杳找可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件或者授權(quán)文件相關(guān)聯(lián)的可執(zhí)行文件。在下載一對關(guān)聯(lián)文件時也需要按照這種規(guī)則約定這兩個文件,比如規(guī)則為文件名相同,擴(kuò)展名不同的兩個文件相關(guān)聯(lián),那么下載到軟件保護(hù)裝置內(nèi)的兩個文件名相同擴(kuò)展名不同的可執(zhí)行文件和授權(quán)文件便可以自動關(guān)聯(lián)上了。另一種是由使用者指定軟件保護(hù)裝置內(nèi)的某個可執(zhí)行文件和某個授權(quán)文件相關(guān)聯(lián)。作為一種示例,這種關(guān)聯(lián)的實(shí)現(xiàn)方式是在軟件保護(hù)裝置的授權(quán)管理模塊內(nèi)維護(hù)一個關(guān)聯(lián)表,記錄使用者指定的可執(zhí)行文件和授權(quán)文件的關(guān)聯(lián)對,而在使用者使用時則可以提供若干個操作關(guān)聯(lián)表的應(yīng)用程序接口函數(shù)(API函數(shù))。通過這些函數(shù)在所述關(guān)聯(lián)表上添加、刪除、查詢和修改關(guān)聯(lián)記錄。這樣,在運(yùn)行可執(zhí)行文件之前,由軟件保護(hù)裝置的授權(quán)管理模塊來檢查待運(yùn)行的可執(zhí)行文件是否在關(guān)聯(lián)表內(nèi)存在與其相對應(yīng)的授權(quán)文件。這種關(guān)聯(lián)方式稱為手動關(guān)聯(lián)方式。所謂手動關(guān)聯(lián)是指軟件保護(hù)裝置內(nèi)的可執(zhí)行文件和授權(quán)文件是否關(guān)聯(lián)是由軟件保護(hù)裝置的用戶來定義,可以通過API提供的接口或其他方式告訴軟件保護(hù)裝置哪些文件是關(guān)聯(lián)的,軟件保護(hù)裝置就可以記錄下這些關(guān)聯(lián)的文件,將來杳找相關(guān)聯(lián)的文件時只需要杳找關(guān)聯(lián)記錄即可。作為一種示例,步驟A中所述檢查流程為:軟件保護(hù)裝置接收到運(yùn)行可執(zhí)行文件的命令時,首先通過授權(quán)管理模塊檢查待運(yùn)行的可執(zhí)行文件是否存在關(guān)聯(lián)的授權(quán)文件;如果存在關(guān)聯(lián)的授權(quán)文件,則開始檢查此授權(quán)文件;如果不存在關(guān)聯(lián)的授權(quán)文件,則直接開始執(zhí)行可執(zhí)行文件或者不執(zhí)行。其中當(dāng)不存在關(guān)聯(lián)的授權(quán)文件時,是否執(zhí)行可執(zhí)行文件也可由軟件保護(hù)裝置的開發(fā)者預(yù)先確定。當(dāng)不存在關(guān)聯(lián)的授權(quán)文件時執(zhí)行可執(zhí)行文件,意味著不強(qiáng)制要求所有的可執(zhí)行文件都具有與之相關(guān)聯(lián)的授權(quán)文件對其進(jìn)行限制。當(dāng)不存在關(guān)聯(lián)的授權(quán)文件時不執(zhí)行可執(zhí)行文件,則意味所有可執(zhí)行文件都強(qiáng)制要求具有與之相關(guān)聯(lián)的授權(quán)文件。作為一種具體實(shí)施方式
,這種預(yù)先確定的規(guī)則是需要以程序代碼形式寫入軟件保護(hù)裝置的授權(quán)管理模塊中。一旦寫入后,軟件保護(hù)裝置的使用者不能修改這種預(yù)先確定的規(guī)則。當(dāng)然為了靈活起見,作為另一種具體實(shí)施方式
,將由開發(fā)者規(guī)定的關(guān)聯(lián)規(guī)則和使用者規(guī)定的關(guān)聯(lián)規(guī)則都寫入授權(quán)管理模塊,以應(yīng)用程序接口(API)的形式為使用者留出一個可供選擇的應(yīng)用程序接口,以便使用者能夠指定采用何種預(yù)先確定的關(guān)聯(lián)規(guī)則。步驟B:如果不存在與所述可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件,則根據(jù)上述預(yù)先定義的規(guī)則,確定是否在軟件保護(hù)裝置內(nèi)執(zhí)行或不執(zhí)行所述軟件保護(hù)裝置內(nèi)的可執(zhí)行文件;步驟C:如果存在與所述可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件,則開始檢查授權(quán)文件。舉例而言,授權(quán)文件是存儲對軟件保護(hù)裝置內(nèi)其他文件的使用權(quán)限的授權(quán)的文件,一般以TLV(Tag-Length-Value)結(jié)構(gòu)存儲,T代表后續(xù)VALUE的意義,L指明VALUE的長度,VALUE是真正的數(shù)據(jù)。和其他文件一樣,授權(quán)文件也存放在軟件保護(hù)裝置的文件系統(tǒng)中。而授權(quán)項(xiàng)是授權(quán)文件內(nèi)具體的授權(quán)內(nèi)容,采用TLV格式表示,例如限制使用次數(shù)的授權(quán)項(xiàng)可以表示為0x00 0x04 0x00 OxFF 0x00 0x00 0x00,第一個字節(jié)0x00是使用次數(shù)的標(biāo)志,第二個字0x04 0x00是表示后續(xù)Value的長度為4,最后4個字節(jié)OxFF 0x000x00 0x00表示可用的次數(shù)為OxFF即255次。然后判斷各授權(quán)項(xiàng)是否滿足條件,即,授權(quán)文件的各個授權(quán)項(xiàng)是否都是合法的。例如可用次數(shù)的授權(quán)項(xiàng)為255,而授權(quán)文件中記錄的已用次數(shù)小于255則認(rèn)為該授權(quán)項(xiàng)是滿足條件的,否則不滿足條件。并根據(jù)檢查結(jié)果,決定是否執(zhí)行所述可執(zhí)行文件。根據(jù)本發(fā)明的一個具體實(shí)施方式
,步驟A中檢查軟件保護(hù)裝置內(nèi)可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件是否存在,其關(guān)聯(lián)方式可以有多種選擇,例如通過匹配文件名或文件的其他屬性來自動關(guān)聯(lián)所述可執(zhí)行文件和所述授權(quán)文件,或者通過人工手動指定的方式來指定一對可執(zhí)行文件和授權(quán)文件相關(guān)聯(lián)。其中所述文件的其他屬性還包括文件的大小、類型、修改時間等。根據(jù)本發(fā)明的一個具體實(shí)施方式
,步驟B中如果檢查到所述可執(zhí)行文件不存在與之相關(guān)聯(lián)的授權(quán)文件,則根據(jù)預(yù)先定義的規(guī)則來決定是否予以執(zhí)行。其中,預(yù)先定義的規(guī)則包括:如果沒有關(guān)聯(lián)的授權(quán)文件,則軟件保護(hù)裝置內(nèi)的可執(zhí)行文件直接開始執(zhí)行,即不強(qiáng)制要求所述可執(zhí)行文件必須有關(guān)聯(lián)的授權(quán)文件才允許在軟件保護(hù)裝置上執(zhí)行;如果沒有關(guān)聯(lián)的授權(quán)文件,則軟件保護(hù)裝置內(nèi)的可執(zhí)行文件不予以執(zhí)行,即強(qiáng)制要求所述可執(zhí)行文件必須有關(guān)聯(lián)的授權(quán)文件才允許在軟件保護(hù)裝置上運(yùn)行。根據(jù)本發(fā)明的一個具體實(shí)施方式
,步驟C中對于檢查授權(quán)項(xiàng)的結(jié)果,是所有授權(quán)項(xiàng)必須都滿足條件才執(zhí)行軟件保護(hù)裝置內(nèi)的可執(zhí)行文件,或者只要滿足一項(xiàng)授權(quán)項(xiàng)的條件即可執(zhí)行軟件保護(hù)裝置內(nèi)的可執(zhí)行文件。下面結(jié)合具體實(shí)施例,對本發(fā)明的技術(shù)內(nèi)容進(jìn)一步闡述。對于本領(lǐng)域的技術(shù)人員而言,本實(shí)施例僅是為了說明本發(fā)明的應(yīng)用簡化實(shí)施例。本領(lǐng)域的技術(shù)人員很明顯知道,實(shí)際的應(yīng)用過程可能比這個例子復(fù)雜得多,但是其并未脫離本發(fā)明的具體思想。此外,所述軟件保護(hù)裝置中存在文件系統(tǒng),其中的文件系統(tǒng)用于存放可執(zhí)行文件、授權(quán)文件、數(shù)據(jù)文件、密鑰文件等多種文件,并且支持多級目錄結(jié)構(gòu)。軟件保護(hù)裝置在接受到主機(jī)的執(zhí)行文件命令時,在軟件保護(hù)裝置內(nèi)部運(yùn)行可執(zhí)行文件,并且將運(yùn)行結(jié)果發(fā)送到主機(jī)。關(guān)于軟件保護(hù)裝置的結(jié)構(gòu)和工作原理請參考本申請人之前的中國發(fā)明專利申請200610064823.6。實(shí)施例1根據(jù)本發(fā)明的一個具體實(shí)施方式
,參考圖1,由于軟件保護(hù)裝置的文件系統(tǒng)支持多級目錄,所以在本實(shí)施例中,可執(zhí)行文件存放在軟件保護(hù)裝置的文件系統(tǒng)中exe目錄下,而授權(quán)文件存放在license目錄下。當(dāng)運(yùn)行軟件保護(hù)裝置的文件系統(tǒng)中exe目錄下的可執(zhí)行文件test時,在軟件保護(hù)裝置的文件系統(tǒng)中l(wèi)icense目錄下根據(jù)是否存在相同的文件名“test”,查找license目錄下是否存在與可執(zhí)行文件test其關(guān)聯(lián)的授權(quán)文件test。軟件保護(hù)裝置中的文件系統(tǒng)及其中可執(zhí)行文件與授權(quán)文件相互關(guān)聯(lián)的情況如圖1所示。實(shí)施例1中采用的關(guān)聯(lián)方式為上述兩種方式的第一種,即自動關(guān)聯(lián)。關(guān)聯(lián)規(guī)則是由軟件保護(hù)裝置的開發(fā)者在生產(chǎn)軟件保護(hù)裝置時以程序代碼形式寫入所述軟件保護(hù)裝置的授權(quán)管理模塊中。很明顯,exe目錄和license目錄這兩個目錄既可以由軟件保護(hù)裝置的開發(fā)者建立也可以由使用者建立。關(guān)聯(lián)的規(guī)則已經(jīng)在所述軟件保護(hù)裝置的授權(quán)管理模塊中預(yù)先定義過了,即,僅在運(yùn)行exe目錄中的可執(zhí)行文件時自動查找license目錄下的同名授權(quán)文件與其關(guān)聯(lián)。也就是說,該方式下通過在兩個目錄中查找相同文件名的文件的方式來確定兩者之間的關(guān)聯(lián)關(guān)系。根據(jù)本發(fā)明的一個具體實(shí)施方式
,在本實(shí)施例中,授權(quán)文件包含三個授權(quán)項(xiàng):使用次數(shù)、使用天數(shù)和到期時間。分別約束與其關(guān)聯(lián)的可執(zhí)行文件可以使用的次數(shù)、天數(shù)和到期時間。另外,授權(quán)文件test中還包含兩個授權(quán)項(xiàng):已用次數(shù)和已用天數(shù),分別記錄與其關(guān)聯(lián)的可執(zhí)行文件已經(jīng)使用的天數(shù)和次數(shù)。圖3是根據(jù)本發(fā)明所述方法來運(yùn)行軟件保護(hù)裝置內(nèi)的一個可執(zhí)行文件test時的流程圖。如圖3所示,軟件保護(hù)裝置執(zhí)行軟件保護(hù)裝置文件系統(tǒng)中exe目錄下的可執(zhí)行文件test時的步驟如下:步驟201:軟件保護(hù)裝置接收到由受保護(hù)軟件發(fā)出的運(yùn)行可執(zhí)行文件test的命令,開始查找軟件保護(hù)裝置的文件系統(tǒng)中l(wèi)icense目錄下的授權(quán)文件test,并進(jìn)入步驟202 ;步驟202:判斷l(xiāng)icense目錄下是否存在授權(quán)文件test。如果軟件保護(hù)裝置中的授權(quán)管理模塊通過調(diào)用軟件保護(hù)裝置中的文件系統(tǒng)從而判斷出所述license目錄下不存在授權(quán)文件test,則直接跳轉(zhuǎn)到步驟208,開始執(zhí)行所述exe目錄中的可執(zhí)行文件test ;否則,如果license目錄中存在授權(quán)文件test,則進(jìn)行下一步檢查授權(quán)項(xiàng);否則直接開始運(yùn)行裝置內(nèi)的可執(zhí)行文件。具體而言,在存在授權(quán)文件test時,則由軟件保護(hù)裝置中的授權(quán)管理模塊開始檢查授權(quán)文件test的各授權(quán)項(xiàng)。根據(jù)本發(fā)明的一個實(shí)施方式,檢查的邏輯代碼是由軟件保護(hù)裝置的開發(fā)者寫入軟件保護(hù)裝置的授權(quán)管理模塊中。這些檢查的邏輯代碼比如是檢查可用次數(shù)授權(quán)項(xiàng),其實(shí)現(xiàn)是通過比較已用次數(shù)授權(quán)項(xiàng)是否小于可用次數(shù)授權(quán)項(xiàng)來判斷此項(xiàng)是否合法。如果授權(quán)項(xiàng)都是滿足條件的,則開始運(yùn)行軟件保護(hù)裝置內(nèi)的可執(zhí)行文件;否則不予執(zhí)行,進(jìn)入步驟203。步驟203:檢查授權(quán)文件test中所包含的三個授權(quán)項(xiàng):使用次數(shù)、使用天數(shù)和到期時間,分別約束與其關(guān)聯(lián)的可執(zhí)行文件可以使用的次數(shù)、天數(shù)和到期時間。并且檢查授權(quán)文件test中還包含的兩個授權(quán)項(xiàng):已用次數(shù)和已用天數(shù),分別記錄與其關(guān)聯(lián)的可執(zhí)行文件已經(jīng)使用的天數(shù)和次數(shù)。當(dāng)檢查使用次數(shù)時,進(jìn)入步驟204;當(dāng)檢查使用天數(shù)時,進(jìn)入步驟205 ;當(dāng)檢查到期時間時,進(jìn)入步驟206。步驟204,通過軟件保護(hù)裝置的授權(quán)管理模塊檢查可執(zhí)行文件test的已用次數(shù)是否小于授權(quán)文件test的使用次數(shù)授權(quán)項(xiàng)的值。其具體方式是通過讀取授權(quán)文件的內(nèi)容獲取各授權(quán)項(xiàng)的值,而各授權(quán)項(xiàng)的格式為TLV格式。注意,無需比較全部不同的授權(quán)項(xiàng),而只針對對應(yīng)的授權(quán)項(xiàng)進(jìn)行比較。例如可用次數(shù)和已用次數(shù)比較,可用天數(shù)和已用天數(shù)比較等。如果所有的授權(quán)項(xiàng)都是合法的,則允許運(yùn)行軟件保護(hù)裝置內(nèi)的可執(zhí)行文件,否則不允許執(zhí)行軟件保護(hù)裝置內(nèi)的可執(zhí)行文件。即,根據(jù)示例,如果可執(zhí)行文件test的已用次數(shù)小于授權(quán)文件test的使用次數(shù)授權(quán)項(xiàng)的值,則進(jìn)入步驟205,檢查使用天數(shù);否則,進(jìn)入步驟209。步驟205:按照類似的方式,檢查可執(zhí)行文件test的已用天數(shù)是否小于授權(quán)文件test的使用天數(shù)授權(quán)項(xiàng)的值,如果可執(zhí)行文件test的已用天數(shù)小于授權(quán)文件test的使用天數(shù)授權(quán)項(xiàng)的值,則進(jìn)入步驟206檢查到期時間;否則,進(jìn)入步驟209。步驟206:按照類似的方式,檢查授權(quán)文件test的到期時間授權(quán)項(xiàng)的值是否小于當(dāng)前時間。具體而言,到期時間的授權(quán)項(xiàng)的值應(yīng)該和軟件保護(hù)裝置的系統(tǒng)當(dāng)前時間比較,而不是與授權(quán)文件中的其他授權(quán)項(xiàng)進(jìn)行比較。關(guān)于如何獲取系統(tǒng)當(dāng)前時間則屬于現(xiàn)有技術(shù),無需贅述。如果檢查出授權(quán)文件test的到期時間授權(quán)項(xiàng)的值小于當(dāng)前時間,則進(jìn)入步驟207修改各授權(quán)項(xiàng)的值;否則進(jìn)入步驟209。步驟207:軟件保護(hù)裝置的授權(quán)管理模塊修改授權(quán)文件test的已用次數(shù)和已用天數(shù)授權(quán)項(xiàng)的值,然后將其保存到授權(quán)文件中。即,修改授權(quán)文件的內(nèi)容然后通過軟件保護(hù)裝置的文件系統(tǒng)將修改后的新內(nèi)容重新寫入授權(quán)文件,然后進(jìn)入步驟208。步驟208:運(yùn)行可執(zhí)行文件test。步驟209:退出。實(shí)施例2區(qū)別于實(shí)施例1,實(shí)施例2在軟件保護(hù)裝置內(nèi)的可執(zhí)行文件和授權(quán)文件的關(guān)聯(lián)方式上采用預(yù)先設(shè)定的關(guān)聯(lián),并且在運(yùn)行軟件保護(hù)裝置內(nèi)的可執(zhí)行文件時檢查不到關(guān)聯(lián)的授權(quán)文件的情況下不予執(zhí)行,即強(qiáng)制每個可執(zhí)行文件都必須有相應(yīng)的授權(quán)文件。實(shí)施例2中采用的關(guān)聯(lián)方式為上述兩種方式的第二種,即手動關(guān)聯(lián)。如圖4所示,軟件保護(hù)裝置內(nèi)的授權(quán)管理模塊中維護(hù)著一張關(guān)聯(lián)表,記錄著軟件保護(hù)裝置內(nèi)的可執(zhí)行文件和授權(quán)文件的關(guān)聯(lián)對,例如可執(zhí)行文件Test與授權(quán)文件Lic之間的關(guān)聯(lián)。軟件保護(hù)裝置的文件系統(tǒng)內(nèi)則保存有可執(zhí)行文件Test和授權(quán)文件Lie。這種關(guān)聯(lián)關(guān)系是手動設(shè)定的。圖5是所述軟件保護(hù)裝置在運(yùn)行可執(zhí)行文件Test時的流程圖,其步驟如下所述:步驟401:軟件保護(hù)裝置接受到計(jì)算機(jī)主機(jī)發(fā)送過來的運(yùn)行可執(zhí)行文件Test的命令。首先由軟件保護(hù)裝置中的授權(quán)管理模塊來處理此命令,然后跳轉(zhuǎn)到步驟402 ;步驟402:所述授權(quán)管理模塊檢查其維護(hù)的關(guān)聯(lián)表,判斷是否存在與可執(zhí)行文件Test相關(guān)聯(lián)的授權(quán)文件。如果不存在與Test相關(guān)聯(lián)的授權(quán)文件,則跳轉(zhuǎn)到步驟409退出,即不執(zhí)行可執(zhí)行文件Test ;如果存在,與Test相關(guān)聯(lián)的授權(quán)文件,則跳轉(zhuǎn)到步驟403,開始檢查與可執(zhí)行文件Test關(guān)聯(lián)的授權(quán)文件的各授權(quán)項(xiàng);步驟403:讀取授權(quán)文件Lie,開始檢查各授權(quán)項(xiàng);步驟404:檢查使用次數(shù)是否有效,S卩,使用次數(shù)是否大于已用次數(shù),大于則為有效,否則為無效。如果此項(xiàng)檢查通過則跳轉(zhuǎn)到步驟405開始檢查下一項(xiàng),否則跳轉(zhuǎn)到步驟409退出,即不執(zhí)行Test ;步驟405:檢查使用天數(shù)是否有效,即使用天數(shù)是否大于已用天數(shù),大于則為有效,否則為無效。如果此項(xiàng)檢查通過則跳轉(zhuǎn)到步驟406開始檢查下一項(xiàng),否則跳轉(zhuǎn)到步驟409退出,即不執(zhí)行Test ;步驟406:檢查到期時間是否有效,即到期時間是否大于軟件保護(hù)裝置的系統(tǒng)當(dāng)前時間,大于則為有效,否則為無效。如果此項(xiàng)檢查通過則跳轉(zhuǎn)到步驟407修改各授權(quán)項(xiàng)的值,否則跳轉(zhuǎn)到步驟409退出,即不執(zhí)行Test ;步驟407:修改授權(quán)文件Lic的已用次數(shù)、已用天數(shù)授權(quán)項(xiàng)的值,跳轉(zhuǎn)到步驟408開始執(zhí)行Test ;步驟408:執(zhí)行 Test ;步驟409:退出,即不執(zhí)行Test。上述多種情況的變形是本領(lǐng)域的技術(shù)人員很容易想到的,因此上述舉例僅僅是示意性說明,而無法涵蓋軟件保護(hù)領(lǐng)域的各種情況。本發(fā)明的核心構(gòu)思是軟件保護(hù)裝置通過判斷軟件保護(hù)裝置中可執(zhí)行文件與授權(quán)文件之間的關(guān)聯(lián)來實(shí)現(xiàn)現(xiàn)有技術(shù)中無法實(shí)現(xiàn)的可執(zhí)行文件的靈活應(yīng)用。在此基礎(chǔ)之上,其它各種調(diào)用順序、處理順序的變形、各種可進(jìn)行設(shè)置的關(guān)聯(lián)規(guī)則及各種執(zhí)行規(guī)則均是很容易想到的,無需在本發(fā)明的說明書中進(jìn)行窮盡式的描寫。以上所述包括有本發(fā)明的例子。當(dāng)然,為了描述本發(fā)明的目的,描述每個可以想見的組件或方法的組合是不現(xiàn)實(shí)的,但是,本領(lǐng)域的技術(shù)人員會認(rèn)識到,許多進(jìn)一步的組合和輪換對本發(fā)明來說是可能的。因此,本發(fā)明旨在包含所有這樣的落在所附權(quán)利要求書的精神和范圍之內(nèi)的變更、改進(jìn)和變化。此外,以本說明書和權(quán)利要求書為限,術(shù)語“具有”類似于術(shù)語“包括”。
權(quán)利要求
1.一種控制軟件保護(hù)裝置內(nèi)的可執(zhí)行文件執(zhí)行的方法,所述軟件保護(hù)裝置是用于軟件保護(hù)的硬件設(shè)備,其特征在于, 該方法包括如下步驟: 步驟1:所述軟件保護(hù)裝置接收到受保護(hù)軟件發(fā)出的運(yùn)行可執(zhí)行文件的命令時,檢查所述軟件保護(hù)裝置中是否存在與所述可執(zhí)行文件關(guān)聯(lián)的授權(quán)文件; 步驟2:如果存在與所述可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件,則檢查所述授權(quán)文件并判斷所述授權(quán)文件中的授權(quán)項(xiàng)是否符合預(yù)定條件,從而確定在是否在所述軟件保護(hù)裝置內(nèi)執(zhí)行所述軟件保護(hù)裝置中的可執(zhí)行文件; 步驟3:如果不存在與所述可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件,則根據(jù)預(yù)先確定的執(zhí)行規(guī)貝U,確定在是否在所述軟件保護(hù)裝置內(nèi)執(zhí)行所述軟件保護(hù)裝置中的可執(zhí)行文件。
2.根據(jù)權(quán)利要求1的控制軟件保護(hù)裝置內(nèi)的可執(zhí)行文件執(zhí)行的方法,其特征在于,在步驟I中, 所述軟件保護(hù)裝置根據(jù)預(yù)定的關(guān)聯(lián)對應(yīng)關(guān)系,檢查所述軟件保護(hù)裝置中是否存在與所述可執(zhí)行文件相關(guān)聯(lián)的授權(quán)文件。
3.根據(jù)權(quán)利要求1-2的控制軟件保護(hù)裝置內(nèi)的可執(zhí)行文件執(zhí)行的方法,其特征在于,在步驟2中, 當(dāng)所述授權(quán)項(xiàng)中的一個授權(quán)項(xiàng)符合預(yù)定條件時,執(zhí)行所述軟件保護(hù)裝置內(nèi)的所述可執(zhí)行文件,或者 當(dāng)所述授權(quán)項(xiàng)中的多個授權(quán)項(xiàng)都符合預(yù)定條件時,執(zhí)行所述軟件保護(hù)裝置內(nèi)的所述可執(zhí)行文件。
4.根據(jù)權(quán)利要求1-3的控制軟件保護(hù)裝置內(nèi)的可執(zhí)行文件執(zhí)行的方法,其特征在于,由所述軟件保護(hù)裝置的開發(fā)者或者使用者設(shè)定所述可執(zhí)行文件與所述授權(quán)文件的關(guān)聯(lián)方式。
5.根據(jù)權(quán)利要求1-4的控制軟件保護(hù)裝置內(nèi)的可執(zhí)行文件執(zhí)行的方法,其特征在于,所述可執(zhí)行文件與所述授權(quán)文件的關(guān)聯(lián)方式包括:自動關(guān)聯(lián)所述可執(zhí)行文件和所述授權(quán)文件,或者手動關(guān)聯(lián)所述可執(zhí)行文件和所述授權(quán)文件。
6.根據(jù)權(quán)利要求1-5的控制軟件保護(hù)裝置內(nèi)的可執(zhí)行文件執(zhí)行的方法,其特征在于,執(zhí)行所述可執(zhí)行文件之后,所述軟件保護(hù)裝置修改所述授權(quán)文件中的授權(quán)項(xiàng)的值,然后將修改后的所述授權(quán)項(xiàng)的值保存到所述授權(quán)文件中。
全文摘要
本發(fā)明涉及一種控制軟件保護(hù)裝置內(nèi)可執(zhí)行文件執(zhí)行的方法。軟件保護(hù)裝置內(nèi)的可執(zhí)行文件執(zhí)行前由所述軟件保護(hù)裝置自動檢查與所述可執(zhí)行文件關(guān)聯(lián)的授權(quán)文件并根據(jù)檢查結(jié)果決定所述可執(zhí)行文件是否可以執(zhí)行。這樣在編寫需要授權(quán)限制的可執(zhí)行文件時只需考慮業(yè)務(wù)邏輯代碼部分而不用再添加驗(yàn)證授權(quán)和管理授權(quán)的邏輯代碼,提高了軟件保護(hù)裝置的易用性。
文檔編號G06F21/12GK103164640SQ20111040776
公開日2013年6月19日 申請日期2011年12月8日 優(yōu)先權(quán)日2011年12月8日
發(fā)明者孫吉平, 韓勇 申請人:北京深思洛克軟件技術(shù)股份有限公司