專利名稱:計(jì)算機(jī)軟件安裝的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)軟件并且特別涉及用于計(jì)算機(jī)軟件安裝的裝置。
目前計(jì)算機(jī)軟件,特別是例如電子表格和文字處理程序的應(yīng)用軟件,都很復(fù)雜并且使用了許多主執(zhí)行程序需要時(shí)被調(diào)用的子例程。在許多情況下,其它應(yīng)用程序也需要這些子例程。例如,打印子例程或者用于打開文件或關(guān)閉文件的子例程,可以被多種不同的應(yīng)用程序使用。因此已經(jīng)提出了為了節(jié)約系統(tǒng)存儲(chǔ)器的空間,這些子例程在盡可能的情況下應(yīng)該共享。這樣,在安裝一個(gè)新的應(yīng)用程序時(shí),建議新的應(yīng)用程序在盡可能的情況下檢測(cè)系統(tǒng)內(nèi)已經(jīng)可用的資源并使用那些資源。這樣,當(dāng)新的應(yīng)用程序需要一個(gè)比它所發(fā)現(xiàn)的系統(tǒng)內(nèi)可用的子例程更新的版本時(shí),在安裝這個(gè)新的應(yīng)用程序時(shí),安裝這個(gè)較新的版本。
這導(dǎo)致了應(yīng)用程序間的沖突。系統(tǒng)內(nèi)已存在的應(yīng)用程序可能需要一個(gè)較早版本的子例程,而其現(xiàn)在卻被新的應(yīng)用程序所需的較新的版本所覆蓋。這樣可能會(huì)導(dǎo)致這個(gè)已存在的應(yīng)用程序的操作變得不可預(yù)知或者不能完成。
本發(fā)明試圖解決這些難題。
本發(fā)明提供了包括一個(gè)在執(zhí)行期間需要訪問(wèn)所述至少一個(gè)子例程的可執(zhí)行程序的計(jì)算機(jī)軟件,該軟件進(jìn)一步包括加密形式的一個(gè)或每個(gè)子例程,并且進(jìn)一步包括一個(gè)可操作的解密例程,用于至少在訪問(wèn)需要時(shí)將這些加密子例程轉(zhuǎn)換成可執(zhí)行形式。
優(yōu)選地,無(wú)論何時(shí)所述程序被執(zhí)行,都可以執(zhí)行解密例程,以便在任何情況下重新創(chuàng)建可執(zhí)行形式的子例程。優(yōu)選地,解密例程創(chuàng)建一個(gè)可被程序訪問(wèn)的地址表以便為訪問(wèn)而定位子例程。優(yōu)選地,解密例程是可操作的,以用于檢測(cè)在運(yùn)行軟件的系統(tǒng)內(nèi)是否存在已經(jīng)可用的子例程,并用于使該可執(zhí)行程序使用已可用的子例程。該解密例程可操作用于把一個(gè)已可用子例程的地址合并到地址表內(nèi),這樣就不需要解密該子例程的另一個(gè)復(fù)本。
該解密例程最好可操作用于區(qū)分子例程的不同版本,由此在系統(tǒng)內(nèi)只有一個(gè)不同版本可用的情況下才解密加密版本。
該軟件最好進(jìn)一步合并可執(zhí)行程序的加密復(fù)本,該解密例程可被可操作以便解密所述程序的一個(gè)可執(zhí)行復(fù)本。解密例程最好可執(zhí)行,用于在檢測(cè)到包含在該軟件內(nèi)的非加密復(fù)本被破壞時(shí)解密該可執(zhí)行程序的復(fù)本。
加密和解密最好包括或者涵蓋壓縮或解密技術(shù)。
本發(fā)明還提供了一種包括上述計(jì)算機(jī)軟件的數(shù)據(jù)存儲(chǔ)裝置。
本發(fā)明還提供了一種計(jì)算機(jī)系統(tǒng),它包括運(yùn)行時(shí)可執(zhí)行軟件的處理裝置,以及至少一個(gè)上述的計(jì)算機(jī)軟件。
本發(fā)明進(jìn)一步提供了一種運(yùn)行時(shí)可執(zhí)行一個(gè)可執(zhí)行程序的計(jì)算機(jī)系統(tǒng),該系統(tǒng)包括第一存儲(chǔ)裝置,它包括表示可執(zhí)行程序的計(jì)算機(jī)可讀代碼;加載裝置,運(yùn)行時(shí)用于加載執(zhí)行代碼;標(biāo)識(shí)裝置,運(yùn)行時(shí)用于標(biāo)識(shí)在可執(zhí)行程序執(zhí)行期間所需要的任何子例程;第二存儲(chǔ)裝置,它包括表示由該標(biāo)識(shí)裝置標(biāo)識(shí)的所述或每個(gè)子例程的計(jì)算機(jī)可讀代碼;以及第二加載裝置,它運(yùn)行時(shí)用于在系統(tǒng)的別處沒有可用的子例程的情況下,從第二存儲(chǔ)裝置加載所述或每個(gè)子例程。
最好所述的標(biāo)識(shí)裝置和第二存儲(chǔ)裝置在可執(zhí)行程序執(zhí)行初始化的時(shí)候被運(yùn)行,由此使所述子例程在任何時(shí)候都可以使用。所述第二加載裝置在地址表中產(chǎn)生的入口,以標(biāo)識(shí)已經(jīng)可以使用的子例程的位置,地址表可以在需要訪問(wèn)時(shí)被可執(zhí)行程序訪問(wèn),用于定位子例程。第二加載裝置最好運(yùn)行時(shí)用于檢測(cè)系統(tǒng)內(nèi)是否存在已經(jīng)可用的子例程,并且如果可用,就使所述可執(zhí)行程序使用所述子例程。第二加載裝置可操作地將系統(tǒng)內(nèi)其它地方可用子例程的地址合并到地址表內(nèi)。第二加載裝置最好運(yùn)行時(shí)用于區(qū)分子例程的不同版本,由此在系統(tǒng)內(nèi)其它地方的僅僅有不同版本可用的情況下才解密和加密版本。
所述第二存儲(chǔ)裝置進(jìn)一步包括表示所述可執(zhí)行程序的計(jì)算機(jī)可讀代碼,并且該第二加載程序可以操作用于在系統(tǒng)內(nèi)其它地方可執(zhí)行程序不可用時(shí)從該第二存儲(chǔ)裝置中加載該可執(zhí)行程序。在檢測(cè)到系統(tǒng)內(nèi)其它地方可執(zhí)行程序的復(fù)本被破壞時(shí),所述可執(zhí)行程序可以采用加密的形式保存在所述第二存儲(chǔ)裝置中,并且第二加載裝置可操作用于解密所述復(fù)本。
加密和解密包括或者涵蓋壓縮或解密技術(shù)。
本發(fā)明還提供了一種安裝一個(gè)計(jì)算機(jī)軟件的方法,包括
1.安裝一個(gè)在執(zhí)行期間需要訪問(wèn)至少一個(gè)子例程的那種類型的可執(zhí)行程序;2.對(duì)所述子例程的加密復(fù)本進(jìn)行解密;以及3.安裝所述的解密復(fù)本,以便被可執(zhí)行程序訪問(wèn)。
最好在每個(gè)所述可執(zhí)行程序需要被執(zhí)行的時(shí)候都執(zhí)行解密和安裝的步驟。
該方法進(jìn)一步包括標(biāo)識(shí)任何已經(jīng)安裝并且對(duì)可執(zhí)行程序是可使用的子例程,以及解密和安裝所述或任何需要的但不能使用的子例程的步驟。標(biāo)識(shí)已可用的子例程的步驟最好包括區(qū)分子例程的不同版本,由此在只有一個(gè)不同版本是可用的情況下解密一個(gè)加密版本。
該方法進(jìn)一步包括評(píng)定可執(zhí)行程序的破壞情況,以及解密和安裝該可執(zhí)行程序的另外的復(fù)本以便在檢測(cè)到破壞的情況下使用的步驟。
加密和解密最好包括或者涵蓋壓縮或解壓縮技術(shù)。
本發(fā)明的實(shí)施例將參照附圖以舉例的方式詳細(xì)描述,其中
圖1表示實(shí)現(xiàn)本發(fā)明所用的數(shù)據(jù)處理設(shè)備的原理性簡(jiǎn)單示意圖。
圖2表示了根據(jù)前面所述的方案安裝了應(yīng)用程序的RAM。
圖3a、3b和3c表示根據(jù)本發(fā)明在RAM中安裝應(yīng)用程序的步驟。
在描述用于安裝軟件的裝置之前,首先描述一下實(shí)現(xiàn)本發(fā)明所使用的數(shù)據(jù)處理系統(tǒng)的基本部件是很有幫助的。圖1表示包括一個(gè)與輸入/輸出設(shè)備3相連的處理器2的計(jì)算機(jī)系統(tǒng)1。處理器2還配有在處理期間使用的隨機(jī)存儲(chǔ)器(RAM)4。附加存儲(chǔ)容量由例如硬盤驅(qū)動(dòng)器5來(lái)提供。計(jì)算機(jī)系統(tǒng)可以是,例如IBM PC類型,或者是與其等同的計(jì)算機(jī)。
按一般的習(xí)慣,軟件應(yīng)用程序在需要之前要被存儲(chǔ)在驅(qū)動(dòng)器5上,然后在需要使用時(shí)才安裝到RAM4中。這提高了處理器2訪問(wèn)軟件的速度,并且因此就允許處理器2更快的處理。圖2示出了一部分RAM10,其中存儲(chǔ)了為圖1所示類型設(shè)備的處理器的使用而安裝的一個(gè)應(yīng)用程序(例如文字處理應(yīng)用程序)。此圖采用非常簡(jiǎn)化、示意性的形式表示了應(yīng)用程序的各個(gè)組成部分。這些部分包括一個(gè)加載程序12,它是用于在應(yīng)用程序最初被打開時(shí)實(shí)施初始化操作的代碼塊。該程序的主體安裝在RAM10的14處。如上所述,程序14需要訪問(wèn)包括子例程的文件。這些文件通常稱為.DLL文件并且被不同的應(yīng)用程序所共享。因此,.DLL文件16在圖中RAM10的其它區(qū)域示出。程序14和.DLL文件之間的區(qū)域18可自由用于其它應(yīng)用,例如用于另一個(gè)應(yīng)用程序的安裝。
RAM10還包括一個(gè)輸入地址表(IAT)20。這是一個(gè)標(biāo)識(shí).DLL文件16的位置的表,以使處理器2在程序14需要的時(shí)候通過(guò)查找它們?cè)贗AT20內(nèi)的位置而訪問(wèn)這些文件16。在應(yīng)用程序被從硬盤驅(qū)動(dòng)器復(fù)制到RAM10之后,當(dāng)執(zhí)行首先轉(zhuǎn)到加載程序12時(shí),由加載程序12創(chuàng)建IAT。加載程序12檢查應(yīng)用程序需要哪些.DLL文件,在硬盤驅(qū)動(dòng)器上尋找這些文件,將它們加載到RAM10中并創(chuàng)建IAT20以標(biāo)識(shí)每個(gè).DLL文件以及它在RAM中的位置。
圖3a、3b和3c表示了根據(jù)本發(fā)明加載應(yīng)用程序的方式。這些可以結(jié)合圖4來(lái)理解,圖4是一個(gè)表示應(yīng)用程序加載時(shí)所執(zhí)行的一系列步驟的流程圖。所示的步驟僅僅是與本發(fā)明有關(guān)的那些步驟。應(yīng)當(dāng)理解的是,與本發(fā)明無(wú)關(guān)的其它步驟也可以作為加載的一部分在所示的步驟之前、期間或之后執(zhí)行。
RAM10最初的加載產(chǎn)生了圖3a所示的狀態(tài)。加載程序模塊12a處于適當(dāng)?shù)奈恢蒙?圖4的步驟100),大體上相應(yīng)于圖1的加載程序12。程序14也被安裝(步驟102)在與圖1中的安裝相對(duì)應(yīng)的位置。然而,應(yīng)當(dāng)注意在圖3a中,圖1中用于LAT20的存儲(chǔ)器區(qū)域就是圖3a中的空白區(qū)域。
根據(jù)本發(fā)明,作為初始化加載的一部分,稱為引擎22的可執(zhí)行代碼的附加塊被安裝在RAM10中程序14的下面,也就是區(qū)域18的一部分。其它文件24與引擎22相關(guān)聯(lián),并且與其一起加載(步驟106)。這些文件是圖1的.DLL文件16的加密版本。加密可以采用壓縮或采用更安全的加密技術(shù)。在圖3a中,文件24用圓括號(hào)標(biāo)識(shí)以示意性地表示它們的加密性質(zhì)。
上述初始化加載之后,執(zhí)行轉(zhuǎn)到加載程序模塊12a(步驟108)。也就是,處理器12的程序指針指向加載程序模塊12a起始的存儲(chǔ)器地址。圖3b表示接著在RAM10中發(fā)生的變化。作為應(yīng)用程序初始化的一部分,加載程序12使引擎22運(yùn)行(步驟110)。引擎22提供了兩個(gè)功能。首先,引擎22查看系統(tǒng),以便標(biāo)識(shí)應(yīng)用程序所需的任何資源(也就是例中的.DLL文件) (步驟112)并且標(biāo)識(shí)那些在系統(tǒng)中已可用的資源(步驟114)。缺省地,步驟114還標(biāo)識(shí)那些不可用的資源。在此實(shí)施例中,假定需要子例程.DLL1,并且它在硬盤驅(qū)動(dòng)器5上是可以獲得的,但是子例程.DLL2也是需要的,在硬盤驅(qū)動(dòng)器上卻不可以獲得。這樣引擎22可以定位在硬盤驅(qū)動(dòng)器上的.DLL1,將其拷貝到RAM10(步驟116)并通過(guò)在IAT20中產(chǎn)生一個(gè)正確的入口來(lái)創(chuàng)建IAT表20(步驟118)用來(lái)標(biāo)識(shí)子例程.DLL1及其位置。這就產(chǎn)生了圖3b所示的情況。
作為該過(guò)程的一部分,引擎22也會(huì)標(biāo)識(shí)出(步驟114)在硬盤驅(qū)動(dòng)器上已經(jīng)不可使用的或者沒有可用的合適版本并需要的任何子例程。在此實(shí)施例中,子例程.DLL2開始就是不可用的。因此引擎22訪問(wèn)(步驟120)如(.DLL2)表示的加密文件,然后對(duì).DLL2的復(fù)本進(jìn)行解密操作(步驟122)。然后安裝解密的復(fù)本(步驟124)以使其對(duì)于程序14可以使用。同樣,引擎22在IAT20中再產(chǎn)生一個(gè)合適的用于標(biāo)識(shí)文件.DLL2的狀態(tài)和位置的入口(步驟126)。
這樣,在引擎22完全如所描述的那樣執(zhí)行后,RAM10就是圖3c所示的狀態(tài)。應(yīng)用程序的安裝就和圖2的安裝相同了,那兒有加載程序12a、程序14、用于把程序指向子例程的IAT20和完整的一組DLL子例程16。另外,圖2中的一些空區(qū)域18現(xiàn)在也填充引擎22和解密的(.DLL)文件,但是程序14一旦開始執(zhí)行這些還不被調(diào)用。程序14所需要的資源已經(jīng)在區(qū)域16處可以使用并且在IAT20中已進(jìn)行了標(biāo)識(shí),程序14現(xiàn)在開始執(zhí)行(步驟128)。
將引擎22和加密(.DLL)文件合并到最初安裝在RAM10中的軟件以達(dá)到下面所述的非常有用的技術(shù)效果。應(yīng)用程序是自包含的,因?yàn)樗哂衅洳僮魉枰娜鬃永?。為了?jié)約空間這些子例程最好采用壓縮格式,為安全起見其還可加密。當(dāng)子例程不可用或者不是正確的版本時(shí),可以按照上面的說(shuō)明進(jìn)行安裝。更進(jìn)一步的,當(dāng)加載程序模塊執(zhí)行并調(diào)用引擎22時(shí),每當(dāng)應(yīng)用程序運(yùn)行時(shí),它們就按需被安裝。因此,不同的應(yīng)用程序的安裝或操作都不影響應(yīng)用程序的正確操作,然而,受到攻擊時(shí)其它的應(yīng)用程序可能修改、替換或覆蓋共享的.DLL文件。當(dāng)應(yīng)用程序下一次運(yùn)行時(shí),任何由于其它應(yīng)用程序的動(dòng)作或者其它的原因而導(dǎo)致不可用的共享文件都將從加密(.DLL)文件而被存儲(chǔ)。
引擎22和加密文件(DLL)的操作還提供了一定程度的防止病毒攻擊或其它破壞的保護(hù)。引擎22可以被編程為在發(fā)現(xiàn)或懷疑任何破壞時(shí),評(píng)估硬盤上明顯可用的子例程的破壞程度、從(.DLL)文件安裝新近的、未加密的復(fù)本。
本發(fā)明可進(jìn)一步擴(kuò)展,針對(duì)在檢測(cè)到或懷疑主程序14內(nèi)的任何破壞的情況下,引擎22還可以提供一個(gè)主程序14的加密復(fù)本,解密并安裝一個(gè)完整的、全新的程序14的復(fù)本。
根據(jù)上面的描述很明顯的,在不背離本發(fā)明的范圍下,可對(duì)上述的裝置進(jìn)行許多變化形式和修改。特別是,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō)很明顯,此技術(shù)可以用非常廣泛種類的語(yǔ)言以及使用任何不同的加密、解密壓縮或解密技術(shù)來(lái)實(shí)施。
盡管,前面的說(shuō)明書的盡力描述力在突出本發(fā)明中被視為相當(dāng)重要的那些特征,應(yīng)當(dāng)理解,在前面所提到的和/或在附圖中所表示的任何專利性技術(shù)特征或者技術(shù)特征的組合方面,不管是否特別強(qiáng)調(diào),申請(qǐng)人的權(quán)利要求保護(hù)均已在其中記載了。
權(quán)利要求
1.計(jì)算機(jī)軟件,包括在執(zhí)行期間需要訪問(wèn)至少一個(gè)子例程的可執(zhí)行程序,該軟件進(jìn)一步包括加密形式的所述或每個(gè)子例程,以及進(jìn)一步包括解密例程,所述解密例程運(yùn)行時(shí)用于至少在需要訪問(wèn)時(shí)將加密的子例程轉(zhuǎn)換成可執(zhí)行的形式。
2.根據(jù)權(quán)利要求1的軟件,其特征在于,每當(dāng)所述程序執(zhí)行時(shí),所述解密例程就執(zhí)行,由此在每種情況下重新創(chuàng)建具有可執(zhí)行形式的所述子例程。
3.根據(jù)權(quán)利要求1或2的軟件,其特征在于解密例程在地址表中產(chǎn)生用來(lái)標(biāo)識(shí)重新創(chuàng)建的子例程的位置的入口,所述地址表可以被所述程序訪問(wèn)以便在需要時(shí)對(duì)要訪問(wèn)的子例程進(jìn)行定位。
4.根據(jù)任何前面權(quán)利要求的軟件,其特征在于所述解密例程運(yùn)行時(shí)用于檢測(cè)在運(yùn)行所述軟件的系統(tǒng)內(nèi)是否存在已經(jīng)可用的子例程,并且如果已經(jīng)可用則使所述可執(zhí)行程序使用子例程。
5.根據(jù)權(quán)利要求4和3的軟件,其特征在于所述解密例程運(yùn)行時(shí)用于將已經(jīng)可用的子例程地址合并到所述地址表中,由此就不需要解密所述子例程的另外的復(fù)本。
6.根據(jù)任何前面權(quán)利要求的軟件,其特征在于所述解密例程運(yùn)行時(shí)用于區(qū)分子例程的不同版本,由此在系統(tǒng)中僅僅有一個(gè)不同的版本可以使用時(shí)對(duì)加密版本進(jìn)行解密。
7.根據(jù)任何前面權(quán)利要求的軟件,還合并所述可執(zhí)行程序的加密復(fù)本,所述解密例程運(yùn)行時(shí)用于解密所述程序的可執(zhí)行復(fù)本。
8.根據(jù)權(quán)利要求7所述的軟件,其特征在于所述解密例程運(yùn)行時(shí)用于在檢測(cè)到包含在所述軟件內(nèi)的非加密復(fù)本被破壞時(shí)解密所述可執(zhí)行程序的復(fù)本。
9.根據(jù)任何前面權(quán)利要求的軟件,其特征在于加密和解密包括或涵蓋壓縮或解壓縮技術(shù)。
10.一種計(jì)算機(jī)可讀介質(zhì),其上記載了有程序,其特征在于所述程序包括根據(jù)任何前面的權(quán)利要求所述的計(jì)算機(jī)軟件。
11.一種計(jì)算機(jī)系統(tǒng),其包括運(yùn)行時(shí)用于執(zhí)行軟件的處理裝置,以及至少一個(gè)根據(jù)權(quán)利要求1至9中任何一個(gè)的所述計(jì)算機(jī)軟件。
12.一種計(jì)算機(jī)系統(tǒng),運(yùn)行時(shí)用于執(zhí)行可執(zhí)行程序,所述系統(tǒng)包括第一存儲(chǔ)裝置,包括表示所述可執(zhí)行程序的計(jì)算機(jī)可讀代碼;加載裝置,運(yùn)行時(shí)用于加載所述要執(zhí)行的代碼;標(biāo)識(shí)裝置,運(yùn)行時(shí)用于標(biāo)識(shí)所述可執(zhí)行程序在其執(zhí)行期間所需要的任何子例程;第二存儲(chǔ)裝置,包括表示由所述標(biāo)識(shí)裝置標(biāo)識(shí)的所述或每個(gè)子例程的計(jì)算機(jī)可讀代碼;以及第二加載裝置,運(yùn)行時(shí)用于在所述系統(tǒng)別處子例程不可用時(shí)從所述第二存儲(chǔ)裝置加載所述或每個(gè)子例程。
13.根據(jù)權(quán)利要求12的系統(tǒng),其特征在于所述標(biāo)識(shí)裝置和第二加載裝置在每當(dāng)所述可執(zhí)行程序的執(zhí)行初始化時(shí)被運(yùn)行,由此使所述子例程在每種情況都可以使用。
14.根據(jù)權(quán)利要求12或13的系統(tǒng),其特征在于所述第二加載裝置在地址表中生成一個(gè)入口以便標(biāo)識(shí)已經(jīng)可以使用的子例程的位置,所述地址表可以被所述可執(zhí)行程序訪問(wèn)以便在需要時(shí)對(duì)要訪問(wèn)的子例程進(jìn)行定位。
15.根據(jù)權(quán)利要求12至14中的的系統(tǒng),其特征在于所述第二加載裝置運(yùn)行時(shí)用于檢測(cè)在所述系統(tǒng)內(nèi)已經(jīng)可以使用的子例程的狀態(tài),并且如果可以使用就使所述可執(zhí)行程序使用所述子例程。
16.根據(jù)權(quán)利要求15和14的系統(tǒng),其特征在于所述第二加載裝置運(yùn)行時(shí)用于將在系統(tǒng)其它地方可用子例程的地址合并到地址表內(nèi)。
17.根據(jù)權(quán)利要求12至16中的任意一個(gè)的系統(tǒng),其特征在于所述第二加載裝置運(yùn)行時(shí)用于區(qū)分子例程的不同版本,由此在系統(tǒng)內(nèi)別處僅僅有不同版本可用的情況下對(duì)加密版本進(jìn)行解密。
18.根據(jù)權(quán)利要求12至17中的任意一個(gè)的系統(tǒng),其特征在于所述第二存儲(chǔ)裝置進(jìn)一步包括表示所述可執(zhí)行程序的計(jì)算機(jī)可讀代碼,并且所述第二加載程序運(yùn)行時(shí)用于在所述系統(tǒng)內(nèi)別處可執(zhí)行程序不可用時(shí)從所述第二存儲(chǔ)裝置中加載所述可執(zhí)行程序。
19.根據(jù)權(quán)利要求18的系統(tǒng),其特征在于在檢測(cè)到所述系統(tǒng)內(nèi)別處可用的所述可執(zhí)行程序的復(fù)本被破壞時(shí),所述可執(zhí)行程序以加密的形式保存在所述第二存儲(chǔ)裝置中,并且所述第二加載裝置運(yùn)行時(shí)用于解密所述復(fù)本。
20.根據(jù)權(quán)利要求12至19中任意的一個(gè)的系統(tǒng),其特征在于加密和解密包括或者函蓋壓縮或解壓縮技術(shù)組成。
21.一種安裝一個(gè)計(jì)算機(jī)軟件的方法,其包括1.安裝一個(gè)在執(zhí)行期間需要訪問(wèn)至少一個(gè)子例程的那種類型的可執(zhí)行程序;2.對(duì)所述子例程的加密復(fù)本進(jìn)行解密;以及3.安裝所述解密復(fù)本,以便被所述可執(zhí)行程序訪問(wèn)。
22.根據(jù)權(quán)利要求21的方法,其特征在于所述解密和安裝的步驟在每當(dāng)所述可執(zhí)行程序需要被執(zhí)行的時(shí)候執(zhí)行。
23.根據(jù)權(quán)利要求21或22的方法,其特征在于所述方法進(jìn)一步包括標(biāo)識(shí)任何已經(jīng)安裝并且對(duì)于所述可執(zhí)行程序是可使用的子例程,并且僅對(duì)所述或任何需要的但不能使用的子例程進(jìn)行解密和安裝的步驟。
24.根據(jù)權(quán)利要求23的方法,其特征在于所述標(biāo)識(shí)已可用的子例程的步驟包括區(qū)分子例程的不同版本,由此在僅僅有一個(gè)不同版本是可用的情況下解密一加密版本。
25.根據(jù)權(quán)利要求21至24中任意的一個(gè)的方法,其特征在于所述方法進(jìn)一步包括評(píng)定所述可執(zhí)行程序的破壞情況,以及在檢測(cè)到破壞的情況下解密和安裝所述可執(zhí)行程序另外的復(fù)本以供使用的步驟。
26.根據(jù)權(quán)利要求21至25中任意的一個(gè)的方法,其特征在于加密和解密包括或涵蓋壓縮或解壓縮技術(shù)。
27.一種參照相關(guān)附圖如上所述的計(jì)算機(jī)軟件產(chǎn)品。
全文摘要
當(dāng)可執(zhí)行程序要被安裝到RAM(10)中時(shí),RAM最初包括加載程序模塊(12a)、程序(10)、引擎(22)和諸如加密的DLL文件的加密資源(24)。在程序(14)要被運(yùn)行時(shí),加載程序模塊(12a)調(diào)用引擎(22),它訪問(wèn)程序(14)所需要的子例程資源,標(biāo)識(shí)出系統(tǒng)內(nèi)已經(jīng)可用的任何子例程,加載那些已經(jīng)可用的子例程,以及解密和加載任何不可用的子例程。這樣就保證了所需要的子例程在每當(dāng)程序(14)執(zhí)行時(shí)對(duì)于程序(14)都是可以使用的。
文檔編號(hào)G09C1/00GK1527972SQ01815804
公開日2004年9月8日 申請(qǐng)日期2001年7月12日 優(yōu)先權(quán)日2000年7月18日
發(fā)明者J·A·薩法, J A 薩法 申請(qǐng)人:比特阿茲有限公司