專利名稱::一種生成具有自檢測(cè)和自修復(fù)功能的應(yīng)用程序的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種防計(jì)算機(jī)病毒的方法,尤其涉及一種生成具有自檢測(cè)和自修復(fù)功能的應(yīng)用程序的方法。目前的應(yīng)用程序大部分只能實(shí)現(xiàn)其自身所能具備的功能,而將防病毒、殺病毒等等的操作交給其它專門的應(yīng)用程序進(jìn)行處理,也就是說在現(xiàn)有技術(shù)中,一個(gè)應(yīng)用程序在設(shè)計(jì)之初,并沒有事先考慮要對(duì)這個(gè)應(yīng)用程序進(jìn)行保護(hù),而且一旦應(yīng)用程序發(fā)生錯(cuò)誤,也無法通過應(yīng)用程序本身對(duì)其進(jìn)行自我修復(fù),當(dāng)然使用者可以在計(jì)算機(jī)中安裝防毒軟件,來做為防范病毒破壞文件的工具,但是,目前的防毒軟件大都以核對(duì)病毒碼的方式來預(yù)防病毒的侵害,雖然防毒軟件的廠商也提供讓使用者更新病毒碼的服務(wù),但以目前病毒日新月異的出現(xiàn)速度來看,實(shí)在是防不勝防,尤其是互聯(lián)網(wǎng)的盛行,讓各種新的病毒可以更快速地?cái)U(kuò)散、感染,因此防毒軟件的保護(hù)措施難免會(huì)有漏洞。就算是幸運(yùn)地防毒軟件都能檢測(cè)到遭到病毒感染的文件,但有些病毒的破壞力極強(qiáng),使得防毒軟件根本無法在清除病毒的同時(shí)并維持該文件的完整性;在這種情形之下,使用者為了避免危及其他干凈的文件,常只得將被感染的文件刪除掉,若是使用者沒有定期做備份,則會(huì)造成文件數(shù)據(jù)的遺失。另外,現(xiàn)在計(jì)算機(jī)硬件的技術(shù)發(fā)展非常地迅速,在RAM和硬盤技術(shù)飛速發(fā)展的今天,以存儲(chǔ)器(例如RAM)和硬盤為例,其速度與容量都較以往增長(zhǎng)數(shù)倍至數(shù)百倍,所以現(xiàn)在的應(yīng)用程序在執(zhí)行時(shí)不但不愁存儲(chǔ)器不足,并且可以執(zhí)行得非常迅速。因此,以傳統(tǒng)應(yīng)用程序中一種可移植可執(zhí)行(PortableExecutable,以下簡(jiǎn)稱PE)文件格式為例,其數(shù)據(jù)結(jié)構(gòu)如圖1所示,每一個(gè)PE格式文件除了具有一MS-DOS文件頭101、一PE格式文件頭102之外,還有一節(jié)索引表103。該節(jié)索引表103的內(nèi)容包括有節(jié)名、節(jié)開始處相對(duì)于文件頭的地址偏移量(RelationVirtualAddress,簡(jiǎn)稱RVA)、節(jié)的大小、節(jié)的屬性等。計(jì)算機(jī)系統(tǒng)可以根據(jù)節(jié)索引表103而查詢到其所要存取的節(jié)104,再?gòu)倪@些節(jié)104中讀取與該P(yáng)E格式文件相關(guān)的數(shù)據(jù),由此可知,在PE格式文件中,節(jié)104的作用便是存儲(chǔ)可執(zhí)行文件所需要的數(shù)據(jù)(或稱為程序源碼),并且由文件頭101、102設(shè)定其起始執(zhí)行的節(jié),使得可執(zhí)行文件從該節(jié)開始執(zhí)行,再依序關(guān)聯(lián)下去。本發(fā)明的一個(gè)目的在于提供一種生成具有自檢測(cè)和自修復(fù)的應(yīng)用程序的方法,能夠制作一種能夠?qū)崿F(xiàn)自檢測(cè)和自修復(fù)功能的應(yīng)用程序,以防止外來因素,如病毒等對(duì)可執(zhí)行文件的侵害,以及當(dāng)應(yīng)用程序感染病毒后進(jìn)行自我恢復(fù)。本發(fā)明的另一個(gè)目的在于提供一種生成具有自檢測(cè)和自修復(fù)的應(yīng)用程序的方法,其中包括一個(gè)打包的(Packed)程序,可以將所添加的內(nèi)容壓縮起來,在新添加的部份不影響應(yīng)用程序的正常使用的同時(shí),可以將編譯中不存在的數(shù)據(jù)加入可執(zhí)行文件中,達(dá)到應(yīng)用程序的個(gè)性化。本發(fā)明提供一種生成具有自檢測(cè)和自修復(fù)功能的應(yīng)用程序的方法,該方法包括以下步驟接收該應(yīng)用程序的源碼(SourceCode),該源碼的數(shù)據(jù)結(jié)構(gòu)上具有存儲(chǔ)原始數(shù)據(jù)的節(jié);提供一段可以實(shí)現(xiàn)自檢測(cè)功能的程序碼,該段自檢測(cè)程序碼以比對(duì)循環(huán)冗余校驗(yàn)(CyclicalRedundancyCheck,CRC)數(shù)據(jù)的方式,來確認(rèn)該文件是否遭到改變;提供一段可以實(shí)現(xiàn)自修復(fù)功能的程序碼,該段自修復(fù)程序碼以將一備份數(shù)據(jù)復(fù)制到該文件中的方式,以恢復(fù)該文件的原始內(nèi)容;在該存儲(chǔ)原始數(shù)據(jù)的節(jié)之外,在所述數(shù)據(jù)結(jié)構(gòu)上提供至少一自反饋節(jié),用于存儲(chǔ)所述自檢測(cè)程序碼和自修復(fù)程序碼;在所述數(shù)據(jù)結(jié)構(gòu)上提供一特殊節(jié),用于存儲(chǔ)所述自檢測(cè)所需要的循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù),以及該段自修復(fù)所需要的備份數(shù)據(jù);修改所述應(yīng)用程序文件的文件頭設(shè)定,讓該應(yīng)用程序從該自反饋節(jié)開始執(zhí)行,由此使該應(yīng)用程序在執(zhí)行之前,先自我檢查其文件是否遭到改變,并可以適時(shí)自我恢復(fù)該文件的原始內(nèi)容。本發(fā)明的方法還包括以下步驟對(duì)該應(yīng)用程序的源碼以及該段自檢測(cè)程序碼和該段自修復(fù)程序碼進(jìn)行編譯(Compiler),使其成為一個(gè)整體的可執(zhí)行程序。按照本發(fā)明的生成具有自檢測(cè)和自修復(fù)功能的應(yīng)用程序的方法生成的具有自檢測(cè)和自修復(fù)功能的應(yīng)用程序,利用可執(zhí)行文件(ExecutionFile)之?dāng)?shù)據(jù)結(jié)構(gòu)上的特點(diǎn),在其存儲(chǔ)原始數(shù)據(jù)的節(jié)(Section)之外,還增加至少一自反饋節(jié),利用該自反饋節(jié)存儲(chǔ)具有自檢測(cè)和自修復(fù)功能的程序碼,并將前述自檢測(cè)和自修復(fù)功能所需要的數(shù)據(jù)壓縮起來,附加在該應(yīng)用程序的特殊節(jié)之中,同時(shí),修改文件的文件頭設(shè)定,讓應(yīng)用程序從該自反饋節(jié)開始執(zhí)行;如此一來,本發(fā)明在執(zhí)行源碼之前,可以先行自我檢查文件是否遭到破壞并進(jìn)行修復(fù),以確保執(zhí)行該應(yīng)用程序的安全性??梢姡ㄟ^本發(fā)明所提供的一種生成具有自檢測(cè)和自修復(fù)功能的應(yīng)用程序生成方法所制作的應(yīng)用程序,可以使應(yīng)用程序自檢測(cè)和修復(fù)的功能,防止和排除病毒的侵害,保證應(yīng)用程序的安全性。為讓本發(fā)明的上述和其他目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例作詳細(xì)說明如下。圖1示出傳統(tǒng)可移植可執(zhí)行(PortableExecutable,PE)文件格式的結(jié)構(gòu)示意圖;圖2A示出本發(fā)明在圖1中還增加自檢測(cè)與自修復(fù)功能的文件結(jié)構(gòu)示意圖;圖2B示出本發(fā)明在圖2A中還增加備份數(shù)據(jù)的文件結(jié)構(gòu)示意圖;圖3示出本發(fā)明的功能模塊示意圖;圖4示出圖3中的打包(packed)程序的工作流程示意圖;圖5示出圖3中的自檢測(cè)模塊的工作流程示意圖;以及圖6示出圖3中的自修復(fù)模塊的工作流程示意圖。圖7示出本發(fā)明的方法所運(yùn)行的計(jì)算機(jī)環(huán)境的示意圖。以下結(jié)合附圖詳細(xì)描述本發(fā)明的優(yōu)選實(shí)施例。首先以PE(ProtableExecutable,縮寫為PE)格式文件(應(yīng)用程序的一種格式)為例,分析其結(jié)構(gòu)如圖1所示為傳統(tǒng)可執(zhí)行應(yīng)用程序的數(shù)據(jù)結(jié)構(gòu),每一個(gè)PE格式文件都有一個(gè)MS-DOS頭文件和一個(gè)PE格式頭文件,在節(jié)表索引中包括節(jié)名、節(jié)開始處相對(duì)於文件頭的地址偏移量(RelationVirtualAddress,簡(jiǎn)稱RVA)、節(jié)的大小、節(jié)的屬性(包括只讀、可讀寫等等),根據(jù)節(jié)表索引可以查找到相應(yīng)節(jié)表,從這些節(jié)表中可以讀出與該P(yáng)E文件相關(guān)的數(shù)據(jù),在PE文件中,節(jié)的作用是提供用戶所需要的數(shù)據(jù)。但同樣可以使用冗余的節(jié)將一些數(shù)據(jù)存儲(chǔ)在其中,這些數(shù)據(jù)在應(yīng)用程序中可以是有用的,也可以是沒用的。想要對(duì)可執(zhí)行文件進(jìn)行自檢測(cè)和自修復(fù),就必須利用節(jié)的特性??蓤?zhí)行文件的自檢測(cè)和自修復(fù)功能的實(shí)現(xiàn)實(shí)際上是在可執(zhí)行文件內(nèi)部存在一個(gè)自反饋節(jié)。這個(gè)自反饋節(jié)在程序運(yùn)行之被將檢測(cè)自身的一些特性,當(dāng)這些特性都與程序的記錄相同時(shí),可執(zhí)行文件將隨后實(shí)施應(yīng)該實(shí)現(xiàn)的功能。而當(dāng)這些特性與程序的記錄不相同時(shí),程序?qū)⑦M(jìn)行一次處理,將冗余節(jié)的備份數(shù)據(jù)覆蓋在可執(zhí)行文件的原數(shù)據(jù)上,達(dá)到可執(zhí)行文件的自檢測(cè)和自修復(fù)功能。本發(fā)明正是針對(duì)可執(zhí)行文件的這種數(shù)據(jù)結(jié)構(gòu)特點(diǎn),將本發(fā)明所提供的自檢測(cè)和自修復(fù)功能模塊以自定義編碼的形式添加在應(yīng)用程序的節(jié)中,其功能模塊圖如圖3所示,針對(duì)一個(gè)普通的應(yīng)用程序源碼301,設(shè)計(jì)自檢測(cè)302和自修復(fù)303的功能模塊,重新編譯這個(gè)應(yīng)用程序的源碼和自檢測(cè)、自修復(fù)功能模塊,讓其成為一個(gè)整體,通過打包(Packed)程序304,將自檢測(cè)和自修復(fù)功能模塊相應(yīng)的數(shù)據(jù)經(jīng)過壓縮后添加到原有的應(yīng)用程序中,生成新的應(yīng)用程序305。請(qǐng)參照?qǐng)D3,為本發(fā)明的功能模塊示意圖,其中首先取得應(yīng)用程序的源碼,并針對(duì)應(yīng)用程序的源碼301,個(gè)別設(shè)計(jì)其自檢測(cè)程序碼與自修復(fù)程序碼,因而形成一自檢測(cè)模塊302與一自修復(fù)模塊303,并將上述的程序碼存儲(chǔ)在至少一自反饋節(jié)301中,其在文件中的數(shù)據(jù)結(jié)構(gòu)如圖2A所示,同時(shí)重新編譯(Compiler)上述應(yīng)用程序的源碼301以及自檢測(cè)模塊302、自修復(fù)模塊303,使其成為一個(gè)整體的可執(zhí)行程序,當(dāng)然這個(gè)可執(zhí)行程序必須修改原始文件頭101、102的設(shè)定,使得程序在執(zhí)行之初,會(huì)先運(yùn)行該自反饋節(jié)201的內(nèi)容;之后再利用一打包(Packed)模塊304,將執(zhí)行自檢測(cè)模塊302和自修復(fù)模塊303所需要的數(shù)據(jù),以特殊節(jié)202的方式附加在該可執(zhí)行程序之中,其在文件中的數(shù)據(jù)結(jié)構(gòu)如圖2B所示,此時(shí)即生成了本發(fā)明的具有自檢測(cè)與自修復(fù)功能的新應(yīng)用程序305。上述自檢測(cè)模塊302、自修復(fù)模塊303和打包模塊304分別執(zhí)行相應(yīng)的自檢測(cè)處理、自修復(fù)處理和打包處理。因此,本發(fā)明在真正執(zhí)行源碼301之前,會(huì)先啟動(dòng)自反饋節(jié)201中的自檢測(cè)模塊302,以檢查新應(yīng)用程序305本身的一些特性,當(dāng)這些特性都與備份記錄相同時(shí),才會(huì)真正執(zhí)行該應(yīng)用程序源碼301的內(nèi)容;而當(dāng)這些特性與備份的記錄不相同時(shí),會(huì)啟動(dòng)自修復(fù)模塊303進(jìn)行處理,以將特殊節(jié)中的備份數(shù)據(jù)覆蓋在可執(zhí)行文件的原始數(shù)據(jù)上,達(dá)到新應(yīng)用程序305的自修復(fù)功能。以下描述自檢測(cè)模塊的處理過程。如圖4所示,從應(yīng)用程序的數(shù)據(jù)結(jié)構(gòu)中讀出循環(huán)冗余校驗(yàn)(簡(jiǎn)稱CRC)數(shù)據(jù)所對(duì)應(yīng)的文件地址偏移量(步驟401),及該地址偏移量所對(duì)應(yīng)的循環(huán)冗余校驗(yàn)值(步驟402),并把這些數(shù)據(jù)存成一個(gè)自定義的文件(步驟403),將該文件映射到內(nèi)存中(步驟403),取得該文件的長(zhǎng)度(FileLength)(步驟404),定義臨時(shí)變量nTemp=0(步驟405),設(shè)nTemp=nTemp+1(即內(nèi)存映射地址加1),取出此時(shí)地址所對(duì)應(yīng)的二進(jìn)制值(步驟407),判斷nTemp的函數(shù)值是否大於自定義文件的長(zhǎng)度(步驟408)?如果是,則表示自定義文件中的內(nèi)容已經(jīng)處理完畢,返回自檢測(cè)函數(shù)(步驟411),判斷所得到的CRC值是否與原始記錄值相同(步驟412)?如果不同,則調(diào)用自修復(fù)模塊(步驟413);如果相同,則調(diào)用該應(yīng)用程序的其他功能模塊,繼續(xù)運(yùn)行該應(yīng)用程序(步驟413);如果自定義函數(shù)nTemp的值小於文件長(zhǎng)度,則繼續(xù)判斷所取得的二進(jìn)制數(shù)值是否在CRC數(shù)據(jù)所在的位置與CRC數(shù)據(jù)長(zhǎng)度之內(nèi),如果是,則表示目前還有要讀取的二進(jìn)制數(shù),則返回(步驟407);如果否,則進(jìn)行CRC運(yùn)算,然後返回(步驟408)。以下描述自修復(fù)模塊的處理過程。如圖5所示,通過自檢測(cè)模塊發(fā)現(xiàn)了問題后(步驟501),搜索可執(zhí)行文件節(jié)表,找到對(duì)應(yīng)可執(zhí)行文件中存取備份數(shù)據(jù)的地址偏移位置(步驟502),進(jìn)行自解壓(步驟503),將備份數(shù)據(jù)解壓縮后放在硬盤上,存儲(chǔ)為一個(gè)臨時(shí)文件(步驟503),對(duì)此臨時(shí)文件進(jìn)行循環(huán)冗余校驗(yàn)(CRC校驗(yàn))(步驟504),將得到的校驗(yàn)值與存儲(chǔ)的原始校驗(yàn)值進(jìn)行比較(步驟505),如果相同,則關(guān)閉應(yīng)用,將臨時(shí)文件拷貝到原文件上(步驟507),然後重新運(yùn)行該模塊程序(步驟508);如果不同,則修復(fù)程序結(jié)束。以下描述打包(Package)程序。如圖6所示,首先輸入需要打包的程序的文件名(如.exe或.com等)(步驟601),查找該文件的節(jié)表(步驟602),判斷是否此文件具有特殊的節(jié)(步驟603),根據(jù)如果否,則提示用戶重新輸入一個(gè)正確的文件名(步驟603);如果是,則根據(jù)所讀出的節(jié)表地址,將此節(jié)表地址寫入節(jié)表的前八位(步驟604),將文件壓縮后,存儲(chǔ)在特殊的程序節(jié)中(步驟605),計(jì)算文件其余部份的CRC值(除去存儲(chǔ)CRC值的部份)(步驟607),將此時(shí)計(jì)算出的CRC值寫入用來存儲(chǔ)CRC值的字節(jié)中(步驟608),關(guān)閉被處理的文件(步驟609)。本發(fā)明的方法可以運(yùn)行在一般的計(jì)算機(jī)系統(tǒng)中及互聯(lián)網(wǎng)上,用于使計(jì)算機(jī)免遭病毒的侵害。圖7示出了運(yùn)行本發(fā)明的方法的一般計(jì)算機(jī)的硬件架構(gòu)的一個(gè)典型例子。其中,操作系統(tǒng)安裝在主機(jī)中的硬盤上,而本發(fā)明的方法在其操作系統(tǒng)中運(yùn)行,用于將一般的應(yīng)用程序變?yōu)榫哂芯哂凶詸z測(cè)和自修復(fù)的應(yīng)用程序。下面以一具體例子來說明使用本發(fā)明所提供的方法是如何工作并防止病毒侵害的。例如,用本發(fā)明的方法生成一個(gè)ActiveX控件,這個(gè)ActiveX控件通過Internet進(jìn)行傳播,如果在傳播過程中受到病毒的侵害,當(dāng)用戶開啟這個(gè)控件時(shí),自檢測(cè)模塊將啟動(dòng),發(fā)現(xiàn)文件的特征值與文件所記錄的并不一致,這時(shí)將啟動(dòng)自修復(fù)模塊。自修復(fù)模塊將從文件內(nèi)部找出備份的數(shù)據(jù),將備份的數(shù)據(jù)覆蓋被破壞的數(shù)據(jù)。在再次檢測(cè)文件的特征值之后,如果特征值正確,則可以繼續(xù)使用并傳播,如果特征值不正確,將會(huì)不運(yùn)行程序,給用戶一個(gè)友好的警告。首先會(huì)發(fā)現(xiàn)自己的應(yīng)用程序受到了不明原因系統(tǒng)的破壞,此時(shí)應(yīng)用程序進(jìn)行自修復(fù),一經(jīng)修復(fù)成功,則繼續(xù)在網(wǎng)絡(luò)上傳播,此時(shí)就不會(huì)給用戶帶來危害了。利用本發(fā)明所提供的自檢測(cè)與自修復(fù)功能的方法,使得應(yīng)用程序在執(zhí)行之初,都會(huì)先檢查文件是否遭到外力(例如病毒)的破壞,并可以適時(shí)地進(jìn)行自我修復(fù)的程序,因此可以確保執(zhí)行應(yīng)用程序時(shí)的安全性,更可以保護(hù)使用者的計(jì)算機(jī)系統(tǒng),免于遭受病毒的感染和破壞。以上描述的是本發(fā)明的優(yōu)選實(shí)施例,但本發(fā)明并不局限于此。本領(lǐng)域技術(shù)人員可以對(duì)此進(jìn)行各種修改和變型,而不脫離本發(fā)明的精神與范圍。本發(fā)明的保護(hù)范圍應(yīng)由所附權(quán)利要求書來界定。權(quán)利要求1.一種生成具有自檢測(cè)和自修復(fù)功能的應(yīng)用程序的方法,該方法包括以下步驟接收該應(yīng)用程序的源碼(SourceCode),該源碼文件的數(shù)據(jù)結(jié)構(gòu)上具有存儲(chǔ)原始數(shù)據(jù)的節(jié);提供一段可以實(shí)現(xiàn)自檢測(cè)功能的程序碼,該段自檢測(cè)程序碼以對(duì)比循環(huán)冗余校驗(yàn)(CyclicalRedundancyCheck,CRC)數(shù)據(jù)的方式,來確認(rèn)該文件是否遭到改變;提供一段可以實(shí)現(xiàn)自修復(fù)功能的程序碼,該段自修復(fù)程序碼以將一備份數(shù)據(jù)復(fù)制到該文件中的方式,以恢復(fù)該文件的原始內(nèi)容;在該存儲(chǔ)原始數(shù)據(jù)的節(jié)之外,在所述數(shù)據(jù)結(jié)構(gòu)上提供至少一自反饋節(jié),用于存儲(chǔ)所述自檢測(cè)程序碼和自修復(fù)程序碼;在所述數(shù)據(jù)結(jié)構(gòu)上提供一特殊節(jié),用于存儲(chǔ)所述自檢測(cè)所需要的循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù),以及該段自修復(fù)所需要的備份數(shù)據(jù);修改所述應(yīng)用程序文件的文件頭設(shè)定,讓該應(yīng)用程序從該自反饋節(jié)開始執(zhí)行,由此使該應(yīng)用程序在執(zhí)行之前,先自我檢查其文件是否遭到改變,并可以適時(shí)自我恢復(fù)該文件的原始內(nèi)容。2.如權(quán)利要求1所述的方法,還包括以下步驟對(duì)該應(yīng)用程序的源碼以及該段自檢測(cè)程序碼和該段自修復(fù)程序碼進(jìn)行編譯(Compiler),使其成為一個(gè)整體的可執(zhí)行程序。3.如權(quán)利要求1或2項(xiàng)所述的方法,其中該應(yīng)用程序?yàn)橐环N可移植可執(zhí)行(PortableExecutable,PE)文件。4.如權(quán)利要求3所述的方法,其中該可移植可執(zhí)行(PortableExecutable,PE)文件的格式包括有一MS-DOS文件頭、一PE文件頭、一節(jié)索引表以及多個(gè)數(shù)據(jù)節(jié),而該節(jié)索引表用于存儲(chǔ)該數(shù)據(jù)節(jié)的節(jié)名、節(jié)開始處相對(duì)於文件頭的地址偏移量(RelationVirtualAddress,RVA)、節(jié)的大小以及節(jié)的屬性等數(shù)據(jù)。5.如權(quán)利要求4所述的方法,其中該自反饋節(jié)的節(jié)名、節(jié)開始處相對(duì)于文件頭的地址偏移量(RelationVirtualAddress,RVA)、節(jié)的大小以及節(jié)的屬性等數(shù)據(jù),都記錄在該節(jié)索引表中。6.如權(quán)利要求4所述的方法,其中更改變?cè)揗S-DOS文件頭以及該P(yáng)E文件頭的記錄,使得該新應(yīng)用程序於執(zhí)行之初,會(huì)由該自反饋節(jié)開始執(zhí)行。7.如權(quán)利要求3所述的方法,其中該特殊節(jié)的節(jié)名、節(jié)開始處相對(duì)於文件頭的地址偏移量(RelationVirtualAddress,RVA)、節(jié)的大小以及節(jié)的屬性等數(shù)據(jù),都記錄在該節(jié)索引表中。8.如權(quán)利要求7所述的方法,其中將該特殊節(jié)開始處相對(duì)於文件頭的地址偏移量(RelationVirtualAddress,RVA),存儲(chǔ)在該節(jié)索引表的前8位。9.如權(quán)利要求7所述的方法,其中還增加一將該備份數(shù)據(jù)壓縮的步驟,之后再存儲(chǔ)在該特殊節(jié)中。10.如權(quán)利要求10所述的方法,其中該段自修復(fù)程序碼還包括有將該壓縮後的備份數(shù)據(jù)解壓縮的功能。11.如權(quán)利要求7所述的方法,其中該循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù)的計(jì)算范圍,為該新應(yīng)用程序中不包含存儲(chǔ)該循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù)的部分外的所有文件內(nèi)容。12.如權(quán)利要求1或2項(xiàng)所述的方法,其中該段自檢測(cè)程序碼比對(duì)循環(huán)冗余校驗(yàn)(CyclicalRedundancyCheck,CRC)數(shù)據(jù)的方式,還包括下列步驟由該新應(yīng)用程序中讀出該循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù);對(duì)該新應(yīng)用程序計(jì)算一新循環(huán)冗余校驗(yàn)(CRC)值,且其計(jì)算范圍并不包括存儲(chǔ)該循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù)的部分;以及比較該新循環(huán)冗余校驗(yàn)(CRC)值與該循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù)是否相同。13.如權(quán)利要求12所述的方法,其中若該新循環(huán)冗余校驗(yàn)(CRC)值與該循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù)不同,則跳到該段自修復(fù)程序碼。14.如權(quán)利要求12所述的方法,其中若該新循環(huán)冗余校驗(yàn)(CRC)值與該循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù)相同,則執(zhí)行該新應(yīng)用程序的源碼(SourceCode)。15.如權(quán)利要求1或2所述的方法,其中該段自修復(fù)程序碼將該備份數(shù)據(jù)復(fù)制到該文件中的步驟,還包含下列步驟由該新應(yīng)用程序中找出該備份數(shù)據(jù),并且對(duì)該備份數(shù)據(jù)進(jìn)行解壓縮;以及將該解壓縮後的備份數(shù)據(jù),復(fù)制到該新應(yīng)用程序中的相應(yīng)部分。16.如權(quán)利要求15所述的方法,其中還增加一對(duì)該解壓縮后的備份數(shù)據(jù)進(jìn)行循環(huán)冗余校驗(yàn)(CRC)的步驟,并將其檢查結(jié)果與該循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù)比較,以確認(rèn)該備份數(shù)據(jù)的正確性。全文摘要一種生成具有自檢測(cè)和自修復(fù)功能的應(yīng)用程序的方法,利用可執(zhí)行文件(ExecutionFile)的數(shù)據(jù)結(jié)構(gòu)上的特點(diǎn),在其存儲(chǔ)原始數(shù)據(jù)的節(jié)(Section)之外,還增加至少一自反饋節(jié),利用該自反饋節(jié)存儲(chǔ)具有自檢測(cè)和自修復(fù)功能的程序碼,并將前述自檢測(cè)和自修復(fù)功能所需要的數(shù)據(jù)壓縮起來,附加於該應(yīng)用程序的特殊節(jié)之中,同時(shí),修改文件的文件頭設(shè)定,讓應(yīng)用程序由該自反饋節(jié)開始執(zhí)行;本發(fā)明在執(zhí)行源碼之前,可以先行自我檢查文件是否遭到破壞并進(jìn)行修復(fù),以確保執(zhí)行該應(yīng)用程序的安全性。防止病毒侵害。文檔編號(hào)G06F12/16GK1371050SQ0110469公開日2002年9月25日申請(qǐng)日期2001年2月20日優(yōu)先權(quán)日2001年2月20日發(fā)明者陳玄同,林光信申請(qǐng)人:英業(yè)達(dá)股份有限公司