專利名稱:使用“重命名”原理保護(hù)軟件防止未授權(quán)使用的方法
技術(shù)領(lǐng)域:
本發(fā)明總的來(lái)說(shuō)涉及數(shù)據(jù)處理系統(tǒng)的技術(shù)領(lǐng)域,更準(zhǔn)確地說(shuō)針對(duì)防止在所述數(shù)據(jù)處理系統(tǒng)上運(yùn)行未授權(quán)使用的軟件的方法。
本發(fā)明的主題主要在于使用處理和記憶單元,這種單元通常具體化為芯片卡或USB端口中的實(shí)體鑰匙(material key)來(lái)防止未授權(quán)使用軟件的方法。
在上述技術(shù)領(lǐng)域中,主要問(wèn)題涉及由未支付許可費(fèi)的用戶未授權(quán)使用軟件。軟件的這一非法使用導(dǎo)致軟件編程員、軟件分布人和/或?qū)④浖蔀楫a(chǎn)品的任何人的顯而易見的損失。為避免這種非法拷貝,在現(xiàn)有技術(shù)中,已經(jīng)提出了各種方案來(lái)保護(hù)軟件。
因此,保護(hù)方案是已知的,其利用硬件保護(hù)系統(tǒng),諸如稱為保護(hù)鑰匙(protection key)或“軟件狗(dongle)”的物理部件。這種保護(hù)鍵應(yīng)當(dāng)保證僅在存在鍵的情況下,執(zhí)行軟件。然而,必須承認(rèn)這一方案是低效的,因?yàn)樗嬖诓蝗菀缀雎缘牟槐憷浴T趯S霉ぞ咧T如反匯編程序的幫助下,惡意的人或黑客能刪除保護(hù)鍵的控制指令。然后,變得可以執(zhí)行相應(yīng)于能在不保護(hù)的情況下運(yùn)行的軟件的修改版本的非法拷貝。此外,這一方案不能概括到所有軟件,因?yàn)槠潆y以將大于兩個(gè)的保護(hù)鍵連接到同一系統(tǒng)上。
本發(fā)明的主題在于通過(guò)提出防止未授權(quán)使用軟件的方法,使用特別處理和記憶單元,因?yàn)檫@一單元對(duì)軟件完全起作用來(lái)說(shuō)是必須的,從而精確地找出上述問(wèn)題的解決方案。
為實(shí)現(xiàn)這一目的,本發(fā)明的主題涉及使用至少包括處理模塊和記憶模塊的至少一個(gè)空白單元,防止未授權(quán)使用有漏洞的軟件(vulnerable software)的方法,所述有漏洞的軟件是由源產(chǎn)生的并在數(shù)據(jù)處理系統(tǒng)上運(yùn)行。根據(jù)本發(fā)明的該方法包括→ 在保護(hù)階段期間● 定義- 相關(guān)函數(shù)集,易于在一單元中執(zhí)行其相關(guān)函數(shù),- 用于所述相關(guān)函數(shù)集的觸發(fā)命令集,所述觸發(fā)命令易于在數(shù)據(jù)處理系統(tǒng)中執(zhí)行并且在一單元中觸發(fā)執(zhí)行相關(guān)函數(shù),- 對(duì)每個(gè)觸發(fā)命令,一次序(order)至少部分相應(yīng)于從數(shù)據(jù)處理系統(tǒng)傳送到一單元的信息,以便觸發(fā)在一單元中執(zhí)行相應(yīng)的相關(guān)函數(shù),所述次序具有觸發(fā)命令的至少一個(gè)變?cè)男问剑? 允許重命名這些次序的次序的重命名方法以便獲得具有重命名次序的觸發(fā)命令,- 以及設(shè)計(jì)成在使用階段期間在一單元中實(shí)現(xiàn)的恢復(fù)模塊并允許從重命名的次序,恢復(fù)相關(guān)函數(shù)以執(zhí)行,● 構(gòu)造允許將空白單元變換成能實(shí)現(xiàn)恢復(fù)模塊的單元的利用模塊,● 創(chuàng)建受保護(hù)軟件- 通過(guò)選擇至少一個(gè)算法處理,在執(zhí)行有漏洞的軟件期間,其使用至少一個(gè)操作數(shù)并使得獲得至少一個(gè)結(jié)果,- 通過(guò)選擇包含至少一個(gè)選定算法處理的有漏洞的軟件的源的至少一個(gè)部分,- 通過(guò)從有漏洞的軟件的源產(chǎn)生受保護(hù)軟件的源,通過(guò)修改有漏洞的軟件的源的至少一個(gè)選定部分以獲得受保護(hù)軟件的源的至少一個(gè)修改部分,這一修改為 在執(zhí)行受保護(hù)軟件期間,在數(shù)據(jù)處理系統(tǒng)中執(zhí)行第一執(zhí)行部分,以及在下載信息后,在從空白單元獲得的一單元中執(zhí)行第二執(zhí)行部分, 第二執(zhí)行部分至少執(zhí)行至少一個(gè)選定算法處理的功能性 分開至少一個(gè)選定的算法處理以便在執(zhí)行受保護(hù)軟件期間,通過(guò)第二執(zhí)行部分,使用相關(guān)函數(shù),執(zhí)行所述算法處理, 對(duì)至少一個(gè)選定的算法處理,將具有重命名次序的觸發(fā)命令集合成受保護(hù)軟件的源以便在執(zhí)行受保護(hù)軟件期間,通過(guò)第一執(zhí)行部分執(zhí)行具有重命名次序的每個(gè)觸發(fā)命令并在單元中觸發(fā)通過(guò)恢復(fù)模塊恢復(fù)次序和通過(guò)第二執(zhí)行部分執(zhí)行相應(yīng)的相關(guān)函數(shù), 以及在允許執(zhí)行受保護(hù)軟件的順序集中選擇具有重命名次序的觸發(fā)命令的順序,-以及通過(guò)產(chǎn)生 從受保護(hù)軟件的源產(chǎn)生受保護(hù)軟件的第一對(duì)象部分,所述第一對(duì)象部分為在執(zhí)行受保護(hù)軟件期間,出現(xiàn)在數(shù)據(jù)處理系統(tǒng)中執(zhí)行并且其至少一部分考慮到根據(jù)所選定的順序,執(zhí)行具有重命名次序的觸發(fā)命令的第一執(zhí)行部分, 以及包含利用模塊的受保護(hù)軟件的第二對(duì)象部分,所述第二對(duì)象部分為在加載到空白單元后,以及在執(zhí)行受保護(hù)軟件期間,出現(xiàn)第二執(zhí)行部分,通過(guò)該第二執(zhí)行部分,恢復(fù)次序以及執(zhí)行相關(guān)函數(shù),● 以及為獲得該單元,將第二執(zhí)行部分加載到空白單元上,→ 以及在使用階段期間,在使用階段期間執(zhí)行受保護(hù)軟件● 在存在該單元時(shí),每次包含在第一執(zhí)行部分的一部分中的具有重命名次序的觸發(fā)命令利用它時(shí),在單元中恢復(fù)相應(yīng)的相關(guān)函數(shù)的特性并執(zhí)行它,以便正確地執(zhí)行所述部分,因此,受保護(hù)軟件完全起作用,● 以及在缺少單元時(shí),盡管第一執(zhí)行部分的一部分請(qǐng)求觸發(fā)在單元中執(zhí)行相關(guān)函數(shù),仍然不能正確地履行所述請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因此,受保護(hù)軟件不完全起作用。
根據(jù)一不同實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段期間,● 為至少一個(gè)相關(guān)函數(shù)定義算法上等效,但由其重命名次序不同的觸發(fā)命令觸發(fā)的一族相關(guān)函數(shù),● 以及修改受保護(hù)軟件
- 通過(guò)在受保護(hù)軟件的源中選擇具有重命名次序的至少一個(gè)觸發(fā)命令,- 以及通過(guò)至少用另一重命名次序替換具有重命名次序的一個(gè)選定觸發(fā)命令的重命名次序,修改受保護(hù)軟件的源的至少一個(gè)選定部分,觸發(fā)相同族的相關(guān)函數(shù)。
根據(jù)一不同實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段(P)期間● 定義- 將加密次序的加密方法定義為次序的重命名方法,- 以及將實(shí)現(xiàn)解密重命名次序,從而恢復(fù)相關(guān)函數(shù)的身份(identity)以便在單元中執(zhí)行的解密方法的模塊定義為恢復(fù)模塊。
根據(jù)優(yōu)選實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段期間● 修改受保護(hù)軟件- 通過(guò)選擇用在至少一個(gè)選定算法處理中的至少一個(gè)變量,在執(zhí)行受保護(hù)軟件期間,其部分地定義受保護(hù)軟件的狀態(tài),- 通過(guò)修改受保護(hù)軟件的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件期間,至少一個(gè)選定變量或至少一個(gè)選定變量的拷貝駐留在單元中,- 以及通過(guò)產(chǎn)生
受保護(hù)軟件的第一對(duì)象部分,所述第一對(duì)象部分為在執(zhí)行受保護(hù)軟件期間,第一執(zhí)行部分的至少一部分還考慮到至少一個(gè)變量或至少一個(gè)變量的拷貝駐留在單元中, 以及受保護(hù)軟件的第二對(duì)象部分,所述第二對(duì)象部分為在加載到單元后以及在執(zhí)行受保護(hù)軟件期間,出現(xiàn)第二執(zhí)行部分,通過(guò)第二執(zhí)行部分,至少一個(gè)選定的變量以及選定變量的至少一個(gè)拷貝還駐留在單元中;→ 以及在使用階段期間● 在存在單元時(shí),以及每次包含在第一執(zhí)行部分的一部分利用它時(shí),使用駐留在單元中的變量或變量的拷貝,以便正確地執(zhí)行所述部分,因此,受保護(hù)軟件完全起作用,● 以及在缺少單元時(shí),盡管第一執(zhí)行部分的一部分請(qǐng)求使用駐留在單元中的一變量或變量拷貝,仍不能正確履行所述請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因此,受保護(hù)軟件不完全起作用。
根據(jù)另一優(yōu)選實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段期間● 定義- 基本函數(shù)集,相關(guān)函數(shù)集的子集,- 以及用于所述基本函數(shù)集的基本命令集,所述基本命令集為觸發(fā)命令集的子集,● 構(gòu)造允許單元執(zhí)行所述集的基本函數(shù)的利用模塊,通過(guò)在數(shù)據(jù)處理系統(tǒng)中執(zhí)行已經(jīng)重命名其次序的基本命令來(lái)觸發(fā)執(zhí)行所述基本函數(shù),● 以及修改受保護(hù)軟件- 通過(guò)修改受保護(hù)軟件的源的至少一個(gè)選定部分,這一修改為將至少一個(gè)選定的算法處理分成相關(guān)函數(shù)僅使用基本函數(shù),- 以及通過(guò)產(chǎn)生 受保護(hù)軟件的第一對(duì)象部分,所述第一對(duì)象部分為在執(zhí)行受保護(hù)軟件期間,根據(jù)所選定的順序,第一執(zhí)行部分的至少一個(gè)部分還執(zhí)行基本命令, 以及包含利用模塊的受保護(hù)軟件的第二對(duì)象部分,所述第二對(duì)象部分為在加載到該單元后,以及在執(zhí)行受保護(hù)軟件期間,出現(xiàn)第二執(zhí)行部分,通過(guò)第二執(zhí)行部分,還執(zhí)行由第一執(zhí)行部分觸發(fā)的基本函數(shù),→ 以及在使用階段期間● 在存在單元時(shí),以及每次包含在第一執(zhí)行部分的一部分中的基本命令利用它時(shí),在單元中執(zhí)行相應(yīng)的基本函數(shù),以便正確地執(zhí)行所述部分,因此,受保護(hù)軟件完全起作用,● 以及在缺少單元時(shí),盡管第一執(zhí)行部分的一部分請(qǐng)求觸發(fā)在單元中執(zhí)行基本函數(shù),仍不能正確地履行所述請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因此,受保護(hù)軟件不完全起作用。
根據(jù)另一優(yōu)選實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段期間● 定義- 至少一個(gè)軟件執(zhí)行特性,在該單元中至少部分易于被監(jiān)視,- 至少一個(gè)軟件執(zhí)行特征遵守的至少一個(gè)準(zhǔn)則,- 在該單元中實(shí)現(xiàn)的檢測(cè)模塊并允許檢測(cè)至少一個(gè)軟件執(zhí)行特性未遵守至少一個(gè)相關(guān)準(zhǔn)則,- 以及在該單元中實(shí)現(xiàn)的強(qiáng)制(coercion)模塊,并允許當(dāng)未遵守至少一個(gè)準(zhǔn)則時(shí),通知數(shù)據(jù)處理系統(tǒng)和/或修改執(zhí)行的軟件,● 構(gòu)造允許該單元還實(shí)現(xiàn)檢測(cè)模塊和強(qiáng)制模塊的利用模塊,● 以及修改受保護(hù)軟件- 通過(guò)在易于監(jiān)視的軟件執(zhí)行特性中選擇監(jiān)視的至少一個(gè)軟件執(zhí)行特性,- 通過(guò)選擇至少一個(gè)選擇的軟件執(zhí)行特性遵守的至少一個(gè)準(zhǔn)則,- 通過(guò)在受保護(hù)軟件的源中選擇將監(jiān)視至少一個(gè)選定軟件執(zhí)行特性的基本函數(shù),- 通過(guò)修改受保護(hù)軟件的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件期間,通過(guò)第二執(zhí)行部分監(jiān)視至少一個(gè)選定執(zhí)行特性,以及不遵守準(zhǔn)則的事實(shí)導(dǎo)致告知數(shù)據(jù)處理系統(tǒng)和/或修改受保護(hù)軟件的執(zhí)行,- 以及通過(guò)產(chǎn)生包含利用模塊的受保護(hù)軟件的第二對(duì)象部分,還實(shí)現(xiàn)檢測(cè)模塊和強(qiáng)制模塊,所述第二對(duì)象部分為在加載到該單元后,以及在執(zhí)行受保護(hù)軟件期間,監(jiān)視至少一個(gè)軟件執(zhí)行特性以及不遵守準(zhǔn)則的事實(shí)導(dǎo)致告知數(shù)據(jù)處理系統(tǒng)和/或修改受保護(hù)軟件的執(zhí)行,→ 以及在使用階段期間● 在存在該單元時(shí)- 只要遵守相應(yīng)于受保護(hù)軟件的所有修改部分的所有監(jiān)視的執(zhí)行特性的所有準(zhǔn)則,允許受保護(hù)軟件的所述部分標(biāo)稱地(nominally)運(yùn)行,因此,允許受保護(hù)軟件標(biāo)稱地運(yùn)行,- 以及如果未遵守相應(yīng)于監(jiān)視的受保護(hù)軟件的一部分的執(zhí)行特性的至少一個(gè)準(zhǔn)則,將其告知數(shù)據(jù)處理系統(tǒng)和/或修改受保護(hù)軟件的這部分的運(yùn)行(functioning),以致修改受保護(hù)軟件的運(yùn)行。
根據(jù)一不同實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段期間● 定義- 將軟件的功能性的使用的度量的變量定義為易于監(jiān)視的軟件執(zhí)行特性,- 將與每個(gè)度量的變量有關(guān)的至少一個(gè)閾值定義為遵守的準(zhǔn)則,- 以及允許更新至少一個(gè)度量的變量的實(shí)行(actualization)模塊,● 構(gòu)造允許該單元也實(shí)現(xiàn)實(shí)行模塊的利用模塊,● 以及修改受保護(hù)軟件- 通過(guò)將軟件的至少一個(gè)功能性的使用的度量的至少一個(gè)變量選擇為監(jiān)視的軟件執(zhí)行特性,- 通過(guò)選擇 使用度量的變量易于監(jiān)視其使用的受保護(hù)軟件的至少一個(gè)功能性, 用來(lái)量化所述功能性的使用的度量的至少一個(gè)變量, 與相應(yīng)于所述功能性的使用的限制的選定的度量的變量有關(guān)的至少一個(gè)閾值, 以及根據(jù)所述功能性的使用,更新所選定的度量的變量的至少一種方法,- 通過(guò)修改受保護(hù)軟件的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件期間,根據(jù)所述功能性的使用,通過(guò)第二執(zhí)行部分,實(shí)現(xiàn)度量的變量,以及考慮至少一個(gè)閾值越過(guò)(crossing),
→ 以及在使用階段期間,在存在該單元時(shí),以及在檢測(cè)到相應(yīng)于至少一個(gè)使用限制的至少一閾值越過(guò)情況下,將其告知數(shù)據(jù)處理系統(tǒng)和/或修改受保護(hù)軟件的運(yùn)行,以致修改受保護(hù)軟件的運(yùn)行。
根據(jù)一不同實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段期間● 定義- 用于至少一個(gè)度量的變量的幾個(gè)相關(guān)閾值,- 以及相應(yīng)于所述閾值的每一個(gè)的不同強(qiáng)制模塊,● 以及修改受保護(hù)軟件- 通過(guò)在受保護(hù)軟件的源中選擇必須與相應(yīng)于功能性使用的不同限制的幾個(gè)閾值有關(guān)的至少一個(gè)選定的度量的變量,- 通過(guò)選擇與所選定的度量的變量有關(guān)的至少兩個(gè)閾值,- 以及通過(guò)修改受保護(hù)軟件的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件期間,通過(guò)第二執(zhí)行部分,不同地考慮越過(guò)不同閾值,→ 以及在使用階段期間● 在存在該單元的情況下- 在檢測(cè)到越過(guò)第一閾值的情況下,命令受保護(hù)軟件不再使用相應(yīng)的功能性,
- 以及在檢測(cè)到越過(guò)第二閾值的情況下,使相應(yīng)的功能性和/或受保護(hù)軟件的至少一部分無(wú)效。
根據(jù)一不同實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段期間● 定義允許通過(guò)至少一個(gè)另外的使用,信任由度量的變量監(jiān)視的至少一個(gè)軟件功能性的補(bǔ)裝(refill)模塊,● 構(gòu)造還允許該單元實(shí)現(xiàn)補(bǔ)裝模塊的利用模塊,● 以及修改受保護(hù)軟件- 通過(guò)在受保護(hù)軟件的源中選擇允許限制功能性的使用并且必須能通過(guò)至少一個(gè)另外的使用信任的至少一個(gè)選定的度量的變量,- 以及通過(guò)修改至少一個(gè)選定部分,這一修改為在稱為補(bǔ)充的階段期間,能信任相應(yīng)于所選定的度量的變量的至少一個(gè)功能性的至少一個(gè)另外的使用,→ 以及在補(bǔ)裝期間● 重新實(shí)現(xiàn)至少一個(gè)選定的度量的變量和/或至少一個(gè)相關(guān)閾值,以便允許功能性的至少一個(gè)另外的使用。
根據(jù)一不同實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段期間● 定義- 將軟件使用的簡(jiǎn)要表(profile)定義為易于監(jiān)視的軟件執(zhí)行特性,
- 以及將至少一個(gè)軟件執(zhí)行特征定義為遵守的準(zhǔn)則,● 以及修改受保護(hù)軟件- 通過(guò)將至少一個(gè)軟件使用的簡(jiǎn)要表選擇為監(jiān)視的軟件執(zhí)行特性,- 通過(guò)選擇至少一個(gè)選定的使用簡(jiǎn)要表必須遵守的至少一個(gè)執(zhí)行特征,- 以及通過(guò)修改受保護(hù)軟件的源的至少一個(gè)選定部分,這一修改是在執(zhí)行受保護(hù)軟件期間,第二執(zhí)行部分遵守所有選定的執(zhí)行特征,→ 以及在使用階段期間,在存在該單元時(shí),以及在檢測(cè)到未遵守至少一個(gè)執(zhí)行特征的情況下,將其告知數(shù)據(jù)處理系統(tǒng)和/或修改受保護(hù)軟件的部分的運(yùn)行,以便修改受保護(hù)軟件的運(yùn)行。根據(jù)一不同實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段期間● 定義- 在該單元中易于執(zhí)行其指令的指令集,- 用于所述指令集的指令命令集,易于在數(shù)據(jù)處理系統(tǒng)中執(zhí)行所述指令命令并在該單元中觸發(fā)執(zhí)行指令,- 將指令鏈接接定義為使用簡(jiǎn)要表,- 將用于執(zhí)行指令的預(yù)期鏈接接定義為執(zhí)行特征,- 將允許檢測(cè)指令鏈接接不相應(yīng)于預(yù)期的指令鏈接接的模塊定義為檢測(cè)模塊,
- 以及將允許當(dāng)指令鏈接接不相應(yīng)于預(yù)期的指令鏈接接時(shí),通知數(shù)據(jù)處理系統(tǒng)和/或改變受保護(hù)軟件的功能的模塊定義為強(qiáng)制模塊,● 構(gòu)造還允許該單元執(zhí)行指令集的指令的利用模塊,通過(guò)在數(shù)據(jù)處理系統(tǒng)中執(zhí)行指令命令來(lái)觸發(fā)執(zhí)行所述指令,● 以及修改受保護(hù)軟件- 通過(guò)修改受保護(hù)軟件的源的至少一個(gè)選定部分 通過(guò)將基本函數(shù)變換成指令, 通過(guò)指定在該單元中執(zhí)行它們期間,至少一些指令必須遵守的鏈接接, 以及通過(guò)將基本命令變換成相應(yīng)于所使用的指令的指令命令,→ 以及在使用階段期間,在存在該單元時(shí),在檢測(cè)到該單元中執(zhí)行的指令鏈接接不相應(yīng)于預(yù)期的指令鏈接接的情況下,將其告知數(shù)據(jù)處理系統(tǒng)和/或修改受保護(hù)軟件的部分的運(yùn)行,以便修改受保護(hù)軟件的運(yùn)行。
根據(jù)一不同實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段● 定義- 將其至少一些指令與寄存器一起工作并為返回一結(jié)果,使用至少一個(gè)操作數(shù)的指令集定義為指令集,- 對(duì)與寄存器一起工作的至少一些指令
定義指令的功能性的部分, 以及定義用于執(zhí)行指令的預(yù)期鏈接接并包括相應(yīng)于下述的位字段的部分◇ 指令的標(biāo)識(shí)字段,◇ 以及用于指令的每個(gè)操作數(shù)* 標(biāo)志字段,* 以及操作數(shù)的預(yù)期標(biāo)識(shí)字段,- 對(duì)屬于利用模塊并由指令集使用的每個(gè)寄存器,自動(dòng)將已經(jīng)返回其結(jié)果的最后一個(gè)指令的標(biāo)識(shí)存儲(chǔ)在所述寄存器中的所生成的標(biāo)識(shí)字段,- 以及將允許在執(zhí)行指令期間,對(duì)每個(gè)操作數(shù),當(dāng)標(biāo)志字段利用它時(shí),檢查相應(yīng)于由所述操作數(shù)以及所述操作數(shù)的原始的預(yù)期標(biāo)識(shí)字段使用的寄存器的所生成的標(biāo)識(shí)字段的等式(equality)的模塊定義為檢測(cè)模塊,- 以及如果所檢查的等式的至少一個(gè)為假,將允許修改指令結(jié)果的模塊定義為強(qiáng)制模塊。
根據(jù)另一優(yōu)選實(shí)施例,根據(jù)本發(fā)明的方法包括→ 在保護(hù)階段期間● 修改受保護(hù)軟件- 通過(guò)在受保護(hù)軟件的源中選擇在至少一個(gè)選定的算法處理中執(zhí)行的至少一個(gè)條件分支,- 通過(guò)修改受保護(hù)軟件的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件期間,在該單元中通過(guò)第二執(zhí)行部分,執(zhí)行至少一個(gè)選定條件分支的功能性,- 以及通過(guò)產(chǎn)生 受保護(hù)軟件的第一對(duì)象部分,所述第一對(duì)象部分為在執(zhí)行受保護(hù)軟件期間,在單元中執(zhí)行至少一個(gè)選定條件分支的功能性, 以及受保護(hù)軟件的第二對(duì)象部分,所述第二對(duì)象部分為在加載到該單元后,以及在執(zhí)行受保護(hù)軟件期間,出現(xiàn)第二執(zhí)行部分,通過(guò)第二執(zhí)行部分,執(zhí)行至少一個(gè)選定的條件分支的功能性,→ 以及在使用階段期間● 在存在該單元時(shí),以及每次第一執(zhí)行部分的一部分利用它時(shí),在該單元中執(zhí)行至少一個(gè)條件分支的功能性,以便正確地執(zhí)行所述部分,因此,受保護(hù)軟件完全起作用,● 以及在缺少該單元時(shí),盡管第一執(zhí)行部分的一部分請(qǐng)求在該單元中執(zhí)行條件分支的功能性,仍不能正確地履行所述請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因此,受保護(hù)軟件不完全起作用。
根據(jù)一不同實(shí)施例,根據(jù)本發(fā)明的方法包括在保護(hù)階段期間,修改受保護(hù)軟件- 通過(guò)在受保護(hù)軟件的源中選擇至少一系列選定的條件分支,
- 通過(guò)修改受保護(hù)軟件的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件期間,在該單元中通過(guò)第二執(zhí)行部分,執(zhí)行至少一個(gè)選定系列的條件分支的全部功能性,- 以及通過(guò)產(chǎn)生 受保護(hù)軟件的第一對(duì)象部分,所述第一對(duì)象部分為在執(zhí)行受保護(hù)軟件期間,在該單元中執(zhí)行至少一個(gè)選定系列的條件分支的功能性, 以及受保護(hù)軟件的第二對(duì)象部分,所述第二對(duì)象部分為在加載到該單元后,以及在執(zhí)行受保護(hù)軟件期間,出現(xiàn)第二執(zhí)行部分,通過(guò)第二執(zhí)行部分,執(zhí)行至少一個(gè)選定系列的條件分支的全部功能性。
因此根據(jù)本發(fā)明的方法允許通過(guò)使用處理和記憶單元保護(hù)軟件使用,該處理和記憶單元顯示出包含正執(zhí)行的軟件的一部分的特性。因此嘗試沒(méi)有處理和記憶單元運(yùn)行的軟件的任何導(dǎo)出版本迫使在執(zhí)行期間,重新創(chuàng)建包含在處理和記憶單元中的軟件部分,或者所述的導(dǎo)出的軟件版本將不完全起作用。
從下述參考附圖給出的描述出現(xiàn)各種其他特征,附圖作為非限制例子,表示本發(fā)明的主題的實(shí)施例和實(shí)現(xiàn)。
圖10和11是分別示例說(shuō)明不受和受根據(jù)本發(fā)明的方法的保護(hù)的軟件的各種表示的功能框圖。
圖20至22舉例說(shuō)明實(shí)現(xiàn)根據(jù)本發(fā)明的方法的模塊的各種實(shí)施例。
圖30至31是清楚地說(shuō)明根據(jù)本發(fā)明的方法的一般原理的功能框圖。
圖40至43是示例說(shuō)明通過(guò)變量實(shí)現(xiàn)保護(hù)原理的根據(jù)本發(fā)明的保護(hù)方法的圖。
圖60至64是示例說(shuō)明通過(guò)基本函數(shù)(elementary function)實(shí)現(xiàn)保護(hù)原理的根據(jù)本發(fā)明的保護(hù)方法的圖。
圖70至74是示例說(shuō)明通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理的根據(jù)本發(fā)明的保護(hù)方法的圖。
圖80至85是示例說(shuō)明通過(guò)重命名實(shí)現(xiàn)保護(hù)原理的根據(jù)本發(fā)明的保護(hù)方法的圖。
圖90至92是示例說(shuō)明通過(guò)條件分支實(shí)現(xiàn)保護(hù)原理的根據(jù)本發(fā)明的保護(hù)方法的圖。
圖100是示例說(shuō)明本發(fā)明的主題的實(shí)現(xiàn)的不同階段的圖。
圖110示例說(shuō)明允許實(shí)現(xiàn)根據(jù)本發(fā)明的保護(hù)階段的結(jié)構(gòu)級(jí)的系統(tǒng)的實(shí)施例。
圖120示例說(shuō)明用在根據(jù)本發(fā)明的保護(hù)方法中的預(yù)先定制單元的實(shí)施例。
圖130示例說(shuō)明允許實(shí)現(xiàn)產(chǎn)生根據(jù)本發(fā)明的保護(hù)階段的級(jí)(stage)的工具的系統(tǒng)的實(shí)施例。
圖140示例說(shuō)明允許實(shí)現(xiàn)根據(jù)本發(fā)明的保護(hù)方法的系統(tǒng)的實(shí)施例。
圖150示例說(shuō)明用在根據(jù)本發(fā)明的保護(hù)方法中的定制單元的實(shí)施例。
在其余的描述中,將使用下述定義●數(shù)據(jù)處理系統(tǒng)3是能執(zhí)行程序的系統(tǒng)。
●處理和存儲(chǔ)單元是能- 接受由數(shù)據(jù)處理系統(tǒng)3提供的數(shù)據(jù),- 將數(shù)據(jù)返回到數(shù)據(jù)處理系統(tǒng)3- 至少部分秘密地存儲(chǔ)數(shù)據(jù)以及即使切斷該單元,也能保留至少部分所述數(shù)據(jù),- 在數(shù)據(jù)上執(zhí)行算法處理,部分或全部結(jié)果為保密。
● 單元6是實(shí)現(xiàn)根據(jù)本發(fā)明的方法的處理和存儲(chǔ)單元。
● 空白單元60是不能實(shí)現(xiàn)根據(jù)本發(fā)明的方法的單元,但其能接收將其轉(zhuǎn)換到單元6中的數(shù)據(jù)。
● 預(yù)先定制的單元66是允許在接收補(bǔ)數(shù)據(jù)后,已經(jīng)接收將變換到單元6中的部分?jǐn)?shù)據(jù)的空白單元60。
● 將信息加載到空白單元60或預(yù)先定制的單元66相應(yīng)于將信息傳送到空白單元60或預(yù)先定制的單元66,以及存儲(chǔ)所傳送的信息。傳送能包括改變信息格式。
● 包含在數(shù)據(jù)處理系統(tǒng)3中的變量、函數(shù)或數(shù)據(jù)將由大寫字母表示,而包含在單元6中的變量、函數(shù)或數(shù)據(jù)將用小寫字母表示。
●“受保護(hù)軟件”是已經(jīng)受由根據(jù)本發(fā)明的方法實(shí)現(xiàn)的保護(hù)原理的至少一個(gè)保護(hù)的軟件。
●“有漏洞的軟件”是未受由根據(jù)本發(fā)明的方法實(shí)現(xiàn)的任一保護(hù)原理保護(hù)的軟件。
● 在有漏洞的軟件和受保護(hù)軟件間的區(qū)別不重要的情況下,使用術(shù)語(yǔ)“軟件”。
● 根據(jù)在其生存期中考慮的瞬間,軟件具有各種表示- 源表示,- 對(duì)象表示,- 分布(distribution),- 或動(dòng)態(tài)表示。
● 軟件的源表示理解為在變換后,導(dǎo)致對(duì)象表示的表示。源表示能提供從概念抽象級(jí)(level)到可直接由數(shù)據(jù)處理系統(tǒng)或處理和存儲(chǔ)單元執(zhí)行的級(jí)的各種級(jí)。
● 軟件的對(duì)象表示相應(yīng)于在傳送到分布并加載到數(shù)據(jù)處理系統(tǒng)或處理和存儲(chǔ)單元后,能執(zhí)行的表示的級(jí)。其能是例如二進(jìn)制代碼、解釋碼等等。
● 分布是包含對(duì)象表示的物理或虛擬支持,必須使所述分布由用戶自由處理以便允許他們來(lái)使用軟件。
● 動(dòng)態(tài)表示相應(yīng)于來(lái)自其分布的軟件的執(zhí)行。
● 部分軟件相應(yīng)于軟件的一些部分以及例如,對(duì)應(yīng)于一個(gè)或幾個(gè)連續(xù)或不連續(xù)指令,和/或一個(gè)或幾個(gè)連續(xù)或不連續(xù)功能塊,和/或一個(gè)或幾個(gè)函數(shù),和/或一個(gè)或幾個(gè)子程序,和/或一個(gè)或幾個(gè)模塊。部分軟件還能相應(yīng)子所有所述軟件。
圖10和11分別示例說(shuō)明總的來(lái)說(shuō)有漏洞的軟件2v和受根據(jù)本發(fā)明的方法保護(hù)的受保護(hù)軟件2p的各種表示。
圖10示例說(shuō)明在其生存期期間出現(xiàn)的有漏洞的軟件2v的各種表示。因此,在下述表示的任何一個(gè)下,能出現(xiàn)有漏洞的軟件2v● 源表示2vs,● 目的表示2vo,● 分布2vd。所述分布通常能具有物理分布介質(zhì)的形式,諸如CDROM或通過(guò)網(wǎng)絡(luò)(GSM,Internet等等)分布的文件的形式,● 或相應(yīng)于在任何己知類型的數(shù)據(jù)處理系統(tǒng)3,其通常包括至少四個(gè)處理器上執(zhí)行的有漏洞的軟件2v的動(dòng)態(tài)表示2ve。
圖11示例說(shuō)明在其生存期期間出現(xiàn)的受保護(hù)軟件2p的各種表示。因此,在下述表示的任何一個(gè)下出現(xiàn)受保護(hù)軟件2p● 源表示2ps包括部分用于數(shù)據(jù)處理系統(tǒng)3的第一源部分,以及可能地,部分所述源部分通常能包含在公用文件中,● 對(duì)象表示2po包括用于數(shù)據(jù)處理系統(tǒng)3的第一對(duì)象部分2pos,以及用于單元6的第二對(duì)象部分2pou,● 分布2pd,包括- 第一分布部分2pds,包含第一對(duì)象部分2pos,所述第一分布部分2pds用于數(shù)據(jù)處理系統(tǒng)3并通常能具有物理分布介質(zhì)的形式諸如CDROM或通過(guò)網(wǎng)絡(luò)(GSM、Internet等等)分布的文件的形式,- 以及第二分布部分2pdu具有形式 至少一個(gè)預(yù)先定制的單元66,已被加載第二對(duì)象部分2pou的一部分并用通過(guò)加載補(bǔ)裝數(shù)據(jù),用戶必須完成定制以便獲得單元6,例如,通過(guò)從網(wǎng)絡(luò)上下載,能獲得所述補(bǔ)裝數(shù)據(jù) 已經(jīng)加載第二對(duì)象部分2pou的至少一個(gè)單元6,●或動(dòng)態(tài)表示2pe,相應(yīng)于執(zhí)行受保護(hù)軟件2p。所述動(dòng)態(tài)表示2pe包括在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的第一執(zhí)行部分2pes和在單元6中執(zhí)行的第二執(zhí)行部分2peu。
在受保護(hù)軟件2p的不同表示間的區(qū)別不重要的情況下,應(yīng)當(dāng)使用措辭受保護(hù)軟件的第一部分和受保護(hù)軟件的第二部分。
根據(jù)圖11的動(dòng)態(tài)表示的本發(fā)明的方法的實(shí)現(xiàn)使用包括通過(guò)鏈接接路5與單元6連接的數(shù)據(jù)處理系統(tǒng)3的模塊1p。數(shù)據(jù)處理系統(tǒng)3是任何類型并通常包括至少一個(gè)處理器4。數(shù)據(jù)處理系統(tǒng)3能是計(jì)算機(jī)或例如總的來(lái)說(shuō),各種機(jī)器、設(shè)備、固定或移動(dòng)產(chǎn)品或車輛的部件。能以任何可能的方式實(shí)現(xiàn)鏈接接路5,諸如例如串行鏈接接路、USB總線、無(wú)線電鏈接接路、光鏈接接路、網(wǎng)絡(luò)鏈接接路或到數(shù)據(jù)處理系統(tǒng)3的電路的直接電連接等等。應(yīng)注意到單元6可能是物理位于與數(shù)據(jù)處理系統(tǒng)3的處理器相同的集成電路中。在這種情況下,單元6能被視為與數(shù)據(jù)處理系統(tǒng)3的處理器4有磁的協(xié)處理器以及鏈接接路5在集成電路內(nèi)部。
圖20至22以示例和未限制的方式,表示允許實(shí)現(xiàn)根據(jù)本發(fā)明的保護(hù)方法的模塊1p的各種實(shí)施例。
在圖20所示的實(shí)施例中,保護(hù)模塊1p包括作為數(shù)據(jù)處理系統(tǒng)3的計(jì)算機(jī)以及作為單元6的芯片卡7及通常稱為卡閱讀器的接口8。通過(guò)鏈接接路5將計(jì)算機(jī)3連接到單元6上。在執(zhí)行受保護(hù)軟件2p期間,在計(jì)算機(jī)3中執(zhí)行的第一執(zhí)行部分2pes和在芯片卡7及其接口8中執(zhí)行的第二執(zhí)行部分2peu必須是功能性的以便受保護(hù)軟件2p完全起作用。
在圖21中所示的實(shí)施例中,保護(hù)模塊1p總的來(lái)說(shuō)具有產(chǎn)品9,包括適合于由這種產(chǎn)品9假定的功能的各種部件10。保護(hù)模塊1p一方面包括嵌入產(chǎn)品9中的數(shù)據(jù)處理系統(tǒng),另一方面,包括與產(chǎn)品9有關(guān)的單元6。因此,產(chǎn)品9完全起作用,受保護(hù)軟件2p必定完全起作用。因此,在執(zhí)行受保護(hù)軟件2p期間,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的第一執(zhí)行部分2pes以及在單元6中執(zhí)行的第二執(zhí)行部分2peu必須起作用。因此,所述受保護(hù)軟件2p允許間接地防止未授權(quán)使用產(chǎn)品9或其一個(gè)功能。例如,產(chǎn)品9能是設(shè)施、系統(tǒng)、機(jī)器、玩具、一種家用設(shè)備、電話等等。
在圖22中所示的實(shí)施例中,保護(hù)模塊1p包括幾個(gè)計(jì)算機(jī),以及部分通信網(wǎng)絡(luò)。數(shù)據(jù)處理系統(tǒng)3是通過(guò)網(wǎng)絡(luò)類型的鏈接接路5連接到由第二計(jì)算機(jī)構(gòu)成的單元6的第一計(jì)算機(jī)。對(duì)本發(fā)明的實(shí)現(xiàn),第二計(jì)算機(jī)6用作用于受保護(hù)軟件2p的許可服務(wù)器。在執(zhí)行受保護(hù)軟件2p期間,在第一計(jì)算機(jī)3中執(zhí)行的第一執(zhí)行部分2pes和在第二計(jì)算機(jī)6中執(zhí)行的第二執(zhí)行部分2peu必須起作用以便受保護(hù)軟件2p完全起作用。
圖30允許更清楚地說(shuō)明根據(jù)本發(fā)明的保護(hù)方法。應(yīng)注意到將有漏洞的軟件2v視為全部在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行。另一方面,在實(shí)現(xiàn)受保護(hù)軟件2p的情況下,數(shù)據(jù)處理系統(tǒng)3包括通過(guò)鏈接接路5連接到為單元6的一部分的傳送模塊13的傳送模塊12,允許在受保護(hù)軟件2p的第一執(zhí)行部分2pec和第二執(zhí)行部分2peu間建立通信。
必須注意到傳送模塊12、13是軟件和/或硬件特性并能提供和可能優(yōu)化數(shù)據(jù)處理系統(tǒng)3和單元6間的數(shù)據(jù)通信。所述傳送模塊12、13用來(lái)允許具有與所使用的鏈接接路5的類型無(wú)關(guān)地自由處理受保護(hù)軟件2p。所述傳送模塊12、13不是本發(fā)明的主題的一部分,因?yàn)樗鼈儗?duì)技術(shù)人員來(lái)說(shuō)非常公知,因此不更精確地描述。受保護(hù)軟件2p的第一部分包括命令。在執(zhí)行受保護(hù)軟件2p期間,通過(guò)第一執(zhí)行部分2pes執(zhí)行所述命令允許在第一執(zhí)行部分2pes和第二執(zhí)行部分2peu間通信。在其余描述中,用IN、OUT或TRIG表示所述命令。
如圖31所示,為允許實(shí)現(xiàn)受保護(hù)軟件2p的第二執(zhí)行部分2peu,單元6包括保護(hù)模塊14。保護(hù)模塊14包括存儲(chǔ)模塊15和處理模塊16。
為簡(jiǎn)化其余描述,在執(zhí)行受保護(hù)軟件2p期間,選擇考慮存在單元6或缺少單元6。實(shí)際上,每次不正確地執(zhí)行受保護(hù)軟件2p時(shí),提供不適合于執(zhí)行受保護(hù)軟件2p的第二執(zhí)行部分2peu的保護(hù)模塊14的單元6也視為缺少。換句話說(shuō)● 物理存在并包括適合于執(zhí)行受保護(hù)軟件2p的第二執(zhí)行部分2peu的保護(hù)模塊14的單元6總被視為存在。
● 物理存在但包括不適合于,即不允許正確執(zhí)行受保護(hù)軟件2p的第二執(zhí)行部分2peu的單元6當(dāng)其正確工作時(shí),被視為存在,以及當(dāng)其不正確地工作時(shí),視為缺少(missing),● 以及物理缺少的單元6總被視為缺少。
在由芯片卡7及其接口8構(gòu)成單元6的情況下,傳送模塊13被分成兩部分,一個(gè)在接口8上,以及另一個(gè)在芯片卡7上。在這一實(shí)施例中,缺少芯片卡7被視為等效于缺少單元6。換句話說(shuō),缺少芯片卡7和/或其接口8,保護(hù)模塊14不能存取并且不允許執(zhí)行受保護(hù)軟件2p的第二執(zhí)行部分2peu,到這種程度,受保護(hù)軟件2p不完全起作用。
根據(jù)本發(fā)明,保護(hù)方法用來(lái)實(shí)現(xiàn)稱為“重命名”的保護(hù)原理,將參考圖80至85描述。
為通過(guò)重命名實(shí)現(xiàn)保護(hù)原理,定義● 一組相關(guān)函數(shù)(dependent function),通過(guò)第二執(zhí)行部分2peu,易于在單元6中執(zhí)行其相關(guān)函數(shù),并可以在數(shù)據(jù)處理系統(tǒng)3和單元6間傳送數(shù)據(jù),所述相關(guān)函數(shù)集能是有限或無(wú)限,● 用于所述相關(guān)函數(shù)的一組觸發(fā)命令,所述觸發(fā)命令易于在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行并且在單元6中觸發(fā)執(zhí)行相應(yīng)的相關(guān)函數(shù),● 對(duì)每個(gè)觸發(fā)命令,次序(order)至少部分相應(yīng)于由第一執(zhí)行部分2pes傳送到第二執(zhí)行部分2peu的信息,以便觸發(fā)執(zhí)行相應(yīng)的相關(guān)函數(shù),所述順序具有觸發(fā)命令的至少一個(gè)變?cè)男问剑?設(shè)計(jì)成在修改有漏洞的軟件2v期間使用的次序的重命名方法,這種方法允許重命名這些次序以便通過(guò)重命名次序獲得允許取消相應(yīng)的相關(guān)函數(shù)的身份的觸發(fā)命令,● 以及設(shè)計(jì)成在使用階段期間用在單元6中的恢復(fù)模塊20并允許由重命名的次序,恢復(fù)初始次序,以便恢復(fù)執(zhí)行相關(guān)函數(shù)。
為通過(guò)重命名實(shí)現(xiàn)保護(hù)原理,還構(gòu)造將空白單元60轉(zhuǎn)換成至少實(shí)現(xiàn)恢復(fù)模塊20的單元6的利用模塊。
為通過(guò)重命名實(shí)現(xiàn)保護(hù)原理,在有漏洞的軟件2vs中還選擇● 使用至少一個(gè)操作數(shù)并返回至少一個(gè)結(jié)果的至少一個(gè)算法處理,● 以及包含至少一個(gè)選定算法處理的至少一部分有漏洞的軟件2vs的源。
然后修改有漏洞的軟件2vs的源,從而獲得受保護(hù)軟件2ps的源。這一修改是,其中● 在執(zhí)行受保護(hù)軟件2p期間,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的至少一部分第一執(zhí)行部分2pes考慮在單元6中執(zhí)行至少一個(gè)選定算法處理的功能性,● 在執(zhí)行受保護(hù)軟件2p期間,在單元6中執(zhí)行的第二執(zhí)行部分2peu至少執(zhí)行至少一個(gè)選定算法處理的功能性,● 分開每個(gè)選定的算法處理以便在執(zhí)行受保護(hù)軟件2p期間,通過(guò)第二執(zhí)行部分2peu,使用相關(guān)函數(shù),執(zhí)行每個(gè)選定的算法處理。最好,將每個(gè)選定的算法處理分成相關(guān)函數(shù)fdn(其中n從1至N),即- 設(shè)置一個(gè)或幾個(gè)操作數(shù)的一或幾個(gè)相關(guān)函數(shù)供單元6使用,- 相關(guān)函數(shù),一些相關(guān)函數(shù)使用操作數(shù)并使用所述操作數(shù),結(jié)合執(zhí)行選定的算法處理的功能性,- 以及可能,允許通過(guò)單元6,設(shè)置所選定的算法處理的結(jié)果的一個(gè)或幾個(gè)相關(guān)函數(shù)交由數(shù)據(jù)處理系統(tǒng)3使用,● 在執(zhí)行受保護(hù)軟件2p期間,第二執(zhí)行部分2peu執(zhí)行相關(guān)函數(shù)fdn,● 在執(zhí)行受保護(hù)軟件2p期間,通過(guò)用重命名次序觸發(fā)命令來(lái)觸發(fā)相關(guān)函數(shù),● 在允許執(zhí)行受保護(hù)軟件2p的順序集中選擇觸發(fā)命令的順序。
在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的的受保護(hù)軟件2p的第一執(zhí)行部分2pes通過(guò)將重命名次序傳送到單元6的重命令次序,執(zhí)行觸發(fā)命令,并通過(guò)恢復(fù)模塊20,在單元6中觸發(fā)恢復(fù)次序,然后通過(guò)第二執(zhí)行部分2peu執(zhí)行每個(gè)在前定義的相關(guān)函數(shù)fdn。
換句話說(shuō),通過(guò)重命名觸發(fā)命令的次序,執(zhí)行通過(guò)重命名的保護(hù)原理,以便通過(guò)在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的重命名的觸發(fā)命令,在單元6中觸發(fā)執(zhí)行已經(jīng)通過(guò)未命名次序,由觸發(fā)命令觸發(fā)的相關(guān)函數(shù),然而,不檢查允許確定所執(zhí)行的相關(guān)函數(shù)的特性的保護(hù)函數(shù)2p。
圖80示例說(shuō)明執(zhí)行有漏洞的函數(shù)2v的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行有漏洞的軟件2V期間,在某些時(shí)刻出現(xiàn)相應(yīng)于將用函數(shù)F和使用操作數(shù)X和Y表示的算法處理的結(jié)果分配給變量Z的計(jì)算Z←F(X,Y)。
圖81和82示例說(shuō)明本發(fā)明的實(shí)現(xiàn)的例子。
圖81示例說(shuō)明本發(fā)明的局部實(shí)現(xiàn)。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間,以及在存在單元6時(shí),出現(xiàn)● 在時(shí)刻t1,t2,執(zhí)行觸發(fā)命令CD1、CD2,其觸發(fā)在單元6中,通過(guò)第二執(zhí)行部分2peu,執(zhí)行提供將數(shù)據(jù)X、Y從數(shù)據(jù)處理系統(tǒng)3分別傳送到位于單元6的存儲(chǔ)模塊15中的存儲(chǔ)區(qū)x,y的相應(yīng)相關(guān)函數(shù)fd1,fd2,所述觸發(fā)命令CD1、CD2分別用OUT(x,X)和OUT(y,Y)表示,● 在時(shí)刻t3至tN-1,執(zhí)行觸發(fā)命令CD3至CDN-1,其觸發(fā)在單元6中,通過(guò)第二執(zhí)行部分2peu,執(zhí)行相應(yīng)相關(guān)函數(shù)fd3至fdN-1,所述觸發(fā)命令CD3至CDN-1分別用TRIG(fd3)至TRIG(fdN-1)表示。結(jié)合執(zhí)行的相關(guān)函數(shù)fd3至fdN-1的序列在算法上等效于函數(shù)F。更精確地是,執(zhí)行所述觸發(fā)命令導(dǎo)致在單元6中執(zhí)行使用存儲(chǔ)區(qū)x,y的內(nèi)容并將結(jié)果返回到單元6的存儲(chǔ)區(qū)z的相關(guān)函數(shù)fd3至fdN-1,● 以及在時(shí)刻tN,執(zhí)行觸發(fā)命令CDN,其觸發(fā)在單元6中,通過(guò)第二執(zhí)行部分2peu,執(zhí)行提供將包含在單元6的存儲(chǔ)區(qū)z中的算法處理的結(jié)果傳送到數(shù)據(jù)處理系統(tǒng)3,以便將其分配給變量Z的相關(guān)函數(shù)fdN,所述命令用IN(z)表示。
在這一例子中,為完全實(shí)現(xiàn)本發(fā)明,將觸發(fā)命令OUT的第一變?cè)陀|發(fā)命令TRIG和IN的變?cè)x擇為次序。使用次序的重命名方法,重命名用這種方式選擇的次序。用這種方式,重命名觸發(fā)命令CD1至CDN的次序,即,x,y,fd3,fdN-1,z以便分別獲得R(x)、R(y)、R(fd3)…,R(fdN-1)、R(z)。
圖82示例說(shuō)明本發(fā)明的全部實(shí)現(xiàn)。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間,以及在存在單元6時(shí),出現(xiàn)● 在時(shí)刻t1,t2,通過(guò)重命名次序CDCR1、CDCR2,執(zhí)行觸發(fā)命令,將重命名次序R(x)、R(y)傳送到單元6,在單元6中觸發(fā)通過(guò)恢復(fù)模塊20恢復(fù)重命名次序以便恢復(fù)次序,即,存儲(chǔ)區(qū)x,y的身份,然后,通過(guò)第二執(zhí)行部分2peu執(zhí)行提供將數(shù)據(jù)X,Y從數(shù)據(jù)處理系統(tǒng)3分別傳送到位于單元6的存儲(chǔ)模塊15中的存儲(chǔ)區(qū)x,y的相應(yīng)的相關(guān)函數(shù)fd1,fd2,具有重命名次序CDCR1、CDCR2的所述觸發(fā)命令分別用OUT(R(x),X),OUT(R(y),Y)表示。
● 在時(shí)刻t3至tN-1,通過(guò)重命名次序CDCR3至CDCRN-1,執(zhí)行觸發(fā)命令,將重命名次序R(fd3)至R(fdN-1)傳送到單元6,在單元6中觸發(fā)通過(guò)恢復(fù)模塊20恢復(fù)次序,即,fd3至fdN-1,然后,通過(guò)第二執(zhí)行部分2peu,執(zhí)行相關(guān)函數(shù)fd3至fdN-1,具有重命名次序CDCR3至CDCRN-1的所述觸發(fā)命令分別用TRIG(R(fd3))至TRIG(R(fdN-1))表示,●在時(shí)刻tN-1,通過(guò)重命名次序CDCRN,執(zhí)行觸發(fā)命令,將重命名次序R(z)傳送到單元6,在單元6中觸發(fā)通過(guò)恢復(fù)模塊20恢復(fù)次序,即存儲(chǔ)區(qū)z的特性,然后通過(guò)第二執(zhí)行部分2peu執(zhí)行提供將包含在單元6的存儲(chǔ)區(qū)z中的算法處理的結(jié)果傳送到數(shù)據(jù)處理系統(tǒng)3的相關(guān)函數(shù)fdN,以便將其分配給變量Z,具有重命名次序CDCRN的所述觸發(fā)命令用IN(R(z))表示。
在所示的例子中,連續(xù)地執(zhí)行具有重命名次序1至N的觸發(fā)命令。應(yīng)注意到能產(chǎn)生兩種改進(jìn)● 第一改進(jìn)涉及單元6遠(yuǎn)程處理幾個(gè)算法處理以及至少由另一個(gè)算法處理使用一個(gè)算法處理的結(jié)果的情形。在這種情況下,可以去除具有用于傳送的重命名次序的一些觸發(fā)命令。
● 第二改進(jìn)針對(duì)在允許執(zhí)行受保護(hù)軟件2p的順序集中,選擇具有重命名次序的觸發(fā)命令的相關(guān)順序。在這一方面,最好通過(guò)在它們間插入在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的代碼部分并包括或不包括具有用于確定其他數(shù)據(jù)的重命名次序的觸發(fā)命令,選擇暫時(shí)脫離執(zhí)行相關(guān)函數(shù)的具有重命名次序的觸發(fā)命令的順序。圖83和84示例說(shuō)明這種實(shí)施例的原理。
圖83表示執(zhí)行有漏洞的軟件2p的例子。在這一例子中,在執(zhí)行有漏洞的軟件2p期間,出現(xiàn)在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行導(dǎo)致確定Z和Z’的兩個(gè)算法處理,諸如Z←F(X,Y)和Z’←F’(X’,Y’)。
圖84示例說(shuō)明單元6遠(yuǎn)程處理圖83中選定的兩個(gè)算法處理的根據(jù)本發(fā)明的方法的實(shí)現(xiàn)的例子。根據(jù)這一例子,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間并在存在單元6時(shí),如上所述,執(zhí)行相應(yīng)于確定Z的具有重命名次序CDCR1至CDCRN的觸發(fā)命令以及執(zhí)行相應(yīng)于確定Z’的具有重命名次序CDCR1’和CDNRM’的觸發(fā)命令。如圖所示,不連續(xù)地執(zhí)行具有重命名次序CDCR1至CDCRN的觸發(fā)命令,因?yàn)椴迦肓司哂兄孛涡駽DCR1’至CDCRM’的觸發(fā)命令以及其他代碼部分。在該例子中,從而執(zhí)行下述順序,CDCR1、插入代碼部分,CDCR1’、CDCR2、插入代碼部分、CDCR2’、CDCR3’、插入代碼部分、CDCR4’、CDCR3、CDCR4、…、CDCRN、CDCR’M。
應(yīng)注意到,在執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes的一部分期間,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的具有重命名次序的觸發(fā)命令,在單元6中觸發(fā)恢復(fù)相應(yīng)相關(guān)函數(shù)的特性,及然后它們的執(zhí)行。因此,在存在單元6時(shí),出現(xiàn)正確地執(zhí)行所述部分,因此,受保護(hù)軟件2p完全起作用。
圖85示例說(shuō)明當(dāng)缺少單元6時(shí),執(zhí)行受保護(hù)軟件2p的嘗試的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間,因?yàn)槿鄙賳卧?,在每個(gè)時(shí)刻,執(zhí)行具有重命名次序的觸發(fā)命令既不能觸發(fā)恢復(fù)次序也不能執(zhí)行相應(yīng)的相關(guān)函數(shù)。因此,不能正確地確定分配給變量Z的值。
因此,出現(xiàn)在缺少單元6時(shí),不能正確地履行受保護(hù)軟件2p的第一執(zhí)行部分2pes的一部分觸發(fā)恢復(fù)次序和在單元6中執(zhí)行相關(guān)函數(shù)的至少一個(gè)請(qǐng)求,以致至少不能正確地執(zhí)行所述部分,因此,受保護(hù)軟件2p不完全起作用。
由于通過(guò)重命名的這一保護(hù)原理,在具有重命名次序的觸發(fā)命令的受保護(hù)軟件2p中的檢查不能確定必須在單元6中執(zhí)行的相關(guān)函數(shù)的特性。應(yīng)注意到在修改有漏洞的軟件2v成受保護(hù)軟件2p期間,執(zhí)行次序的重命名。
根據(jù)通過(guò)重命名的保護(hù)原理的一變型,定義用于至少一個(gè)相關(guān)函數(shù)的算法上等效但由具有重命名次序的不同觸發(fā)命令觸發(fā)的一族相關(guān)函數(shù)。根據(jù)這一變型,對(duì)使用相關(guān)函數(shù)的至少一個(gè)算法處理,將所述算法處理分成多個(gè)相關(guān)函數(shù),其中它們中的至少一個(gè)用同一族的相關(guān)函數(shù)代替,而不是保持幾次出現(xiàn)相同函數(shù)。為此,修改具有重命名次序的觸發(fā)命令以便考慮用同一族的相關(guān)函數(shù)代替相關(guān)函數(shù)。換句話說(shuō),同一族的兩個(gè)相關(guān)函數(shù)具有不同的次序,因此,具有重命名次序的不同觸發(fā)命令,以及通過(guò)檢查受保護(hù)軟件2p來(lái)發(fā)現(xiàn)所說(shuō)的相關(guān)函數(shù)在算法上等效是不可能的。
根據(jù)通過(guò)重命名的保護(hù)原理的一不同的第一優(yōu)選實(shí)施例,通過(guò)將噪聲字段連接到定義相關(guān)函數(shù)的功能部分的信息上,為至少一個(gè)相關(guān)函數(shù)定義一族算法上等效的相關(guān)函數(shù)以便在單元6中執(zhí)行。
根據(jù)通過(guò)重命名的保護(hù)原理的一不同的第二優(yōu)選實(shí)施例,通過(guò)使用標(biāo)識(shí)字段,為至少一個(gè)相關(guān)函數(shù)定義算法上等效的一族相關(guān)函數(shù)。
根據(jù)通過(guò)重命名的保護(hù)原理的優(yōu)選一不同實(shí)施例,將允許加密次序以便將它們變換成重命名次序的加密方法定義為重命名次序的方法。記住在保護(hù)階段P執(zhí)行次序的重命名。對(duì)這一優(yōu)選變型,恢復(fù)模塊20是實(shí)現(xiàn)允許解密重命名次序,從而恢復(fù)相關(guān)函數(shù)的身份以便在單元6中執(zhí)行的解密方法的模塊。在單元6中實(shí)現(xiàn)所述恢復(fù)模塊,并能是軟件或硬件屬性。要求所述恢復(fù)模塊在使用階段U期間,為在單元6中觸發(fā),每次在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行具有重命名次序的觸發(fā)命令時(shí),執(zhí)行相關(guān)函數(shù)。
根據(jù)本發(fā)明,保護(hù)方法用來(lái)實(shí)現(xiàn)稱為《變量》的保護(hù)原理,參考圖40至43執(zhí)行其描述。
為通過(guò)變量實(shí)現(xiàn)保護(hù)原理,在有漏洞的軟件2vs的源中選擇至少一個(gè)變量,在執(zhí)行有漏洞的軟件2v期間,該至少一個(gè)變量部分地定義其狀態(tài)。通過(guò)軟件的狀態(tài),必須理解到在指定時(shí)間,需要完全執(zhí)行所述軟件的多條信息集,到這種程度,缺少這一選定變量不利于完全執(zhí)行所述軟件。還選擇包含至少一個(gè)選定變量的至少一部分有漏洞的軟件2vs的源。
然后修改至少一個(gè)選定部分的有漏洞的軟件2vs的源,以便獲得受保護(hù)軟件2ps的源。這一修改是在執(zhí)行受保護(hù)軟件2p期間,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的第一執(zhí)行部分2pes的至少一部分考慮到至少一個(gè)選定的變量或選定變量的至少一個(gè)拷貝駐留在單元6中。
圖40示例說(shuō)明有漏洞的軟件2v的執(zhí)行的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行有漏洞的軟件2v期間,出現(xiàn)● 在時(shí)刻t1,將數(shù)據(jù)X分配給變量V1,用V1←X表示,● 在時(shí)刻t2,將變量V1的值分配給變量Y,用Y←V1表示,● 以及在時(shí)刻t3,將變量V1的值分配給變量Z,用Z←V1表示。
圖41示例說(shuō)明變量駐留在單元6中的本發(fā)明的實(shí)現(xiàn)的第一形式的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間,當(dāng)存在單元6時(shí),出現(xiàn)● 在時(shí)刻t1,執(zhí)行觸發(fā)將數(shù)據(jù)X從數(shù)據(jù)處理系統(tǒng)3傳送到位于單元6的存儲(chǔ)模塊15中的變量V1的轉(zhuǎn)移命令,所述轉(zhuǎn)移命令用OUT(v1,x)表示,并最終相應(yīng)于將數(shù)據(jù)X分配到變量v1,● 在時(shí)刻t2,執(zhí)行觸發(fā)將駐留在單元6中的變量v1的值傳送到數(shù)據(jù)處理系統(tǒng)3以便將其分配給變量Y的轉(zhuǎn)移命令,所述轉(zhuǎn)移命令用IN(v1)表示,以及最終相應(yīng)于將變量v1的值分配給變量Y,● 以及在時(shí)刻t3,執(zhí)行觸發(fā)將駐留在單元6中的變量v1的傳送到數(shù)據(jù)處理系統(tǒng)3以便將其分配給變量Z的轉(zhuǎn)移命令,所述轉(zhuǎn)移命令用IN(v1)表示并最終相應(yīng)于將變量v1的值分配到變量Z。
應(yīng)觀察到在執(zhí)行受保護(hù)軟件2p期間,至少一個(gè)變量駐留在單元6中。因此,當(dāng)受保護(hù)軟件2p的第一執(zhí)行部分2pes的一部分利用它,并存在單元6時(shí),駐留在單元6中的所述變量值被傳送到數(shù)據(jù)處理系統(tǒng)3以便由受保護(hù)軟件2p的第一執(zhí)行部分2pes使用,到這種程度,以便正確地執(zhí)行所述部分,從而,受保護(hù)軟件2p完全起作用。
圖42示例說(shuō)明變量的拷貝駐留在單元6中的本發(fā)明的實(shí)現(xiàn)的第二形式的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間,并存在單元6時(shí),出現(xiàn)● 在時(shí)刻t1,將數(shù)據(jù)X分配給位于數(shù)據(jù)處理系統(tǒng)3中的變量V1,以及執(zhí)行觸發(fā)將數(shù)據(jù)X從數(shù)據(jù)處理系統(tǒng)3傳送到位于單元6的存儲(chǔ)模塊15中的變量v1的轉(zhuǎn)移命令,所述轉(zhuǎn)移命令用OUT(v1,X)表示,● 在時(shí)刻t2,將變量V1的值分配到變量Y,● 以及在時(shí)刻t3,執(zhí)行觸發(fā)將駐留在單元6中的變量v1的值傳送到處理數(shù)據(jù)系統(tǒng)3以便使其改變至變量Z的轉(zhuǎn)移命令,所述轉(zhuǎn)移命令用IN(v1)表示。
應(yīng)注意到在執(zhí)行受保護(hù)軟件2p期間,變量的至少一個(gè)拷貝駐留在單元6中。因此,當(dāng)受保護(hù)軟件2p的第一執(zhí)行部分2pes的一部分利用它,并存在單元6時(shí),將駐留在單元6中的變量的所述拷貝值傳送到數(shù)據(jù)處理系統(tǒng)3以便由受保護(hù)軟件2p的第一執(zhí)行部分2pes使用,到這種程度,正確地執(zhí)行所述部分,因此,受保護(hù)軟件2p完全起作用。
圖43示例說(shuō)明當(dāng)缺少單元6時(shí),受保護(hù)軟件2p的執(zhí)行嘗試的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間● 在時(shí)刻t1,考慮到缺少單元6,執(zhí)行轉(zhuǎn)移命令OUT(v1,x)不能觸發(fā)將數(shù)據(jù)X傳送到變量v1,● 在時(shí)刻t2,考慮到缺少單元6,執(zhí)行轉(zhuǎn)移命令I(lǐng)N(v1)不能觸發(fā)將變量v1的值傳送到數(shù)據(jù)處理系統(tǒng)3,● 以及在時(shí)刻t3,考慮到缺少單元6,執(zhí)行轉(zhuǎn)移命令I(lǐng)N(v1)不能觸發(fā)將變量v1的值傳送到數(shù)據(jù)處理系統(tǒng)3。
因此,很顯然,在缺少單元6時(shí),不能正確地履行使用駐留在單元6中的變量或變量拷貝的第一執(zhí)行部分2pes的一部分的至少一個(gè)請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因此,受保護(hù)軟件2p不完全起作用。
應(yīng)注意到,在以前的例子中所示的數(shù)據(jù)處理系統(tǒng)3和單元6間的數(shù)據(jù)傳送僅使用簡(jiǎn)單的分配,而技術(shù)人員將知道如何將它們與其他操作結(jié)合來(lái)獲得復(fù)雜的操作諸如例如OUT(v1,2*X+3)或Z←(5*v1+v2)。
根據(jù)本發(fā)明的另一有利特性,保護(hù)方法用來(lái)實(shí)現(xiàn)稱為“基本函數(shù)”的保護(hù)原理,參考圖60至64執(zhí)行其描述。
為通過(guò)基本函數(shù)實(shí)現(xiàn)保護(hù)原理,定義● 基本函數(shù)集,在單元6中,通過(guò)第二執(zhí)行部分2peu,易執(zhí)行其基本函數(shù),以及可以在數(shù)據(jù)處理系統(tǒng)3和單元6間傳送數(shù)據(jù),● 以及用于所述基本函數(shù)集的基本命令集,在數(shù)據(jù)處理系統(tǒng)3中易于執(zhí)行所述基本命令并在單元6中觸發(fā)執(zhí)行相應(yīng)的基本函數(shù)。
為通過(guò)基本函數(shù)實(shí)現(xiàn)保護(hù)原理,還構(gòu)成允許將空白單元60變換成能執(zhí)行基本函數(shù)的單元6的利用模塊,所述基本函數(shù)的執(zhí)行由在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行基本命令所觸發(fā)。
為通過(guò)基本函數(shù)實(shí)現(xiàn)保護(hù)原理,使用還在有漏洞的軟件2vs的源中選擇使用至少一個(gè)操作數(shù)并返回至少一個(gè)結(jié)果的至少一個(gè)算法處理。還選擇包含至少一個(gè)選定算法處理的有漏洞的軟件2vs的源的至少一個(gè)部分。
然后修改有漏洞的軟件2vs的源的至少一個(gè)選定的部分,以便獲得受保護(hù)軟件2ps的源。其中,這種修改以致● 在執(zhí)行受保護(hù)軟件2p期間,考慮到在單元6中執(zhí)行的至少一個(gè)選定算法處理的功能性,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行第一執(zhí)行部分2pes的至少一個(gè)部分,● 在執(zhí)行受保護(hù)軟件2p期間,在單元6中執(zhí)行的第二執(zhí)行部分2peu至少執(zhí)行至少一個(gè)選定算法處理的功能性,
● 分開每個(gè)選定算法處理以便在執(zhí)行受保護(hù)軟件2p期間,通過(guò)第二執(zhí)行部分2peu,使用基本函數(shù),執(zhí)行每個(gè)選定的算法處理。最好,將每個(gè)選定的算法處理分成基本函數(shù)fen(其中,n從1到N變化),即- 允許設(shè)置一個(gè)或幾個(gè)操作數(shù)的一個(gè)或幾個(gè)基本函數(shù)供單元6使用,- 基本函數(shù),一些使用操作數(shù)并結(jié)合來(lái)使用所述操作數(shù)執(zhí)行所選定的算法處理的功能性,- 允許通過(guò)單元6,設(shè)置所選定的算法處理的結(jié)果交由數(shù)據(jù)處理系統(tǒng)3使用的一個(gè)或幾個(gè)基本函數(shù)。
● 從允許執(zhí)行受保護(hù)軟件2p的順序集中選擇基本命令的順序。
在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的受保護(hù)軟件2p的第一執(zhí)行部分2pes執(zhí)行在單元6中觸發(fā)的基本命令CFEn(其中n從1至N),通過(guò)第二執(zhí)行部分2peu執(zhí)行每個(gè)在前定義的基本函數(shù)fen。
圖60示例說(shuō)明執(zhí)行有漏洞的軟件2v的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行有漏洞的軟件2v期間,在某些時(shí)刻,出現(xiàn)相應(yīng)于將用函數(shù)F表示并使用操作數(shù)X和Y的算法處理的結(jié)果分配給Z的計(jì)算Z←F(X,Y)。
圖61示例說(shuō)明在單元6中遠(yuǎn)程處理圖60中選定的算法處理的本發(fā)明的實(shí)現(xiàn)的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間,并存在單元6時(shí),出現(xiàn)
● 在時(shí)刻t1,t2,執(zhí)行在單元6中觸發(fā)的初始函數(shù)CFE1、CFE2,通過(guò)第二執(zhí)行部分2peu,執(zhí)行提供將數(shù)據(jù)X,Y從數(shù)據(jù)處理系統(tǒng)3分別傳送到位于單元6的存儲(chǔ)模塊15中的存儲(chǔ)區(qū)x,y的相應(yīng)的基本函數(shù)fe1,fe2,所述基本命令CFE1,CFE2分別用OUT(x,X),OUT(y,Y)表示,● 在時(shí)刻t3至tN-1,執(zhí)行在單元6中觸發(fā)的基本命令CFE3至CFEN-1,通過(guò)第二執(zhí)行部分2peu執(zhí)行相應(yīng)的基本函數(shù)fe3至feN-1,分別用TRIG(fe3)至TRIG(feN-1)表示所述基本命令CFE3至CFEN-1。結(jié)合所執(zhí)行的基本函數(shù)fe3至feN-1序列在算法上等效于函數(shù)F。更精確地說(shuō),執(zhí)行所述基本命令導(dǎo)致在單元6中執(zhí)行使用存儲(chǔ)區(qū)x,y的內(nèi)容并將結(jié)果返回到單元6的存儲(chǔ)區(qū)z的基本函數(shù)fe3至feN-1,● 以及在時(shí)刻tN,執(zhí)行在單元6中觸發(fā)的基本命令CFEN,通過(guò)第二執(zhí)行部件2peu執(zhí)行提供將包含在單元6的存儲(chǔ)區(qū)z中的算法處理的結(jié)果傳送到數(shù)據(jù)處理系統(tǒng)3的基本函數(shù)feN,以便將其分配給變量Z,所述基本命令CFEN用IN(z)表示。
在所示的例子中,連續(xù)地執(zhí)行基本命令1至N。應(yīng)當(dāng)注意到能引起兩個(gè)改進(jìn)● 第一改進(jìn)涉及在單元6中遠(yuǎn)程處理幾個(gè)算法處理以及至少由另一算法使用一個(gè)算法處理的結(jié)果。在這種情況下,能去除能用于傳送的一些基本命令。
● 第二改進(jìn)針對(duì)在允許執(zhí)行受保護(hù)軟件2p的順序集中,選擇基本命令的相關(guān)順序。在這一方面,最好通過(guò)在它們間插入在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的代碼部分和包括或不包括用于確定其他數(shù)據(jù)的基本命令,選擇臨時(shí)分解基本函數(shù)的執(zhí)行的基本命令順序。圖62和63示例說(shuō)明這種實(shí)施例的原理。
圖62表示執(zhí)行有漏洞的軟件2v的例子。在這一例子中,在執(zhí)行有漏洞的軟件2v期間,在數(shù)據(jù)處理系統(tǒng)3中出現(xiàn)執(zhí)行導(dǎo)致確定Z和Z’的兩個(gè)算法處理,以便Z←F(X,Y)和Z’←(X’,Y’)。
圖63示例說(shuō)明根據(jù)在單元6中遠(yuǎn)程處理圖62中所選定的兩個(gè)算法處理的本發(fā)明的方法的實(shí)現(xiàn)的例子。根據(jù)這一例子,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間,并存在單元6時(shí),如上所述,出現(xiàn)執(zhí)行相應(yīng)于確定Z的基本命令CFE1至CFEN和執(zhí)行相應(yīng)于確定Z’的基本命令CFE1’至CFEM’。如所示,因?yàn)椴迦牖久頒FE1’至CFEM’和其他部分代碼,不連續(xù)地執(zhí)行基本命令CFE1至CFEN。在該例子中,從而執(zhí)行下述順序,CFE1、部分插入碼、CFE1’、CFE2、部分插入碼,CFE2’、CFE3’、部分插入碼、CFE4’、CFE3、CFE4、...、CFEN、CFE’M。
應(yīng)注意到,在執(zhí)行受保護(hù)軟件2p期間,并存在單元6時(shí),每次包含在受保護(hù)軟件2p的第一執(zhí)行部分2pes的部分中的基本命令利用它時(shí),在單元6執(zhí)行相應(yīng)的基本函數(shù)。因此,出現(xiàn)在存在單元6時(shí),正確地執(zhí)行所述部分,因此,受保護(hù)軟件2p完全起作用。
圖64示例說(shuō)明當(dāng)缺少單元6時(shí),執(zhí)行受保護(hù)軟件2p的嘗試的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間,在每個(gè)時(shí)刻,執(zhí)行基本命令不能觸發(fā)執(zhí)行相應(yīng)的基本函數(shù),因?yàn)槿鄙賳卧?,因此正確地確定分配到變量Z的值。
因此,出現(xiàn)在缺少單元6時(shí),不能正確地履行受保護(hù)軟件2p的部分第一執(zhí)行部分2pes的一部分觸發(fā)單元6中的基本函數(shù)執(zhí)行的至少一個(gè)請(qǐng)求,以便不正確地執(zhí)行至少所述部分,因此,受保護(hù)軟件2p不完全起作用。
根據(jù)本發(fā)明的另一有利特性,保護(hù)方法針對(duì)實(shí)現(xiàn)稱為“檢測(cè)和強(qiáng)制”的保護(hù)原理,將參考圖70至74執(zhí)行其描述。
為通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理,定義● 在單元6中至少部分易受監(jiān)視的至少一個(gè)軟件執(zhí)行特性,● 由至少一個(gè)軟件執(zhí)行特性遵守的至少一個(gè)準(zhǔn)則,● 在單元6中實(shí)現(xiàn)的檢測(cè)模塊17并允許檢測(cè)不遵守至少一個(gè)相關(guān)準(zhǔn)則的至少一個(gè)軟件執(zhí)行特性,● 以及在單元6中實(shí)現(xiàn)的強(qiáng)制模塊18并允許當(dāng)未遵守至少一個(gè)準(zhǔn)則時(shí),通知數(shù)據(jù)處理系統(tǒng)3和/或修改軟件的執(zhí)行。
為通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理,還構(gòu)成允許將空白單元60轉(zhuǎn)換成實(shí)現(xiàn)至少檢測(cè)模塊17和強(qiáng)制模塊18的單元6的利用模塊。
圖70示例說(shuō)明通過(guò)檢測(cè)和強(qiáng)制,實(shí)現(xiàn)這一保護(hù)原理所需的模塊。單元6包括屬于處理模塊16的檢測(cè)模塊17和強(qiáng)制模塊18。由檢測(cè)模塊17通知強(qiáng)制模塊18未遵守準(zhǔn)則。
更精確地說(shuō),檢測(cè)模塊17使用來(lái)自傳送模塊13和/或來(lái)自存儲(chǔ)模塊15和/或來(lái)自處理模塊16的信息,以便監(jiān)視一個(gè)或幾個(gè)軟件執(zhí)行特性。對(duì)每個(gè)軟件執(zhí)行特性,設(shè)置將遵守的至少一個(gè)準(zhǔn)則。
在檢測(cè)至少一個(gè)軟件執(zhí)行特性未遵守至少一個(gè)準(zhǔn)則,檢測(cè)模塊17將此通知強(qiáng)制模塊18。還采用所述強(qiáng)制模塊18來(lái)用適當(dāng)?shù)姆绞叫薷膯卧?的狀態(tài)。
為通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理,還選擇● 至少一個(gè)軟件執(zhí)行特性,以便監(jiān)視易受監(jiān)視的軟件執(zhí)行特性,● 對(duì)于至少一個(gè)選定軟件執(zhí)行特性所遵守的至少一個(gè)準(zhǔn)則,● 在有漏洞的軟件2vs的源中,將監(jiān)視其至少一個(gè)軟件執(zhí)行特性的至少一個(gè)算法處理,● 以及在有漏洞的軟件2vs的源中,至少一個(gè)部分包含至少一個(gè)選定算法處理。
然后修改有漏洞的軟件2vs的源的至少一個(gè)選定部分,以便獲得受保護(hù)軟件2ps的源。這一修改是在執(zhí)行受保護(hù)軟件2p期間,其中● 在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的第一執(zhí)行部分2pes的至少一個(gè)部分考慮到將至少部分在單元6中監(jiān)視的至少一個(gè)選定軟件執(zhí)行特性,● 以及在單元6中執(zhí)行的第二執(zhí)行部分2peu至少部分監(jiān)視所選定的軟件執(zhí)行特性。
在執(zhí)行通過(guò)檢測(cè)和強(qiáng)制的這一保護(hù)原理保護(hù)的受保護(hù)軟件2p期間,并存在單元6時(shí)● 只要遵守相應(yīng)于受保護(hù)軟件2p的所有修改部分的所有受監(jiān)視執(zhí)行特性的所有準(zhǔn)則,標(biāo)稱地使受保護(hù)軟件2p的所述修改部分起作用,以便使所述受保護(hù)軟件2p起作用,● 以及如果不遵守相應(yīng)于受保護(hù)軟件2p部分的受監(jiān)視執(zhí)行特性的至少一個(gè)準(zhǔn)則,將其告知數(shù)據(jù)處理系統(tǒng)3和/或修改受保護(hù)軟件2p的部分的功能性,以便修改受保護(hù)軟件2p的功能。
當(dāng)然,在缺少單元6時(shí),不能正確地履行受保護(hù)軟件2p的第一執(zhí)行部分2pes的一部分使用單元6的至少一個(gè)請(qǐng)求,以便不正確地執(zhí)行至少一個(gè)所述部分,因此,受保護(hù)軟件2p不完全起作用。
為通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理,優(yōu)選使用兩種軟件執(zhí)行特性。
第一種軟件執(zhí)行特性相應(yīng)于軟件執(zhí)行的度量的變量以及第二種相應(yīng)于軟件使用的簡(jiǎn)要表。能獨(dú)立或結(jié)合使用所述兩種特性。
為使用軟件執(zhí)行的度量的變量作為執(zhí)行特性,通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理,定義●在存儲(chǔ)模塊15中,存儲(chǔ)用來(lái)量化軟件的至少一個(gè)功能性的使用的度量的至少一個(gè)變量的概率,●在檢測(cè)模塊17中,監(jiān)視與每個(gè)度量的變量有關(guān)的至少一個(gè)閾值的概率,●以及根據(jù)與其有關(guān)的每個(gè)功能性的使用,允許更新每個(gè)度量的變量的實(shí)行模塊。
除檢測(cè)模塊17和強(qiáng)制模塊18外,還構(gòu)成實(shí)現(xiàn)實(shí)行模塊的利用模塊。
在有漏洞的軟件2vs的源中,還選擇●有漏洞的軟件2v的至少一個(gè)功能性,使用度量的變量,易監(jiān)視其使用,●用來(lái)量化所述功能性的使用的至少一個(gè)度量的變量,●與相應(yīng)于所述功能性的使用的限制的度量的變量有關(guān)的至少一個(gè)閾值,●以及根據(jù)所述功能性的使用,度量的變量的更新的至少一種方法。
然后修改有漏洞的軟件2vs的源,以便獲得受保護(hù)軟件2ps的源,這一改變是在執(zhí)行受保護(hù)軟件2p期間,第二執(zhí)行2peu●根據(jù)所述功能性的使用,實(shí)現(xiàn)度量的變量,●以及考慮至少一個(gè)閾值越過(guò)。
換句話說(shuō),在執(zhí)行受保護(hù)軟件2p期間,根據(jù)所述功能性的使用,更新度量的變量,以及當(dāng)越過(guò)閾值時(shí),檢測(cè)模塊17通知強(qiáng)制模塊18做出適當(dāng)?shù)臎Q定來(lái)通知數(shù)據(jù)處理系統(tǒng)3和/或修改由處理模塊16執(zhí)行的處理,處理模塊16允許修改受保護(hù)軟件2p的部分的功能,以便修改受保護(hù)軟件2p的功能。
為通過(guò)檢測(cè)和強(qiáng)制,使用度量的變量作為特性,實(shí)現(xiàn)保護(hù)原理的第一優(yōu)選不同實(shí)施例,定義●用于度量的至少一個(gè)變量的幾個(gè)相關(guān)閾值,
●以及相應(yīng)于每個(gè)所述閾值的不同的強(qiáng)制模塊。
在有漏洞的軟件2vs的源中,還選擇●用來(lái)量化軟件的至少一個(gè)功能性的使用并且必須是相應(yīng)于所述功能性的使用的不同限制的相關(guān)的幾個(gè)閾值的度量的至少一個(gè)變量,●以及與度量的變量有關(guān)的至少兩個(gè)閾值。
然后修改有漏洞的軟件2vs的源,以便獲得受保護(hù)軟件2ps的源,這一修改可以使在受保護(hù)軟件2p的執(zhí)行期間,第二執(zhí)行部分2peu●根據(jù)所述功能性的使用,實(shí)現(xiàn)度量的變量,●以及不同地考慮各個(gè)閾值的越過(guò)。
換句話說(shuō),通常,在執(zhí)行受保護(hù)軟件2p期間,當(dāng)越過(guò)第一閾值時(shí),單元6通知數(shù)據(jù)處理系統(tǒng)3命令受保護(hù)軟件2p不再使用所述功能性。如果受保護(hù)軟件2p繼續(xù)使用所述功能性,可能越過(guò)第二閾值。在越過(guò)第二閾值的情況下,強(qiáng)制模塊18能使所選定的功能性無(wú)效和/或使受保護(hù)的軟件2p無(wú)效。
為通過(guò)使用度量的變量作為特性的檢測(cè)和強(qiáng)制,實(shí)現(xiàn)保護(hù)原理的第二優(yōu)選不同實(shí)施例,定義允許通過(guò)至少一個(gè)另外的使用,信任(credit)由度量的變量監(jiān)視的至少一個(gè)軟件功能性的補(bǔ)裝模塊。
除檢測(cè)模塊17、強(qiáng)制模塊18和實(shí)行模塊外,還構(gòu)造實(shí)現(xiàn)補(bǔ)裝模塊的利用模塊。
在有漏洞的軟件2vs的源中,還選擇用來(lái)限制軟件的至少一個(gè)功能性的使用并且必須通過(guò)至少一個(gè)另外的使用,能被信任的度量的至少一個(gè)變量。
然后修改有漏洞的軟件2vs的源,以便獲得受保護(hù)軟件2ps的源,這一修改是在調(diào)用補(bǔ)充階段期間,能信任相應(yīng)于所選定的度量的變量的至少一個(gè)功能性的至少一個(gè)另外的使用。
在補(bǔ)充階段期間,執(zhí)行度量的至少一個(gè)選定變量和/或至少一個(gè)相關(guān)閾值的重新實(shí)現(xiàn),以便允許相應(yīng)的功能性的至少一個(gè)另外的使用。換句話說(shuō),在補(bǔ)充階段期間,可以信任受保護(hù)軟件2p的至少一個(gè)功能性的另外的使用。
為通過(guò)使用軟件利用的簡(jiǎn)要表作為特性的檢測(cè)和強(qiáng)制來(lái)實(shí)現(xiàn)保護(hù)原理,將軟件執(zhí)行的至少一個(gè)特征定義為對(duì)于所述利用的簡(jiǎn)要表要遵守的準(zhǔn)則。
在有漏洞的軟件2vs的源中,還選擇●至少一個(gè)利用簡(jiǎn)要表來(lái)監(jiān)視,●以及至少一個(gè)選定的利用簡(jiǎn)要表必須遵守的至少一個(gè)執(zhí)行特征。
然后,改變有漏洞的軟件2vs的源,以便獲得受保護(hù)軟件2ps的源,這一修改是在執(zhí)行受保護(hù)軟件2p期間,第二執(zhí)行部分2peu遵守所選定的執(zhí)行特征。換句話說(shuō),在不遵守至少一個(gè)執(zhí)行特征的情況下,單元6本身監(jiān)視第二執(zhí)行部分2peu執(zhí)行的方式并能通知數(shù)據(jù)處理系統(tǒng)3和/或修改受保護(hù)軟件2p的功能。
在執(zhí)行通過(guò)這種原理保護(hù)的受保護(hù)軟件2p期間,當(dāng)存在單元6時(shí)
●只要遵守受保護(hù)軟件2p的所有修改過(guò)的部分的所有執(zhí)行特征,受保護(hù)軟件2p的所述修改過(guò)的部分標(biāo)稱地起作用,以致所述受保護(hù)軟件2p標(biāo)稱地起作用,●以及如果不遵守受保護(hù)軟件2p的一部分的至少一個(gè)執(zhí)行特征,通知數(shù)據(jù)處理系統(tǒng)3和/或修改受保護(hù)軟件2p的這部分的功能,以致修改受保護(hù)軟件2p的功能。
能考慮監(jiān)視不同執(zhí)行特征,例如監(jiān)視存在包括標(biāo)記的指令或監(jiān)視用于至少一部分指令的執(zhí)行鏈接接。
為通過(guò)將監(jiān)視用于至少一部分指令的執(zhí)行鏈接接用作遵守的執(zhí)行特征的檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理,定義●指令集,其指令易于在單元6中執(zhí)行,●用于所述指令集的指令命令集,所述指令命令易在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行。在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行每個(gè)指令命令,觸發(fā)在單元6中執(zhí)行相應(yīng)的指令,●允許檢測(cè)指令鏈接接的檢測(cè)模塊17不相應(yīng)于預(yù)期的一個(gè),●以及當(dāng)指令鏈接接不相應(yīng)于預(yù)期的一個(gè)時(shí),允許通知數(shù)據(jù)處理系統(tǒng)3和/或修改軟件的執(zhí)行的強(qiáng)制模塊18。
還構(gòu)造允許單元6也執(zhí)行指令集的指令的利用模塊,執(zhí)行所述指令通過(guò)在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行指令命令而被觸發(fā)。
還在有漏洞的軟件2vs中選擇必須在單元6中遠(yuǎn)程處理并且將監(jiān)視指令的至少一部分的鏈接接的至少一個(gè)算法處理。
然后修改有漏洞的軟件2vs的源,以便獲得受保護(hù)軟件2ps的源,這一修改是在執(zhí)行受保護(hù)軟件2p期間●第二執(zhí)行部分2peu至少執(zhí)行所選定的算法處理的功能性,●將所選定的算法處理分成多個(gè)指令,●在指定單元6中的它們的執(zhí)行期間,至少一些指令必須遵守的鏈接接,●以及受保護(hù)軟件2p的第一執(zhí)行部分2pes執(zhí)行觸發(fā)在單元6中執(zhí)行指令的指令命令。
在執(zhí)行通過(guò)這一原理保護(hù)的受保護(hù)軟件2p期間,在存在單元6時(shí)●只要在單元6中執(zhí)行的受保護(hù)軟件2p的所有修改部分的指令鏈接接相應(yīng)于預(yù)期的一個(gè),所述受保護(hù)軟件2p的修改部分標(biāo)稱地起作用,以致受保護(hù)軟件2p標(biāo)稱地起作用,●以及如果在單元6中執(zhí)行的受保護(hù)軟件2p的一部分的指令鏈接接不相應(yīng)于預(yù)期的一個(gè),將其告知數(shù)據(jù)處理系統(tǒng)3和/或修改受保護(hù)軟件2p的部分的功能,以便修改受保護(hù)軟件2p的功能。
圖71示例說(shuō)明在遵守預(yù)期鏈接接的情況下,使用監(jiān)視至少一部分指令的執(zhí)行鏈接接作為遵守的執(zhí)行特征,通過(guò)檢測(cè)和強(qiáng)制,實(shí)現(xiàn)保護(hù)原理的例子。
在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的受保護(hù)軟件2p的第一執(zhí)行部分2pes執(zhí)行觸發(fā)在單元6中執(zhí)行屬于指令集的指令ii的指令命令CIi。在所述指令集中,至少一些指令的每一個(gè)包括定義指令的功能性的部分和允許校驗(yàn)用于執(zhí)行指令的部分預(yù)期鏈接接的部分。在這一例子中,用TRIG(ii)表示指令命令CIi,以及用于執(zhí)行指令的預(yù)期鏈接接為in、in+1和in+2。單元6中執(zhí)行指令in給出結(jié)果a以及執(zhí)行指令in+1給出結(jié)果b。指令in+2用作為操作數(shù),指令in和in+1的結(jié)果a和b及其執(zhí)行給出結(jié)果c。
考慮到在單元6中執(zhí)行的所述指令鏈接接相應(yīng)于預(yù)期的一個(gè),其導(dǎo)致受保護(hù)軟件2p的正?;驑?biāo)稱的功能。
圖72示例說(shuō)明在不遵守預(yù)期鏈接接的情況下,將監(jiān)視這些指令的至少一部分的執(zhí)行鏈接接用作遵守的執(zhí)行特征,通過(guò)檢測(cè)和強(qiáng)制,實(shí)現(xiàn)保護(hù)原理的例子。
根據(jù)這一例子,用于執(zhí)行指令的預(yù)期鏈接接仍為in、in+1和in+2。然而,通過(guò)用指令in’代替指令in,修改執(zhí)行鏈接接,以便實(shí)際執(zhí)行的鏈接接為in’、in+1和in+2。執(zhí)行指令in’給出結(jié)果a,即與執(zhí)行指令in相同的結(jié)果。然而,最遲在執(zhí)行指令in+2期間,檢測(cè)模塊17檢測(cè)指令in’不相應(yīng)于生成用作指令in+2的操作的結(jié)果a的預(yù)期指令。檢測(cè)模塊17將其告知強(qiáng)制模塊18,從而修改指令in+2的功能,以便執(zhí)行指令in+2給出能不同于c的結(jié)果c’。當(dāng)然,如果執(zhí)行指令in’給出不同于指令in的結(jié)果a的結(jié)果a’,很顯然指令in+2的結(jié)果也不同于c。
因?yàn)樵趩卧?中執(zhí)行的指令的執(zhí)行鏈接接不相應(yīng)于預(yù)期的一個(gè),因此,能獲得受保護(hù)軟件2p的功能的改進(jìn)。
圖73和74示例說(shuō)明將監(jiān)視指令的至少一部分的執(zhí)行鏈接接作用遵守的執(zhí)行特征,通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理的優(yōu)選的不同實(shí)施例。根據(jù)這一優(yōu)選的不同實(shí)施例,定義指令集,其至少一些指令與寄存器一起工作并為返回結(jié)果,使用至少一個(gè)操作數(shù)。
如圖73所示,定義與寄存器一起工作的至少一些指令,定義指令的功能性的部分RF以及定義用于執(zhí)行指令的預(yù)期鏈接接的部分PE。部分PF相應(yīng)于技術(shù)人員己知的操作碼。部分PE定義預(yù)期鏈接接,包括對(duì)應(yīng)于下述的位字段●指令CII的標(biāo)識(shí)字段,●以及用于指令的每個(gè)操作數(shù)k,其中k從1至K,以及K個(gè)指令操作數(shù)-標(biāo)志字段CDk,表示其是否適合于校驗(yàn)操作數(shù)K的起始,-以及操作數(shù)的預(yù)期標(biāo)識(shí)字段CIPk,表示已經(jīng)生成操作數(shù)k的內(nèi)容的指令的預(yù)期標(biāo)識(shí)。
如圖74所示,指令集包括屬于處理模塊16的V個(gè)寄存器,每個(gè)寄存器稱為Rv,其中v從1至V。對(duì)每個(gè)寄存器Rv,定義兩個(gè)字段,即●技術(shù)人員已知的功能字段CFv,并允許存儲(chǔ)指令執(zhí)行的結(jié)果,●以及所生成的標(biāo)識(shí)字段CIGv,允許存儲(chǔ)已經(jīng)生成功能字段CFv的內(nèi)容的指令的標(biāo)識(shí)。通過(guò)已經(jīng)生成功能字段CFv的指令CII的標(biāo)識(shí)字段的內(nèi)容,自動(dòng)更新所述生成的標(biāo)識(shí)字段CIGv。所述生成標(biāo)識(shí)字段CIGv既不能存取,也不能由任何指令修改,并僅用于檢測(cè)模塊17。
在執(zhí)行指令期間,對(duì)每個(gè)操作數(shù)k,檢測(cè)模塊17執(zhí)行下述操作●讀取標(biāo)志字段CDk,●如果標(biāo)志字段CDk利用它,同時(shí)讀取相應(yīng)于由操作數(shù)k使用的寄存器的預(yù)期標(biāo)識(shí)字段CIPk和所生成的標(biāo)識(shí)字段CIGv,●檢查兩個(gè)字段CIPk和CIGv的等式,●以及如果等式為假,檢測(cè)模塊17認(rèn)為未遵守指令的執(zhí)行鏈接接。
當(dāng)檢測(cè)模塊17已經(jīng)告知它們未遵守指令鏈接接時(shí),強(qiáng)制模塊18允許修改指令結(jié)果。通過(guò)修改當(dāng)前執(zhí)行的指令的功能部分PF或其后指令的功能部分RF來(lái)執(zhí)行優(yōu)選實(shí)施例。
根據(jù)本發(fā)明的另一有利特性,保護(hù)方法針對(duì)實(shí)現(xiàn)稱為“條件分支“的保護(hù)原理,將參考圖90至92來(lái)描述。
為通過(guò)條件分支實(shí)現(xiàn)保護(hù)原理,在有漏洞的軟件2vs的源中選擇至少一個(gè)條件分支BC。還選擇包含至少一個(gè)選定的條件分支BC的有漏洞的軟件2vs的源的至少一部分。
然后修改有漏洞的軟件2vs的源的至少一個(gè)選定部分,以便獲得受保護(hù)軟件2ps的源。這一修改是在執(zhí)行受保護(hù)軟件2p期間,其中●第一執(zhí)行部分2pes的至少一個(gè)部分,其在數(shù)據(jù)處理系統(tǒng)中執(zhí)行,考慮到在單元6中執(zhí)行至少一個(gè)選定條件分支BC的功能性,●以及第二執(zhí)行部分2peu,其在單元6中執(zhí)行,至少執(zhí)行至少一個(gè)選定條件分支BC的功能性并將允許第一執(zhí)行部分2peu在所選定的點(diǎn)繼續(xù)其執(zhí)行的一條信息交由數(shù)據(jù)處理系統(tǒng)3自由處理。
在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的受保護(hù)軟件2p的第一執(zhí)行部分2pes執(zhí)行條件分支命令,其在單元6中觸發(fā)通過(guò)第二執(zhí)行部分2peu執(zhí)行其功能性等效于所選定的條件分支BC的功能性的遠(yuǎn)程處理?xiàng)l件分支bc。
圖90示例說(shuō)明執(zhí)行有漏洞的軟件2v的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行有漏洞的軟件2v期間,在某些時(shí)刻,出現(xiàn)向有漏洞的軟件2v表示繼續(xù)其執(zhí)行的點(diǎn),即,三個(gè)可能點(diǎn)B1、B2或B3中的一個(gè)的條件分支BC。必須理解到條件分支BC采用在點(diǎn)B1、B2或B3繼續(xù)執(zhí)行軟件的決定。
圖91示例說(shuō)明單元6遠(yuǎn)程處理的相應(yīng)于條件分支BC的所選定的條件分支的本發(fā)明的實(shí)現(xiàn)的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes并存在單元6時(shí),出現(xiàn)●在時(shí)刻t1,執(zhí)行條件分支命令CBC1,其觸發(fā)在單元6中通過(guò)第二執(zhí)行部分2peu執(zhí)行算法上等效于條件分支BC的遠(yuǎn)程處理?xiàng)l件分支bc,所述條件分支命令CBC1用TRIG(bc)表示,
●以及在時(shí)刻t2,將允許第一執(zhí)行部分2pes在所選定的點(diǎn),即點(diǎn)B1、B2或B3繼續(xù)其執(zhí)行的信息從單元6傳送到數(shù)據(jù)處理系統(tǒng)3。
應(yīng)注意到在執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes的一部分期間,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的條件分支命令觸發(fā)在單元6中執(zhí)行相應(yīng)的遠(yuǎn)程處理?xiàng)l件分支。因此,出現(xiàn)在存在單元6時(shí),正確地執(zhí)行所述部分,因此,受保護(hù)軟件2p完全起作用。
圖92示例說(shuō)明當(dāng)缺少單元6時(shí),執(zhí)行受保護(hù)軟件2p的嘗試的例子。在這一例子中,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行受保護(hù)軟件2p的第一執(zhí)行部分2pes期間●在時(shí)刻t1,考慮到缺少單元6時(shí),執(zhí)行條件分支命令CBC1不能觸發(fā)執(zhí)行遠(yuǎn)程處理?xiàng)l件分支bc,●以及在時(shí)刻t2,考慮到缺少單元6時(shí),傳送允許第一執(zhí)行部分2pes在所選定的點(diǎn)執(zhí)行的該段信息。
因此,出現(xiàn)在缺少單元6時(shí),不能正確地履行第一執(zhí)行部分2pes的一部分觸發(fā)在單元6中執(zhí)行遠(yuǎn)程處理?xiàng)l件分支的至少一個(gè)請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因而受保護(hù)軟件不完全起作用。
在與圖90至92有關(guān)的先前描述中,本發(fā)明的主題在于在單元6中遠(yuǎn)程處理?xiàng)l件分支。當(dāng)然,通過(guò)在單元6中遠(yuǎn)程處理其整體功能性等效于已經(jīng)遠(yuǎn)程處理的所有條件分支的功能性的一系列條件分支,執(zhí)行本發(fā)明的優(yōu)選實(shí)施例。執(zhí)行所述遠(yuǎn)程處理?xiàng)l件分支序列的全部功能性導(dǎo)致設(shè)置允許受保護(hù)軟件2p的第一執(zhí)行部分2pes在選定點(diǎn)繼續(xù)其執(zhí)行的一段信息由數(shù)據(jù)處理系統(tǒng)3使用。
在參考圖40至92的在前描述中,已經(jīng)彼此無(wú)關(guān)地清楚地描述了五個(gè)不同的軟件保護(hù)原理。通過(guò)使用通過(guò)重命名的保護(hù)原理,可能結(jié)合一個(gè)或幾個(gè)其他的保護(hù)原理,實(shí)現(xiàn)根據(jù)本發(fā)明的保護(hù)方法。在通過(guò)實(shí)現(xiàn)至少一個(gè)另一保護(hù)原理補(bǔ)充通過(guò)重命名的保護(hù)原理的情況下,通過(guò)變量的保護(hù)原理和/或通過(guò)基本函數(shù)的保護(hù)原理和/或通過(guò)條件分支的保護(hù)原理,有利地補(bǔ)充通過(guò)重命名的保護(hù)原理。
以及當(dāng)還實(shí)現(xiàn)通過(guò)臨時(shí)分解的保護(hù)原理時(shí),依次輪到通過(guò)檢測(cè)和強(qiáng)制的保護(hù)原理和/或通過(guò)條件分支的保護(hù)原理補(bǔ)充它。
以及當(dāng)還實(shí)現(xiàn)通過(guò)檢測(cè)和強(qiáng)制的保護(hù)原理時(shí),依次輪到通過(guò)條件分支的保護(hù)原理補(bǔ)充它。
根據(jù)優(yōu)選的一不同實(shí)施例,由通過(guò)變量的保護(hù)原理補(bǔ)充、由通過(guò)基本函數(shù)的保護(hù)原理補(bǔ)充、由通過(guò)檢測(cè)和強(qiáng)制的保護(hù)原理補(bǔ)充、由通過(guò)條件分支的保護(hù)原理補(bǔ)充通過(guò)重命名的保護(hù)原理。
在應(yīng)用保護(hù)原理,補(bǔ)充通過(guò)重命名的保護(hù)原理的情況下,考慮到其組合實(shí)現(xiàn),其在前完成的說(shuō)明必須包括下述改進(jìn)●必須將有漏洞的軟件的概念理解而向正描述的保護(hù)原理的有漏洞的軟件。因此,在已經(jīng)將保護(hù)原理應(yīng)用到有漏洞的軟件的情況下,讀者必須將措辭“有漏洞的軟件”解釋為措辭“受已經(jīng)應(yīng)用的保護(hù)原理保護(hù)的軟件”;●必須將受保護(hù)軟件的概念理解為由正描述的保護(hù)原理保護(hù)的軟件。因此,在已經(jīng)應(yīng)用保護(hù)原理的情況下,讀者必須將措辭“受保護(hù)軟件”解釋為措辭“新版本的受保護(hù)軟件”;●以及為實(shí)現(xiàn)正描述的保護(hù)原理所做的選擇必須考慮為實(shí)現(xiàn)已經(jīng)應(yīng)用的保護(hù)原理所做的選擇。
其余的描述允許更好地理解根據(jù)本發(fā)明的保護(hù)方法的實(shí)現(xiàn)。如圖100更精確地表示,根據(jù)本發(fā)明的這一保護(hù)方法由下述組成●首先,保護(hù)階段P,在其期間,修改有漏洞的軟件以變成受保護(hù)軟件2p,●其次,使用階段U,在其期間,使用受保護(hù)軟件2p。
在這一階段U期間-在存在單元6時(shí),每次在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的第一執(zhí)行部分2pes的一部分利用它時(shí),在單元6中執(zhí)行所利用的功能性,以便正確地執(zhí)行所述部分,因此,受保護(hù)軟件2p完全起作用,-在缺少單元6,盡管第一執(zhí)行部分2pes的一部分請(qǐng)求在單元6中執(zhí)行功能性,不能正確地履行所述請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因而受保護(hù)軟件2p不完全起作用,●以及可能的補(bǔ)充階段R,在其期間,將度量的變量用作特性,信任通過(guò)實(shí)現(xiàn)檢測(cè)和強(qiáng)制的保護(hù)原理的第二優(yōu)選變型實(shí)施例保護(hù)的功能性的至少一個(gè)另外的使用。
能將保護(hù)階段P分成兩個(gè)保護(hù)子階段P1和P2。稱為在前保護(hù)子階段P1的第一階段與保護(hù)的有漏洞的軟件2v無(wú)關(guān)地發(fā)生。稱為其后的保護(hù)子階段P2的第二階段P2與保護(hù)的有漏洞的軟件2v有關(guān)。應(yīng)注意到通過(guò)兩個(gè)不同的人或兩個(gè)不同的方式,能有利地執(zhí)行在前保護(hù)子階段P1和下一保護(hù)子階段P2。例如,由提供軟件保護(hù)系統(tǒng)開發(fā)的人或公司執(zhí)行在前保護(hù)子階段P1,而由提供要求保護(hù)的軟件開發(fā)的人或公司執(zhí)行下一保護(hù)子階段P2。當(dāng)然,也能由相同人或團(tuán)隊(duì)執(zhí)行在前保護(hù)子階段P1和下一保護(hù)子階段P2是很顯然的。
在前保護(hù)子階段P1由用于將執(zhí)行的不同任務(wù)或工作的幾個(gè)級(jí)S11、…、S1i組成。
這一在前保護(hù)子階段P1的第一級(jí)稱為“定義級(jí)S11”,在這一定義級(jí)S11●選擇-單元6的類型,作為示例性的例子,芯片卡閱讀器8和與閱讀器有關(guān)的芯片卡7能選擇為單元6,-以及設(shè)計(jì)成分別在數(shù)據(jù)處理系統(tǒng)3和單元6中實(shí)現(xiàn)的傳送模塊12、13,在使用階段U期間,能提供在數(shù)據(jù)處理系統(tǒng)3和單元6間傳送數(shù)據(jù),●定義-相關(guān)函數(shù)集,易于在單元6中執(zhí)行其相關(guān)函數(shù),-用于所述相關(guān)函數(shù)的觸發(fā)命令集,所述觸發(fā)命令易于在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行并且在單元6中觸發(fā)執(zhí)行這些相關(guān)函數(shù),-對(duì)每個(gè)觸發(fā)命令,一次序至少部分相應(yīng)于從數(shù)據(jù)處理系統(tǒng)3傳送到單元6的信息,以便在單元6中觸發(fā)執(zhí)行相應(yīng)的相關(guān)函數(shù),所述次序具有觸發(fā)命令的至少一個(gè)變?cè)男问剑?允許重命名次序的次序的重命名方法以便獲得具有重命名次序的觸發(fā)命令,-以及設(shè)計(jì)成在使用階段期間U在單元6中實(shí)現(xiàn)的恢復(fù)模塊20并允許從重命名的次序恢復(fù)相關(guān)函數(shù)以執(zhí)行。
●以及在根據(jù)本發(fā)明的保護(hù)方法實(shí)現(xiàn)通過(guò)重命名的保護(hù)原理的變型時(shí),還定義用于至少一個(gè)相關(guān)函數(shù)的、算法上等效上,但由重命名次序不同的觸發(fā)命令觸發(fā)的一族相關(guān)函數(shù),●以及在根據(jù)本發(fā)明的保護(hù)方法實(shí)現(xiàn)通過(guò)重命名的保護(hù)原理的優(yōu)選變型時(shí),還定義-將加密次序的加密方法定義為次序的重命名方法,-以及將實(shí)現(xiàn)解密重命名次序,從而恢復(fù)將在單元6中執(zhí)行的相關(guān)函數(shù)的身份的解密方法的模塊定義為恢復(fù)模塊20。
●以及在根據(jù)本發(fā)明的保護(hù)方法實(shí)現(xiàn)通過(guò)基本函數(shù)的保護(hù)原理時(shí),還定義-基本函數(shù)集,相關(guān)函數(shù)集的子集,-以及用于所述基本函數(shù)級(jí)的基本命令集,所述基本命令集為所述觸發(fā)命令集的子集,●以及在根據(jù)本發(fā)明的保護(hù)方法實(shí)現(xiàn)通過(guò)檢測(cè)和強(qiáng)制的保護(hù)原理時(shí),還定義-至少一個(gè)軟件執(zhí)行特性,易于在單元6中被至少部分監(jiān)視,-至少一個(gè)軟件執(zhí)行特性遵守的至少一個(gè)準(zhǔn)則,-在單元6中實(shí)現(xiàn)的檢測(cè)模塊17,允許檢測(cè)至少一個(gè)軟件執(zhí)行特性不遵守至少一個(gè)相關(guān)準(zhǔn)則,-以及在單元6中實(shí)現(xiàn)的強(qiáng)制模塊18,當(dāng)不遵守至少至少一個(gè)準(zhǔn)則時(shí),允許通知數(shù)據(jù)處理系統(tǒng)3和/或修改執(zhí)行軟件,●以及在使用軟件執(zhí)行的度量的變量作為特性,根據(jù)本發(fā)明的保護(hù)方法實(shí)現(xiàn)通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理的情況下,還將-軟件的功能性的使用的度量的變量定義為易監(jiān)視的軟件執(zhí)行特性,-將與每個(gè)度量的變量有關(guān)的至少一個(gè)閾值定義為遵守的準(zhǔn)則,-以及定義允許更新至少一個(gè)度量的變量的實(shí)行模塊,●以及在根據(jù)本發(fā)明的保護(hù)方法還實(shí)現(xiàn)使用軟件執(zhí)行的度量的變量作為特性,通過(guò)檢測(cè)和強(qiáng)制的保護(hù)原理的第一優(yōu)選一不同實(shí)施例的情況下,還定義-用于至少一個(gè)度量的變量的幾個(gè)相關(guān)閾值,-以及相應(yīng)于每個(gè)所述閾值的不同強(qiáng)制模塊,●以及在根據(jù)本發(fā)明的保護(hù)方法還實(shí)現(xiàn)使用執(zhí)行軟件的度量的變量作為特性,通過(guò)檢測(cè)和強(qiáng)制的保護(hù)原理的第二優(yōu)選一不同實(shí)施例的情況下,還定義允許將至少一個(gè)另外的使用增加到由度量的變量監(jiān)視的至少一個(gè)軟件功能性上的補(bǔ)裝模塊,●以及在根據(jù)本發(fā)明的保護(hù)方法還實(shí)現(xiàn)使用軟件利用率的簡(jiǎn)要表作為特性,通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理的情況下,還將-軟件使用的簡(jiǎn)要表定義為易受監(jiān)視的軟件執(zhí)行特性,-軟件執(zhí)行的至少一個(gè)特征定義為將遵守的準(zhǔn)則,●以及在根據(jù)本發(fā)明的保護(hù)方法還實(shí)現(xiàn)將執(zhí)行鏈接接的監(jiān)視用作將遵守的執(zhí)行特征,通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理的情況下,還-定義其指令易在單元6中執(zhí)行的指令集,-定義用于所述指令集的指令命令集,所述指令命令易在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行,以及觸發(fā)在單元6中執(zhí)行指令,-將用于執(zhí)行指令的預(yù)期鏈接接定義為執(zhí)行特性,
-將允許檢測(cè)指令連接不相應(yīng)于預(yù)期一個(gè)的指令鏈接接的模塊定義為檢測(cè)模塊17,-以及將當(dāng)指令鏈接接不相應(yīng)于預(yù)期一個(gè)時(shí),允許通知數(shù)據(jù)處理系統(tǒng)3和/或修改受保護(hù)軟件2p的部分的功能性(functionality)的模塊定義為強(qiáng)制模塊18,●以及在根據(jù)本發(fā)明的保護(hù)方法將所監(jiān)視的執(zhí)行鏈接接用作將遵守的執(zhí)行特征,通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理的一優(yōu)選變型實(shí)施例時(shí),還-將其至少一些指令與寄存器一起工作并為返回結(jié)果,使用至少一個(gè)操作數(shù)的指令集定義為指令集,-對(duì)與寄存器一起工作的至少一些指令 定義指令的功能性的部分PF, 以及定義用于執(zhí)行指令并包括位字段的預(yù)期鏈接接的部分,所述位字段相應(yīng)于◇指令CII的標(biāo)識(shí)字段◇以及用于指令的每個(gè)操作數(shù)的* 標(biāo)志字段CDk,*以及操作數(shù)的預(yù)期識(shí)別字段CIPk,-對(duì)屬于利用模塊并由指令集使用的每個(gè)寄存器,定義生成的標(biāo)識(shí)字段CIGv,其中將返回其結(jié)果的最后一個(gè)指令的標(biāo)識(shí)自動(dòng)存儲(chǔ)在所述寄存器中,-將允許在執(zhí)行用于每個(gè)操作數(shù)的指令期間,當(dāng)標(biāo)志字段CDk使用它時(shí),檢查對(duì)應(yīng)于由所述操作數(shù)使用的寄存器的所生成的標(biāo)識(shí)字段CIGv的等式,以及所述操作數(shù)的起始的預(yù)期標(biāo)識(shí)字段CIPk的模塊定義為檢測(cè)模塊17,將如果所檢查的等式的至少一個(gè)為假,允許修改指令結(jié)果的模塊定義為強(qiáng)制模塊。
在在前保護(hù)子階段P1期間,定義級(jí)S11之后為稱為“構(gòu)造級(jí)S12”的級(jí)。在這一級(jí)S12期間,構(gòu)造傳送模塊12、13以及對(duì)應(yīng)于定義級(jí)S11的定義的利用模塊。
在這一構(gòu)造級(jí)S12期間,因此,執(zhí)行●構(gòu)造傳送模塊12、13,允許在使用階段U期間,在數(shù)據(jù)處理系統(tǒng)3和單元6之間傳送數(shù)據(jù),●以及使用階段U期間,構(gòu)造允許單元6實(shí)現(xiàn)恢復(fù)模塊的利用模塊,●以及當(dāng)還實(shí)現(xiàn)通過(guò)基本函數(shù)的保護(hù)原理時(shí),構(gòu)造允許單元6在使用階段U期間,執(zhí)行基本函數(shù)集的基本函數(shù)的利用模塊,●以及當(dāng)還實(shí)現(xiàn)通過(guò)檢測(cè)和強(qiáng)制變換的保護(hù)原理時(shí),構(gòu)造-允許單元6在使用階段U期間還實(shí)現(xiàn)檢測(cè)模塊17和強(qiáng)制模塊18的利用模塊,-以及可能地,允許單元6在使用階段U期間還實(shí)現(xiàn)實(shí)行模塊的利用模塊,
-以及可能地,允許單元6在使用階段U期間還實(shí)現(xiàn)補(bǔ)裝模塊的利用模塊,-以及可能地,允許單元6在使用階段U期間執(zhí)行指令集的指令的利用模塊,通常通過(guò)程序開發(fā)單元并考慮在定義級(jí)S11中插入的定義,執(zhí)行利用模塊的構(gòu)造。在圖110中的其他描述中描述了這種單元。
在在前保護(hù)子階段P1期間,構(gòu)造級(jí)S12之后為稱為“預(yù)先定制級(jí)S12”的級(jí)。在這一預(yù)先定制級(jí)S13期間,將至少部分傳送模塊13和/或利用模塊加載到至少一個(gè)空白單元60,以便獲得至少一個(gè)預(yù)先定制的單元66。當(dāng)注意到,只要傳送到預(yù)先定制單元66,在所述預(yù)先定制單元66外,不再直接存取利用模塊的一部分。通過(guò)適合的預(yù)先定制單元,能執(zhí)行利用模塊到空白單元66的轉(zhuǎn)移,其在圖120的剩余描述中被描述。就預(yù)先定制單元66來(lái)說(shuō),由芯片卡7及其閱讀器8構(gòu)成,預(yù)先定制僅涉及芯片卡7。
在在前保護(hù)子階段P1期間,在定義級(jí)S11之后,以及或者,在構(gòu)造級(jí)S12之后,能發(fā)生稱為“工具生成級(jí)S14”的級(jí)。在這一工具生成級(jí)S14期間,生成允許幫助生成受保護(hù)軟件或自動(dòng)化軟件保護(hù)的工具。這種工具允許●在有漏洞的軟件2v中幫助選擇或自動(dòng)選擇將保護(hù)的-易于在單元6中遠(yuǎn)程處理的變量,-易于修改的部分,-以及當(dāng)實(shí)現(xiàn)通過(guò)變量的保護(hù)原理時(shí),易于在單元6中可遠(yuǎn)程處理的變量,-以及當(dāng)還實(shí)現(xiàn)通過(guò)基本函數(shù)的保護(hù)原理時(shí),易于分成在單元6中遠(yuǎn)程處理的基本函數(shù),-以及當(dāng)還實(shí)現(xiàn)通過(guò)檢測(cè)和強(qiáng)制的保護(hù)原理時(shí),將監(jiān)視的執(zhí)行特性和,可能地,易于分成在單元6中可遠(yuǎn)程處理的指令的算法處理,-以及當(dāng)還實(shí)現(xiàn)通過(guò)條件分支的保護(hù)原理時(shí),其功能性易于在單元6中遠(yuǎn)程處理的條件分支,●以及可能地,為幫助生成受保護(hù)軟件或自動(dòng)化軟件保護(hù)。
獨(dú)立地或結(jié)合執(zhí)行這些不同的工具以及每個(gè)工具具有各種形式,諸如例如預(yù)處理器、匯編器、編譯器等等。
在在前保護(hù)子階段P1之后為與保護(hù)的有漏洞的軟件2v有關(guān)的下一保護(hù)子階段P2。這一下一保護(hù)子階段P2也由幾個(gè)級(jí)組成。相應(yīng)于通過(guò)重命名保護(hù)原理實(shí)現(xiàn)的第一級(jí)為“創(chuàng)建級(jí)S21”。在這一創(chuàng)建級(jí)S21期間,使用在定義級(jí)S11期間做出的選擇。在所述選擇以及可能地,在工具生成階段S14期間創(chuàng)建的工具的幫助下,通過(guò)下述方式創(chuàng)建受保護(hù)軟件2p●通過(guò)選擇至少一個(gè)算法處理,在執(zhí)行有漏洞的軟件2v期間,其使用至少一個(gè)操作數(shù)并能獲得至少一個(gè)結(jié)果,●通過(guò)選擇包含至少一個(gè)選定的算法處理的有漏洞的軟件2vs的源的至少一部分,●通過(guò)由有漏洞的軟件2vs的源產(chǎn)生受保護(hù)軟件2ps的源,通過(guò)修改有漏洞的軟件2vs的至少一個(gè)選定部分以便獲得受保護(hù)軟件2ps的源的至少一個(gè)修改部分,這一修改為-在執(zhí)行受保護(hù)軟件2p期間,在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行第一執(zhí)行部分2pes以及在下載信息后,從空白單元60獲得的單元6中執(zhí)行第二執(zhí)行部分2peu,-第二執(zhí)行部分2peu至少執(zhí)行至少一個(gè)選定算法處理的功能性,-分開至少一個(gè)選定算法處理以便在執(zhí)行受保護(hù)軟件2p期間,通過(guò)第二執(zhí)行部分2peu,使用相關(guān)函數(shù),執(zhí)行所述算法處理,-對(duì)至少一個(gè)選定的算法處理,將具有重命名次序的觸發(fā)命令集成為受保護(hù)軟件2ps的源以便在執(zhí)行受保護(hù)軟件2p期間,由第一執(zhí)行部分2pes執(zhí)行具有重命名次序的每個(gè)觸發(fā)命令,以及單元6中觸發(fā)通過(guò)恢復(fù)裝置執(zhí)行恢復(fù)次序并通過(guò)第二執(zhí)行部分2peu執(zhí)行相應(yīng)的相關(guān)函數(shù),-以及在允許執(zhí)行受保護(hù)軟件2p的順序集中,選擇具有重命名次序的觸發(fā)命令的順序,●以及通過(guò)產(chǎn)生-從受保護(hù)軟件2ps的源產(chǎn)生受保護(hù)軟件2p的第一對(duì)象部分2pos,所述第一對(duì)象部分2pos為在執(zhí)行受保護(hù)軟件2p期間,出現(xiàn)在數(shù)據(jù)處理系統(tǒng)3中執(zhí)行的并且至少其一部分考慮到根據(jù)所選定的順序,執(zhí)行具有重命名次序的觸發(fā)命令的第一執(zhí)行部分2pes,-以及包含利用模塊的受保護(hù)軟件2p的第二對(duì)象部分2pou,所述第二對(duì)象部分2pou為在加載到空白單元60后,以及在執(zhí)行受保護(hù)軟件2p期間,出現(xiàn)第二執(zhí)行部分2peu,通過(guò)第二執(zhí)行部分2peu,恢復(fù)次序并執(zhí)行相關(guān)函數(shù)。
為實(shí)現(xiàn)通過(guò)重命名的保護(hù)原理的變形,修改受保護(hù)軟件2p●通過(guò)在受保護(hù)軟件2ps的源中選擇至少具有重命名次序的至少一個(gè)觸發(fā)命令;●以及通過(guò)至少用具有另一重命名次序替換具有重命令次序的一個(gè)選定命令的重命名次序,修改受保護(hù)軟件2ps的源的至少一個(gè)選定部分,觸發(fā)相同族的相關(guān)函數(shù)。
在下一保護(hù)子階段P2期間,以及當(dāng)應(yīng)用除通過(guò)重命名的保護(hù)原理外的至少另一保護(hù)原理時(shí),發(fā)生“修改級(jí)S22”。在這一修改級(jí)S22期間,使用在定義級(jí)S11中插入的定義。使用這一定義以及可能地,在工具生成級(jí)S14期間構(gòu)造的工具,修改受保護(hù)軟件2p以便允許根據(jù)前述定義的配置,實(shí)現(xiàn)保護(hù)原理。
當(dāng)實(shí)現(xiàn)通過(guò)變量的保護(hù)原理時(shí),受保護(hù)軟件2p被修改為●通過(guò)選擇用在至少一個(gè)選定算法處理中的至少一個(gè)變量,在執(zhí)行受保護(hù)軟件2p期間,其部分地定義受保護(hù)軟件2p的狀態(tài),●通過(guò)修改受保護(hù)軟件2ps的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件2p期間,至少一個(gè)選定變量或至少一個(gè)選定變量的拷貝駐留在單元6中,●以及通過(guò)產(chǎn)生-受保護(hù)軟件2p的第一對(duì)象部分2pos,所述第一對(duì)象部分2pos為在執(zhí)行受保護(hù)軟件2p期間,第一執(zhí)行部分2pes的至少一部分還考慮到至少一個(gè)變量或至少一個(gè)變量的拷貝駐留在單元6,-以及受保護(hù)軟件2p的第二對(duì)象部分2pou,所述第二對(duì)象部分2pou為在加載到單元6后以及在執(zhí)行受保護(hù)軟件2p期間,出現(xiàn)第二執(zhí)行部分2peu,通過(guò)第二執(zhí)行部分,至少一個(gè)選定的變量以及選定變量的至少一個(gè)拷貝還駐留在單元6中。
當(dāng)實(shí)現(xiàn)通過(guò)基本函數(shù)的保護(hù)原理時(shí),修改保護(hù)軟件2p●通過(guò)修改受保護(hù)軟件2ps的源的至少一個(gè)選定部分,這一修改為將至少一個(gè)選定的算法處理分成僅使用基本函數(shù)的相關(guān)函數(shù),●以及通過(guò)產(chǎn)生-受保護(hù)軟件2p的第一對(duì)象部分2pos,所述第一對(duì)象部分2pos為在執(zhí)行受保護(hù)軟件2p期間,根據(jù)所選定的順序,第一執(zhí)行部分2pes的至少一個(gè)部分還執(zhí)行基本命令,以及還包含利用模塊的受保護(hù)軟件2p的第二對(duì)象部分2pou,所述第二對(duì)象部分2pou為在加載到單元6后,以及在執(zhí)行受保護(hù)軟件2p期間,出現(xiàn)第二執(zhí)行部分2peu,通過(guò)第二執(zhí)行部分,還執(zhí)行由第一執(zhí)行部分2pes觸發(fā)的基本函數(shù)。
當(dāng)實(shí)現(xiàn)通過(guò)檢測(cè)和強(qiáng)制的保護(hù)原理時(shí),修改受保護(hù)軟件2p●通過(guò)在易監(jiān)視的軟件執(zhí)行特征中選擇監(jiān)視的至少一個(gè)軟件執(zhí)行特征以監(jiān)視,●通過(guò)選擇至少一個(gè)選定的軟件執(zhí)行所遵守的特性的至少一個(gè)準(zhǔn)則,●通過(guò)在受保護(hù)軟件2ps的源中選擇基本函數(shù),將監(jiān)視用于該基本函數(shù)的至少一個(gè)選定的軟件執(zhí)行特性,●通過(guò)修改受保護(hù)軟件2ps的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件2p期間,通過(guò)第二執(zhí)行部分2peu監(jiān)視至少一個(gè)選定執(zhí)行特性,以及不遵守準(zhǔn)則的事實(shí)導(dǎo)致數(shù)據(jù)處理系統(tǒng)3被告知/或修改受保護(hù)軟件2p的執(zhí)行,●以及通過(guò)產(chǎn)生包含利用模塊的受保護(hù)軟件2p的第二對(duì)象部分2pou,還實(shí)現(xiàn)檢測(cè)模塊17和強(qiáng)制模塊18,所述第二對(duì)象部分2pou為在加載到單元6后,以及在執(zhí)行受保護(hù)軟件2p期間,監(jiān)視至少一個(gè)軟件執(zhí)行特征,以及不遵守準(zhǔn)則的事實(shí)導(dǎo)致數(shù)據(jù)處理系統(tǒng)3被告知和/或修改受保護(hù)軟件2p的執(zhí)行。
為將軟件執(zhí)行的度量的變量用作為特性,通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理,修改受保護(hù)軟件2p●通過(guò)將軟件的至少一個(gè)功能性的使用的度量的至少一個(gè)變更選擇為監(jiān)視的軟件執(zhí)行特性,●通過(guò)選擇
-使用度量的變量,易于監(jiān)視其使用的受保護(hù)軟件2p的至少一個(gè)功能性,-用來(lái)量化所述功能性的使用的度量的至少一個(gè)變量,-與對(duì)應(yīng)于所述功能性的使用的限制的所選定的度量的變量有關(guān)的至少一個(gè)閾值,-以及根據(jù)所述功能性的使用,所選定的度量的變量的更新的至少一種方法,●以及通過(guò)修改受保護(hù)軟件2ps的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件2p期間,根據(jù)所述功能性的使用,通過(guò)第二執(zhí)行部分2peu實(shí)現(xiàn)度量的變量,以及考慮至少一個(gè)閾值越過(guò)。
為使用度量的變量作為特性,通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理的第一優(yōu)選一不同實(shí)施例,修改受保護(hù)軟件●通過(guò)在受保護(hù)軟件2ps的源中選擇必須與相應(yīng)于功能性的使用的不同限制的幾個(gè)閾值有關(guān)的至少一個(gè)選定的度量的變量,●通過(guò)選擇與所選定的度量的變量有關(guān)的至少兩個(gè)閾值,●以及通過(guò)修改受保護(hù)軟件的源的至少一個(gè)選定部分,這一修改是在執(zhí)行受保護(hù)軟件2p期間,通過(guò)第二執(zhí)行部分2peu,不同地考慮不同閾值的越過(guò)。
為將度量的變量用作特性,通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理的第二優(yōu)選一不同實(shí)施例,修改受保護(hù)軟件2p
●通過(guò)在受保護(hù)軟件2ps的源中選擇允許限制功能性的使用以及必須能通過(guò)至少一個(gè)另外的使用被信任的至少一個(gè)選定的度量的變量,●以及通過(guò)修改至少一個(gè)選定的部分,這一修改為在稱為補(bǔ)裝的階段,能信任相應(yīng)于所選定的度量的變量的至少一個(gè)功能性的至少一個(gè)另外的使用。
為將軟件使用的簡(jiǎn)要表用作特性,通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理,修改受保護(hù)軟件●通過(guò)將軟件使用的至少一個(gè)簡(jiǎn)要表選擇為軟件執(zhí)行特性以監(jiān)視,●通過(guò)選擇至少一個(gè)選定的使用的簡(jiǎn)要表必須遵守的至少一個(gè)執(zhí)行特征,●以及通過(guò)修改受保護(hù)軟件2ps的源的至少一個(gè)選定的部分,這一修改為在執(zhí)行受保護(hù)軟件2p期間,第二執(zhí)行部分2peu遵守所有選定的執(zhí)行特性。
為將執(zhí)行鏈接的監(jiān)視用作遵守的執(zhí)行特性,通過(guò)檢測(cè)和強(qiáng)制實(shí)現(xiàn)保護(hù)原理,修改受保護(hù)軟件●通過(guò)修改受保護(hù)軟件2ps的源的至少一個(gè)選定部分-通過(guò)將基本函數(shù)轉(zhuǎn)換成指令,-通過(guò)指定在單元6中執(zhí)行它們期間,至少一些指令必須遵守的鏈接,-以及通過(guò)將基本命令轉(zhuǎn)換成相應(yīng)于所使用的指令的指令命令。
當(dāng)實(shí)現(xiàn)通過(guò)條件分支的保護(hù)原理時(shí),修改受保護(hù)軟件2p●通過(guò)在受保護(hù)軟件2ps的源中選擇在至少一個(gè)選定的算法處理中執(zhí)行的至少一個(gè)條件分支,●通過(guò)修改受保護(hù)軟件2ps的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件2p期間,在單元6中,通過(guò)第二執(zhí)行部分2peu,執(zhí)行至少一個(gè)選定的條件分支的功能性,●以及通過(guò)產(chǎn)生-受保護(hù)軟件2p的第一對(duì)象部分2pos,所述第一對(duì)象部分pos為在執(zhí)行受保護(hù)軟件2p期間,在單元6中執(zhí)行至少一個(gè)選定條件分支的功能性,-以及受保護(hù)軟件2p的第二對(duì)象部分2pou,所述第二對(duì)象部分2pou為在加載到單元6后,以及在執(zhí)行受保護(hù)軟件2p期間,出現(xiàn)第二執(zhí)行部分2peu,通過(guò)該第二執(zhí)行部分2peu,執(zhí)行至少一個(gè)選定條件分支的功能性。
為通過(guò)條件分支實(shí)現(xiàn)保護(hù)原理的優(yōu)選實(shí)施例,修改受保護(hù)軟件2p●通過(guò)在受保護(hù)軟件2ps的源中選擇至少一個(gè)系列的所選定的條件分支,●通過(guò)修改受保護(hù)軟件2ps的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件2p期間,在單元6中,通過(guò)第二執(zhí)行部分2peu,執(zhí)行條件分支的至少一個(gè)選定系列的整體功能性,●以及通過(guò)產(chǎn)生-受保護(hù)軟件2p的第一對(duì)象部分2pos,所述第一對(duì)象部分2pos為在執(zhí)行受保護(hù)軟件2ps期間,在單元6中執(zhí)行條件分支的至少一個(gè)選定序列的功能性,-以及受保護(hù)軟件2p的第二對(duì)象部分2pou,所述第二對(duì)象部分2pou為在加載到單元6后,以及在執(zhí)行受保護(hù)軟件2p期間,出現(xiàn)第二執(zhí)行部分2peu,通過(guò)第二執(zhí)行部分2peu,執(zhí)行至少一個(gè)選定系列的條件分支的全部功能性。
當(dāng)然,在開發(fā)新軟件期間,能直接應(yīng)用根據(jù)本發(fā)明的保護(hù)原理,而不需要先前執(zhí)行間接的保護(hù)軟件。用這種方式,能相伴執(zhí)行創(chuàng)建級(jí)S21和修改級(jí)S22以便直接獲得受保護(hù)軟件2p。
在下一保護(hù)子階段P2期間,在受保護(hù)軟件2p的創(chuàng)建級(jí)S21后,以及可能地,在修改級(jí)S22后,出現(xiàn)稱為“定制級(jí)S23”的級(jí)。在這一定制級(jí)S23期間,為獲得至少一個(gè)單元6,將可能包含利用模塊的第二對(duì)象部分2pou加載到至少一個(gè)空白單元60,或?yàn)楂@得至少一個(gè)單元6,將可能包含利用模塊的第二對(duì)象部分2pou的一部分加載到至少一個(gè)預(yù)先定制的單元66上。加載這一定制信息允許使至少一個(gè)單元6操作。應(yīng)注意到,所述信息部分,只要轉(zhuǎn)移到單元6,在所述單元6外不能直接存取。通過(guò)在圖150中的其他描述中描述的適合的定制單元,能執(zhí)行將定制信息傳送到空白單元60或預(yù)先定制的單元66。在單元6的情況下,由芯片卡及其閱讀器構(gòu)成,定制僅涉及芯片卡7。
為實(shí)現(xiàn)保護(hù)階段P,參考圖110、120、130、140和150更精確地描述各種技術(shù)模塊。
圖110示例說(shuō)明系統(tǒng)25的實(shí)施例,系統(tǒng)25允許實(shí)現(xiàn)考慮在定義級(jí)S11期間插入的定義的構(gòu)造級(jí)S12以及在構(gòu)造級(jí)期間,構(gòu)造傳送模塊12、13以及或者,用于單元6的利用模塊。這種系統(tǒng)25包括通常具有的計(jì)算機(jī)形式的程序開發(fā)單元或工作站,包括系統(tǒng)單元、屏幕、外圍設(shè)備諸如鍵盤-鼠標(biāo)以及除此之外,包括下述程序文件編輯器、匯編器、預(yù)處理器、編譯器、解釋器、調(diào)試器以及鏈接路編輯器。
圖120示例說(shuō)明為獲得預(yù)先定制的單元66,允許至少部分將傳送模塊13和/或利用模塊加載到至少一個(gè)空白單元60的預(yù)先定制單元30的實(shí)施例。所述預(yù)先定制單元30包括允許電子地預(yù)前定制的讀寫模塊31、空白單元60以便獲得已經(jīng)加載傳送模塊13和/或利用模塊的預(yù)先定制的單元66。預(yù)先定制單元30還能包括空白單元60的物理定制模塊32,空白單元60能具有例如打印機(jī)的形式。在用芯片卡7及其閱讀器8構(gòu)成單元6的情況下,預(yù)先定制通常僅涉及芯片卡7。
圖130示例說(shuō)明允許執(zhí)行生成工具的系統(tǒng)35的實(shí)施例,這些工具允許幫助生成受保護(hù)軟件或自動(dòng)化軟件保護(hù)。這種系統(tǒng)35包括通常具有計(jì)算機(jī)形式的程序開發(fā)單元或工程站,包括系統(tǒng)單元、屏幕、外圍設(shè)備諸如鍵盤-鼠標(biāo)以及除此之外,還包括下述程序文件編輯器、匯編器、預(yù)處理器、編譯器、解釋器、調(diào)試器以及鏈接路編輯器。
圖140示例說(shuō)明允許直接創(chuàng)建受保護(hù)軟件2p或?yàn)楂@得受保護(hù)軟件2p修改有漏洞的軟件2v的系統(tǒng)40的實(shí)施例。這種系統(tǒng)40包括通常具有計(jì)算機(jī)形式的程序開發(fā)單元或工作站,包括系統(tǒng)單元、屏幕、外圍設(shè)備諸如鍵盤鼠標(biāo)和除此之外,包括下述程序文件編輯器、匯編器、預(yù)處理器、編譯器、解釋器、調(diào)試器以及鏈接路編輯器,以及允許幫助生成受保護(hù)軟件或自動(dòng)化保護(hù)軟件的工具。
圖150示例說(shuō)明為獲得至少一個(gè)單元6,允許將第二對(duì)象部分2pou加載到至少一個(gè)空白單元60,或?yàn)楂@得至少一個(gè)單元6,將第二對(duì)象部分2pou的一部分加載到至少一個(gè)預(yù)先定制的單元66上的定制單元45的實(shí)施例。這種定制單元45包括允許電子地定制的讀寫模塊46、至少一個(gè)空白單元60或至少一個(gè)預(yù)先定制的單元66,以便獲得至少一個(gè)單元6。在完成這一定制時(shí),單元6包括執(zhí)行受保護(hù)軟件2p所需的信息。定制單元45還能包括用于至少一個(gè)單元的物理定制模塊47,至少一個(gè)單元6能具有例如打印機(jī)的形式。在單元6由芯片卡7及其閱讀器8構(gòu)成的情況下,定制通常僅涉及芯片卡7。
通過(guò)下述改進(jìn)能實(shí)現(xiàn)根據(jù)本發(fā)明的保護(hù)方法●將其計(jì)劃成共同使用幾個(gè)處理和存儲(chǔ)單元,在這幾個(gè)處理和存儲(chǔ)單元之間,分成受保護(hù)軟件29的第二對(duì)象部分2pou以便在缺少所述處理和存儲(chǔ)單元的至少一個(gè)時(shí),它們的共同使用允許執(zhí)行受保護(hù)軟件29,防止使用受保護(hù)軟件2p。
●用相同的方式,在預(yù)先定制級(jí)S13后,以及在定制級(jí)S23期間,將預(yù)先定制的單元66變換成單元6所需的第二對(duì)象部分2pou的部分能包含在由定制單元45使用的處理和存儲(chǔ)單元中以便限制存取第二對(duì)象部分2pou的所述部分。當(dāng)然,能在幾個(gè)處理和存儲(chǔ)單元間劃分第二對(duì)象部分2pou的所述部分以便僅在共同使用所述處理和存儲(chǔ)單元期間,能存取第二對(duì)象部分2pou的所述部分。
權(quán)利要求
1.保護(hù)方法,使用至少包括記憶模塊(15)和處理模塊(16)的至少一個(gè)空白單元(60),防止未授權(quán)使用有漏洞的軟件(2v),所述有漏洞的軟件(2v)在數(shù)據(jù)處理系統(tǒng)(3)上運(yùn)行,所述保護(hù)方法包括→在保護(hù)階段期間(P)●定義-相關(guān)函數(shù)集,易于在單元(6)中執(zhí)行其相關(guān)函數(shù),-用于所述相關(guān)函數(shù)集的觸發(fā)命令集,所述觸發(fā)命令易于在數(shù)據(jù)處理系統(tǒng)(3)中執(zhí)行并且在單元(6)中觸發(fā)執(zhí)行相關(guān)函數(shù),-對(duì)每個(gè)觸發(fā)命令,一次序至少部分相應(yīng)于從數(shù)據(jù)處理系統(tǒng)(3)傳送到單元(6)的信息,以便觸發(fā)在單元(6)執(zhí)行相應(yīng)的相關(guān)函數(shù),所述次序具有觸發(fā)命令的至少一個(gè)變?cè)男问剑?允許重命名次序的以便獲得具有重命名次序的觸發(fā)命令的次序的重命名方法,-以及設(shè)計(jì)成在使用階段(U)期間U在單元(6)中實(shí)現(xiàn)的恢復(fù)模塊(20)并允許從重命名的次序,恢復(fù)執(zhí)行的相關(guān)函數(shù),●構(gòu)造允許將空白單元(60)變換成能實(shí)現(xiàn)恢復(fù)模塊(20)的單元(6)的利用模塊,●創(chuàng)建受保護(hù)軟件(2p)-通過(guò)選擇至少一個(gè)算法處理,在執(zhí)行有漏洞的軟件(2v)期間,其使用至少一個(gè)操作數(shù)并使得獲得至少一個(gè)結(jié)果,-通過(guò)選擇包含至少一個(gè)選定算法處理的有漏洞的軟件(2vs)的源的至少一個(gè)部分,-通過(guò)從有漏洞的軟件(2vs)的源產(chǎn)生受保護(hù)軟件(2ps)的源,通過(guò)修改有漏洞的軟件(2vs)的源的至少一個(gè)選定部分以獲得受保護(hù)軟件(2ps)的源的至少一個(gè)修改部分,這一修改為 在執(zhí)行受保護(hù)軟件(2p)期間,在數(shù)據(jù)處理系統(tǒng)(3)中執(zhí)行第一執(zhí)行部分(2pes),以及在下載信息后,從空白單元(60)獲得的單元(6)中執(zhí)行第二執(zhí)行部分(2peu), 第二執(zhí)行部分(2peu)至少執(zhí)行至少一個(gè)選定算法處理的功能性; 分開至少一個(gè)選定的算法處理以便在執(zhí)行受保護(hù)軟件(2p)期間,通過(guò)第二執(zhí)行部分(2peu),使用相關(guān)函數(shù),執(zhí)行所述算法處理, 對(duì)至少一個(gè)選定的算法處理,將具有重命名次序的觸發(fā)命令集合成受保護(hù)軟件(2ps)的源以便在執(zhí)行受保護(hù)軟件(2p)期間,通過(guò)第一執(zhí)行部分(2pes)執(zhí)行具有重命名次序的每個(gè)觸發(fā)命令并在單元(6)中觸發(fā)通過(guò)恢復(fù)模塊(20)恢復(fù)次序和通過(guò)第二執(zhí)行部分(2peu)執(zhí)行相應(yīng)的相關(guān)函數(shù), 以及在允許執(zhí)行受保護(hù)軟件(2p)的順序集中選擇具有重命名次序的觸發(fā)命令的順序,-以及通過(guò)產(chǎn)生 從受保護(hù)軟件(2ps)的源產(chǎn)生受保護(hù)軟件(2p)的第一對(duì)象部分(2pos),所述第一對(duì)象部分(2pos)為在執(zhí)行受保護(hù)軟件(2p)期間,出現(xiàn)在數(shù)據(jù)處理系統(tǒng)(3)中執(zhí)行并且其至少一部分考慮到根據(jù)所選定的順序,執(zhí)行具有重命名次序的觸發(fā)命令的第一執(zhí)行部分(2pes), 以及包含利用模塊的受保護(hù)軟件(2p)的第二對(duì)象部分(2pou),所述第二對(duì)象部分(2pou)為在加載到空白單元(60)后,以及在執(zhí)行受保護(hù)軟件(2p)期間,出現(xiàn)第二執(zhí)行部分(2peu),通過(guò)該第二執(zhí)行部分(2peu),恢復(fù)這些次序以及執(zhí)行相關(guān)函數(shù),●以及為獲得單元(6),將第二執(zhí)行部分(2pou)加載到空白單元(60)上,→以及在使用階段(U)期間,在使用階段(U)期間執(zhí)行受保護(hù)軟件(2p)●在存在單元(6)時(shí),每次包含在第一執(zhí)行部分(2pes)的一部分中的具有重命名次序的觸發(fā)命令利用它時(shí),在單元(6)中恢復(fù)相應(yīng)的相關(guān)函數(shù)的特性并執(zhí)行它,以便正確地執(zhí)行所述部分,因此,受保護(hù)軟件(2p)完全起作用,●以及在缺少單元(6)時(shí),盡管第一執(zhí)行部分(2pes)的一部分請(qǐng)求觸發(fā)在單元(6)中執(zhí)行相關(guān)函數(shù),仍然不能正確地履行所述請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因此,受保護(hù)軟件(2p)不完全起作用。
2.如權(quán)利要求1所述的方法,包括→在保護(hù)階段(P)期間,●為至少一個(gè)相關(guān)函數(shù)定義算法上等效,但由其重命名次序不同的觸發(fā)命令觸發(fā)的一族相關(guān)函數(shù),●以及修改受保護(hù)軟件(2p)-通過(guò)在受保護(hù)軟件(2ps)的源中選擇具有重命名次序的至少一個(gè)觸發(fā)命令,-以及通過(guò)至少用另一重命名次序替換具有重命名次序的一個(gè)選定觸發(fā)命令的重命名次序,修改受保護(hù)軟件(2ps)的源的至少一個(gè)選定部分,觸發(fā)相同族的相關(guān)函數(shù)。
3.如權(quán)利要求1或2所述的方法,包括→在保護(hù)階段(P)期間●定義-將加密次序的加密方法定義為次序的重命名方法,-以及將實(shí)現(xiàn)解密重命名次序,從而恢復(fù)相關(guān)函數(shù)的身份以便在單元(6)中執(zhí)行的解密方法的模塊定義為恢復(fù)模塊(20)。
4.如權(quán)利要求1至3的一個(gè)所述的方法,包括→在保護(hù)階段(P)期間●修改受保護(hù)軟件(2p)-通過(guò)選擇用在至少一個(gè)選定算法處理中的至少一個(gè)變量,在執(zhí)行受保護(hù)軟件(2p)期間,其部分地定義受保護(hù)軟件(2p)的狀態(tài),-通過(guò)修改受保護(hù)軟件(2ps)的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件(2p)期間,至少一個(gè)選定變量或至少一個(gè)選定變量的拷貝駐留在單元(6)中,-以及通過(guò)產(chǎn)生 受保護(hù)軟件(2p)的第一對(duì)象部分(2pos),所述第一對(duì)象部分(2pos)為在執(zhí)行受保護(hù)軟件(2p)期間,第一執(zhí)行部分(2pes)的至少一部分還考慮到至少一個(gè)變量或至少一個(gè)變量的拷貝駐留在單元(6), 以及受保護(hù)軟件(2p)的第二對(duì)象部分(2pou),所述第二對(duì)象部分(2pou)為在加載到單元(6)后以及在執(zhí)行受保護(hù)軟件(2p)期間,出現(xiàn)第二執(zhí)行部分(2peu),通過(guò)第二執(zhí)行部分,至少一個(gè)選定的變量以及選定變量的至少一個(gè)拷貝還駐留在單元(6)中;→以及在使用階段(U)期間●在存在單元(6)時(shí),以及每次包含在第一執(zhí)行部分(2pes)的一部分利用它時(shí),使用駐留在單元(6)中的變量或變量的拷貝,以便正確地執(zhí)行所述部分,因此,受保護(hù)軟件(2p)完全起作用,●以及在缺少單元(6)時(shí),盡管第一執(zhí)行部分(2pes)的一部分請(qǐng)求使用駐留在單元(6)中變量或變量拷貝,仍不能正確履行所述請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因此,受保護(hù)軟件(2p)不完全起作用。
5.如權(quán)利要求1至3的一個(gè)所述的方法,包括→在保護(hù)階段(P)期間●定義-基本函數(shù)集,相關(guān)函數(shù)集的子集,-以及用于所述基本函數(shù)集的基本命令集,所述基本命令集為觸發(fā)命令集的子集,●構(gòu)造允許單元(6)執(zhí)行所述集的基本函數(shù)的利用模塊,通過(guò)在數(shù)據(jù)處理系統(tǒng)(3)中執(zhí)行已經(jīng)重命名其次序的基本命令,觸發(fā)執(zhí)行所述基本函數(shù),●以及修改受保護(hù)軟件(2p)-通過(guò)修改受保護(hù)軟件(2ps)的源的至少一個(gè)選定部分,這一修改為將至少一個(gè)選定的算法處理分成相關(guān)函數(shù)僅使用基本函數(shù),-以及通過(guò)產(chǎn)生 受保護(hù)軟件(2p)的第一對(duì)象部分(2pos),所述第一對(duì)象部分(2pos)為在執(zhí)行受保護(hù)軟件(2p)期間,根據(jù)所選定的順序,第一執(zhí)行部分(2pes)的至少一個(gè)部分還執(zhí)行基本命令, 以及包含利用模塊的受保護(hù)軟件(2p)的第二對(duì)象部分(2pou),所述第二對(duì)象部分(2pou)為在加載到單元(6)后,以及在執(zhí)行受保護(hù)軟件(2p)期間,出現(xiàn)第二執(zhí)行部分(2peu),通過(guò)第二執(zhí)行部分(2peu),還執(zhí)行由第一執(zhí)行部分(2pes)觸發(fā)的基本函數(shù),→以及在使用階段(U)期間●在存在單元(6)時(shí),以及每次包含在第一執(zhí)行部分(2pes)的一部分中的基本命令利用它時(shí),在單元(6)中執(zhí)行相應(yīng)的基本函數(shù),以便正確地執(zhí)行所述部分,因此,受保護(hù)軟件(2p)完全起作用,●以及在缺少單元(6)時(shí),盡管第一執(zhí)行部分(2pes)的一部分請(qǐng)求觸發(fā)在單元(6)中執(zhí)行基本函數(shù),仍不能正確地履行所述請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因此,受保護(hù)軟件(2p)不完全起作用。
6.如權(quán)利要求5所述的方法,包括→在保護(hù)階段(P)期間●定義-至少一個(gè)軟件執(zhí)行特性,在單元(6)中至少部分易于被監(jiān)視,-至少一個(gè)軟件執(zhí)行特征遵守的至少一個(gè)準(zhǔn)則,-在單元(6)中實(shí)現(xiàn)的檢測(cè)模塊(17)并允許檢測(cè)至少一個(gè)軟件執(zhí)行特性未遵守至少一個(gè)相關(guān)準(zhǔn)則,-以及在單元(6)中實(shí)現(xiàn)的強(qiáng)制模塊,并允許當(dāng)未遵守至少一個(gè)準(zhǔn)則時(shí),通知數(shù)據(jù)處理系統(tǒng)(3)和/或修改軟件婦的執(zhí)行,●構(gòu)造允許單元(6)還實(shí)現(xiàn)檢測(cè)模塊(17)和強(qiáng)制模塊(18)的利用模塊,●以及修改受保護(hù)軟件(2p)-通過(guò)在易于監(jiān)視的軟件執(zhí)行特性中選擇監(jiān)視的至少一個(gè)軟件執(zhí)行特性,-通過(guò)選擇至少一個(gè)選定的軟件執(zhí)行特性遵守的至少一個(gè)準(zhǔn)則,-通過(guò)在受保護(hù)軟件(2ps)的源中選擇將監(jiān)視至少一個(gè)選定軟件執(zhí)行特性的基本函數(shù),-通過(guò)修改受保護(hù)軟件(2ps)的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件(2p)期間,通過(guò)第二執(zhí)行部分(2peu)監(jiān)視至少一個(gè)選定執(zhí)行特性,以及不遵守準(zhǔn)則的事實(shí)導(dǎo)致告知數(shù)據(jù)處理系統(tǒng)(3)和/或修改受保護(hù)軟件(2p)的執(zhí)行,-以及通過(guò)產(chǎn)生包含利用模塊的受保護(hù)軟件(2p)的第二對(duì)象部分(2pou),還實(shí)現(xiàn)檢測(cè)模塊(17)和強(qiáng)制模塊(18),所述第二對(duì)象部分(2pou)為在加載到單元(6)后,以及在執(zhí)行受保護(hù)軟件(2p)期間,監(jiān)視至少一個(gè)軟件執(zhí)行特性以及不遵守準(zhǔn)則的事實(shí)導(dǎo)致告知數(shù)據(jù)處理系統(tǒng)(3)和/或修改受保護(hù)軟件(2p)的執(zhí)行,→以及在使用階段(U)期間●在存在單元(6)時(shí)-只要遵守相應(yīng)于受保護(hù)軟件(2p)的所有修改部分的所有監(jiān)視的執(zhí)行特性的所有準(zhǔn)則,允許受保護(hù)軟件(2p)的所述部分標(biāo)稱地運(yùn)行,因此,允許受保護(hù)軟件(2p)標(biāo)稱地運(yùn)行,-以及如果未遵守相應(yīng)于監(jiān)視的受保護(hù)軟件(2p)的一部分的執(zhí)行特性的至少一個(gè)準(zhǔn)則,將其告知數(shù)據(jù)處理系統(tǒng)(3)和/或修改受保護(hù)軟件(2p)的這部分的運(yùn)行,以致修改受保護(hù)軟件(2p)的運(yùn)行。
7.如權(quán)利要求6所述的方法,為限制受保護(hù)軟件(2p)的使用,包括→在保護(hù)階段(P)期間●定義-將軟件的功能性的使用的度量的變量定義為易于監(jiān)視的軟件執(zhí)行特性,-將與每個(gè)度量的變量有關(guān)的至少一個(gè)閾值定義為遵守的準(zhǔn)則,-以及允許更新至少一個(gè)度量的變量的實(shí)行模塊,●構(gòu)造允許單元(6)也實(shí)現(xiàn)實(shí)行模塊的利用模塊,●以及修改受保護(hù)軟件(2p)-通過(guò)將軟件的至少一個(gè)功能性的使用的度量的至少一個(gè)變量選擇為監(jiān)視的軟件執(zhí)行特性,-通過(guò)選擇 使用度量的變量易于監(jiān)視其使用的受保護(hù)軟件(2p)的至少一個(gè)功能性, 用來(lái)量化所述功能性的使用的度量的至少一個(gè)變量, 與相應(yīng)于所述功能性的使用的限制的一選定的度量的變量有關(guān)的至少一個(gè)閾值, 以及根據(jù)所述功能性的使用,更新所選定的度量的變量的至少一種方法,-通過(guò)修改受保護(hù)軟件(2ps)的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件(2p)期間,根據(jù)所述功能性的使用,通過(guò)第二執(zhí)行部分(2peu),實(shí)現(xiàn)度量的變量,以及考慮至少一個(gè)閾值越過(guò),→以及在使用階段(U)期間,在存在單元(6)時(shí),以及在檢測(cè)到相應(yīng)于至少一個(gè)使用限制的至少一個(gè)閾值越過(guò)的情況下,將其告知數(shù)據(jù)處理系統(tǒng)(3)和/或修改受保護(hù)軟件(2p)的部分運(yùn)行,以致修改受保護(hù)軟件(2p)的運(yùn)行。
8.如權(quán)利要求7所述的方法,包括→在保護(hù)階段(P)期間●定義-用于至少一個(gè)度量的變量的幾個(gè)相關(guān)閾值,-以及相應(yīng)于所述閾值的每一個(gè)的不同的強(qiáng)制模塊,●以及修改受保護(hù)軟件(2p)-通過(guò)在受保護(hù)軟件(2ps)的源中選擇必須與相應(yīng)于功能性使用的不同限制的幾個(gè)閾值有關(guān)的至少一個(gè)選定的度量的變量,-通過(guò)選擇與所選定的度量的變量有關(guān)的至少兩個(gè)閾值,-以及通過(guò)修改受保護(hù)軟件(2ps)的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件(2p)期間,通過(guò)第二執(zhí)行部分(2peu),不同地考慮不同閾值的越過(guò),→以及在使用階段(U)期間●在存在單元(6)的情況下-在檢測(cè)到第一閾值的越過(guò)的情況下,命令受保護(hù)軟件(2p)不再使用相應(yīng)的功能性,-以及在檢測(cè)到第二閾值的越過(guò)的情況下,使相應(yīng)的功能性和/或受保護(hù)軟件(2p)的至少一部分無(wú)效。
9.如權(quán)利要求7或8所述的方法,包括→在保護(hù)階段(P)●定義允許通過(guò)至少一個(gè)另外的使用,信任由一個(gè)度量的變量監(jiān)視的至少一個(gè)軟件功能性的補(bǔ)裝模塊,●構(gòu)造還允許單元(6)實(shí)現(xiàn)補(bǔ)裝模塊的利用模塊,●以及修改受保護(hù)軟件(2p)-通過(guò)在受保護(hù)軟件(2ps)的源中選擇允許限制功能性的使用并且必須能通過(guò)至少一個(gè)另外的使用而被信任的至少一個(gè)選定的度量的變量,-以及通過(guò)修改至少一個(gè)選定部分,這一修改為在稱為補(bǔ)充的階段期間,能信任相應(yīng)于所選定的度量的變量的至少一個(gè)功能性的至少一個(gè)另外的使用,→以及在補(bǔ)裝期間●重新實(shí)現(xiàn)至少一個(gè)選定的度量的變量和/或至少一個(gè)相關(guān)閾值,以便允許功能性的至少一個(gè)另外的使用。
10.如權(quán)利要求6所述的方法,包括→在保護(hù)階段(P)期間●定義-將軟件使用的簡(jiǎn)要表定義為易于監(jiān)視的軟件執(zhí)行特性,-以及將至少一個(gè)軟件執(zhí)行特征定義為遵守的準(zhǔn)則,●以及修改受保護(hù)軟件(2p)-通過(guò)將至少一個(gè)軟件使用的簡(jiǎn)要表選擇為監(jiān)視的軟件執(zhí)行特性,-通過(guò)選擇至少一個(gè)選定的使用簡(jiǎn)要表必須遵守的至少一個(gè)執(zhí)行特征,-以及通過(guò)修改受保護(hù)軟件(2ps)的源的至少一個(gè)選定部分,這一修改是在執(zhí)行受保護(hù)軟件(2p)期間,第二執(zhí)行部分(2peu)遵守所有選定的執(zhí)行特征,→以及在使用階段(U)期間,在存在單元(6)時(shí),以及在檢測(cè)到未遵守至少一個(gè)執(zhí)行特征的情況下,將其告知數(shù)據(jù)處理系統(tǒng)(3)和/或修改受保護(hù)軟件(2p)的部分的運(yùn)行,以便修改受保護(hù)軟件(2p)的運(yùn)行。
11.如權(quán)利要求10所述的方法,包括→在保護(hù)階段(P)期間●定義-在單元(6)中易于執(zhí)行其指令的指令集,-用于所述指令集的指令命令集,易于在數(shù)據(jù)處理系統(tǒng)(3)中執(zhí)行所述指令命令并在單元(6)中觸發(fā)執(zhí)行指令,-將指令鏈接接定義為使用簡(jiǎn)要表,-將用于執(zhí)行指令的預(yù)期鏈接接定義為執(zhí)行特征,-將允許檢測(cè)指令鏈接接不相應(yīng)于預(yù)期的指令鏈接接的模塊定義為檢測(cè)模塊(17),-以及將允許當(dāng)指令鏈接接不相應(yīng)于預(yù)期的指令鏈接接時(shí),通知數(shù)據(jù)處理系統(tǒng)(3)和/或改變受保護(hù)軟件(2p)的部分的功能的模塊定義為強(qiáng)制模塊(18),●構(gòu)造還允許單元(6)執(zhí)行指令集的指令的利用模塊,通過(guò)在數(shù)據(jù)處理系統(tǒng)(3)中執(zhí)行指令命令來(lái)觸發(fā)執(zhí)行所述指令,●以及修改受保護(hù)軟件(2p)-通過(guò)修改受保護(hù)軟件(2ps)的源的至少一個(gè)選定部分 通過(guò)將基本函數(shù)變換成指令, 通過(guò)指定在單元(6)中執(zhí)行它們期間,至少一些指令必須遵守的鏈接接, 以及通過(guò)將基本命令變換成相應(yīng)于所使用的指令的指令命令,→以及在使用階段(U)期間,在存在單元(6)時(shí),在檢測(cè)到單元(6)中執(zhí)行的指令鏈接接不相應(yīng)于預(yù)期的指令鏈接接的情況下,將其告知數(shù)據(jù)處理系統(tǒng)(3)和/或修改受保護(hù)軟件(2p)的部分的運(yùn)行,以便修改受保護(hù)軟件(2p)的運(yùn)行。
12.如權(quán)利要求11所述的方法,包括→在保護(hù)階段(P)●定義-為返回結(jié)果,將其至少一些指令與寄存器一起工作并使用至少一個(gè)操作數(shù)的指令集定義為指令集,-對(duì)與寄存器一起工作的至少一些指令 定義指令的功能性的一部分(PF), 以及定義用于執(zhí)行指令的預(yù)期鏈接接并包括相應(yīng)于下述的位字段的一部分 指令(CII)的標(biāo)識(shí)字段, 以及用于指令的每個(gè)操作數(shù)*標(biāo)志字段(CDk),*以及操作數(shù)的預(yù)期標(biāo)識(shí)字段(CIPk),-對(duì)屬于利用模塊并由指令集使用的每個(gè)寄存器,自動(dòng)將已經(jīng)返回其結(jié)果的最后一個(gè)指令的標(biāo)識(shí)存儲(chǔ)在所述寄存器中的所生成的標(biāo)識(shí)字段(CIGv),-以及將允許在執(zhí)行指令期間,對(duì)每個(gè)操作數(shù),當(dāng)標(biāo)志字段(CDk)利用它時(shí),檢查相應(yīng)于由所述操作數(shù)使用的寄存器的所生成的標(biāo)識(shí)字段(CIGv)以及所述操作數(shù)的原始的預(yù)期標(biāo)識(shí)字段(CIPk)的等式的模塊定義為檢測(cè)模塊(17),-以及如果所檢查的等式的至少一個(gè)為假,將允許修改指令的結(jié)果的模塊定義為強(qiáng)制模塊(18)。
13.如權(quán)利要求1至12的一個(gè)所述的方法,包括→在保護(hù)階段(P)期間●修改受保護(hù)軟件(2p)-通過(guò)在受保護(hù)軟件(2ps)的源中選擇在至少一個(gè)選定的算法處理中執(zhí)行的至少一個(gè)條件分支,-通過(guò)修改受保護(hù)軟件(2ps)的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件(2p)期間,在單元(6)中通過(guò)第二執(zhí)行部分(2peu),執(zhí)行至少一個(gè)選定條件分支的功能性,-以及通過(guò)產(chǎn)生 受保護(hù)軟件(2p)的第一對(duì)象部分(2pos),所述第一對(duì)象部分(2pos)為在執(zhí)行受保護(hù)軟件(2p)期間,在單元(6)中執(zhí)行至少一個(gè)選定條件分支的功能性, 以及受保護(hù)軟件(2p)的第二對(duì)象部分(2pou),所述第二對(duì)象部分(2pou)為在加載到單元(6)后,以及在執(zhí)行受保護(hù)軟件(2p)期間,出現(xiàn)第二執(zhí)行部分(2peu),通過(guò)第二執(zhí)行部分(2peu),執(zhí)行至少一個(gè)選定的條件分支的功能性,→以及在使用階段(U)期間●在存在單元(6)時(shí),以及每次第一執(zhí)行部分(2pes)的一部分利用它時(shí),在單元(6)中執(zhí)行至少一個(gè)條件分支的功能性,以便正確地執(zhí)行所述部分,因此,受保護(hù)軟件(2p)完全起作用,●以及在缺少單元(6)時(shí),盡管第一執(zhí)行部分(2pes)的一部分請(qǐng)求在單元(6)中執(zhí)行條件分支的功能性,仍不能正確地履行所述請(qǐng)求,以致不正確地執(zhí)行至少所述部分,因此,受保護(hù)軟件(2p)不完全起作用。
14.如權(quán)利要求13所述的方法,包括,在保護(hù)階段(P)期間,修改受保護(hù)軟件(2p)-通過(guò)在受保護(hù)軟件(2ps)的源中選擇在至少一系列選定的條件分支,-通過(guò)修改受保護(hù)軟件(2ps)的源的至少一個(gè)選定部分,這一修改為在執(zhí)行受保護(hù)軟件(2p)期間,在單元(6)中通過(guò)第二執(zhí)行部分(2peu),執(zhí)行至少一個(gè)選定系列的條件分支的全部功能性,-以及通過(guò)產(chǎn)生 受保護(hù)軟件(2p)的第一對(duì)象部分(2pos),所述第一對(duì)象部分(2pos)為在執(zhí)行受保護(hù)軟件(2p)期間,在單元(6)中執(zhí)行至少一個(gè)選定系列的條件分支的功能性, 以及受保護(hù)軟件(2p)的第二對(duì)象部分(2pou),所述第二對(duì)象部分(2pou)為在加載到單元(6)后,以及在執(zhí)行受保護(hù)軟件(2p)期間,出現(xiàn)第二執(zhí)行部分(2peu),通過(guò)第二執(zhí)行部分(2peu),執(zhí)行至少一個(gè)選定系列的條件分支的全部功能性。
15.如權(quán)利要求1至14的一個(gè)所述的方法,包括將保護(hù)階段(P)分成與保護(hù)的軟件無(wú)關(guān)的在前保護(hù)子階段(P1)與保護(hù)的軟件有關(guān)的下一保護(hù)子階段(P2)。
16.如權(quán)利要求15所述的方法,包括,在在前保護(hù)子階段(P1)期間,插入在其期間執(zhí)行所有定義的定義級(jí)(S11)。
17.如權(quán)利要求16所述的方法,包括,在定義級(jí)(S11)后,插入在其期間構(gòu)造利用模塊的構(gòu)造級(jí)(S12)。
18.如權(quán)利要求17所述的方法,包括,在構(gòu)造級(jí)(S12)后,插入預(yù)先定制級(jí)(S13),包括為獲得預(yù)先定制單元(66),將至少一部分利用模塊加載到空白單元(60)。
19.如權(quán)利要求16或17所述的方法,包括,在在前保護(hù)子階段(P1)期間,插入在其期間生成允許幫助生成受保護(hù)軟件或自動(dòng)化軟件保護(hù)的工具的工具生成級(jí)(S14)。
20.如權(quán)利要求15和18所述的方法,包括,將下一保護(hù)子階段(P2)分成●在其期間自有漏洞的軟件(2v)創(chuàng)建受保護(hù)軟件(2p)的創(chuàng)建級(jí)(S21),●或者,在其期間修改受保護(hù)軟件(2p)的修改級(jí)(S22),●以及可能地,定制級(jí)(S23),在其期間-為獲得至少一個(gè)單元(6),將包含利用模塊的受保護(hù)軟件(2p)的第二對(duì)象部分(2pou)加載到至少一個(gè)空白單元(60),-或者,為獲得至少一個(gè)單元(6),將可能包含利用模塊的受保護(hù)軟件(2p)的第二對(duì)象部分(2pou)的一部分加載到至少一個(gè)預(yù)先定制的單元(66)。
21.如權(quán)利要求19和20所述的方法,包括,在創(chuàng)建級(jí)(S21)期間,以及可能在修改級(jí)(S22)期間,使用幫助生成受保護(hù)軟件或自動(dòng)化軟件保護(hù)的至少一個(gè)工具。
22.用于實(shí)現(xiàn)根據(jù)權(quán)利要求17的方法的系統(tǒng),其特征在于,包括程序開發(fā)單元,考慮到在定義級(jí)(S11)期間插入的定義,在構(gòu)造級(jí)(S12)期間使用該程序開發(fā)單元以執(zhí)行構(gòu)造用于單元(6)的利用模塊。
23.用于實(shí)現(xiàn)根據(jù)權(quán)利要求18的方法的系統(tǒng),其特征在于,包括預(yù)先定制單元(30),為獲得至少一個(gè)預(yù)先定制的單元(66),允許將利用模塊的至少一部分加載到至少一個(gè)空白單元(60)上。
24.用于實(shí)現(xiàn)根據(jù)權(quán)利要求19的方法的系統(tǒng),其特征在于,包括程序開發(fā)單元,用于在工具生成級(jí)(S14)期間執(zhí)行幫助生成受保護(hù)軟件或自動(dòng)化軟件保護(hù)的工具地生成。
25.用于實(shí)現(xiàn)根據(jù)權(quán)利要求20的方法的系統(tǒng),其特征在于,包括用來(lái)創(chuàng)建或修改受保護(hù)軟件(2p)的程序開發(fā)單元。
26.用于實(shí)現(xiàn)根據(jù)權(quán)利要求20的方法的系統(tǒng),其特征在于,包括定制單元(45),允許●為獲得至少一個(gè)單元(6),將第二對(duì)象部分(2pou)加載到至少一個(gè)空白單元(60)上,●或者為獲得至少一個(gè)單元(6),將第二對(duì)象部分(2pou)的一部分加載到至少一個(gè)預(yù)先定制的單元(66)上。
27.預(yù)先定制單元(66),其特征在于,其通過(guò)根據(jù)權(quán)利要求23的系統(tǒng)獲得。
28.單元(6),允許執(zhí)行受保護(hù)軟件(2p)并防止其未授權(quán)使用,其特征在于,包含使用根據(jù)權(quán)利要求26的定制單元(45)加載的受保護(hù)軟件(2p)的第二對(duì)象部分(2pou)。
29.一組單元(6),其特征在于,在幾個(gè)處理和記憶單元間劃分使用根據(jù)權(quán)利要求26的定制單元(45)加載的受保護(hù)軟件(2p)的第二對(duì)象部分(2pou)以便它們的共同使用允許執(zhí)行受保護(hù)軟件(2p).
30.受保護(hù)軟件(2p)的分布集(2pd),其特征在于,包括●包含第一對(duì)象部分(2pos)并設(shè)計(jì)成在數(shù)據(jù)處理系統(tǒng)(3)中運(yùn)行的第一分布部分(2pds),●以及具有下述形式的第二分布部分(2pdu)-空白單元(60),-根據(jù)權(quán)利要求27的預(yù)先定制單元(66),能在加載定制信息后變換成單元(6),-根據(jù)權(quán)利要求28的單元(6)。
31.如權(quán)利要求30的受保護(hù)軟件(2p)的分布集(2pd),其特征在于,第一分布部分(2pds)具有物理分布介質(zhì)的形式,例如CDROM,或具有通過(guò)網(wǎng)絡(luò)分布的文件的形式。
32.如權(quán)利要求30的受保護(hù)軟件(2p)的分布集(2pd),其特征在于,具有預(yù)先定制單元(66)或單元(6)的空白單元(60)的形式的第二分布部分(2pdu)包括至少一個(gè)芯片卡(7)。
33.處理和記憶單元,其特征在于,包含將根據(jù)權(quán)利要求27的預(yù)先定制單元(66)變換成權(quán)利要求28的單元(6)所需的第二對(duì)象部分(2pou)的部分。
34.一組處理和記憶單元,其特征在于,共同使用的處理和記憶單元包含將權(quán)利要求27的預(yù)先定制單元(66)變換成權(quán)利要求28的單元(6)所需的第二對(duì)象部分(2pou)的部分。
全文摘要
本發(fā)明涉及用于由單元防止未授權(quán)使用有漏洞的軟件的方法,所述有漏洞的軟件在數(shù)據(jù)處理系統(tǒng)上操作。本發(fā)明方法由定義下述組成在單元中可執(zhí)行其相關(guān)函數(shù)的相關(guān)函數(shù)集;觸發(fā)命令集,所述觸發(fā)命令能在數(shù)據(jù)處理系統(tǒng)中執(zhí)行并能觸發(fā)在單元中執(zhí)行相關(guān)函數(shù);用于每個(gè)觸發(fā)的指令;用于重命名指令的方法;以及在使用階段在單元中重新安裝用于實(shí)現(xiàn)的模塊,以及允許由重命名指令恢復(fù)將執(zhí)行的相關(guān)函數(shù)。
文檔編號(hào)G06F21/12GK1535408SQ02814671
公開日2004年10月6日 申請(qǐng)日期2002年7月4日 優(yōu)先權(quán)日2001年7月31日
發(fā)明者讓-克里斯托夫·屈埃諾, 讓-克里斯托夫 屈埃諾, 吉勒·斯格羅, 斯格羅 申請(qǐng)人:瓦利迪公司