專利名稱:一種利用復(fù)制環(huán)特性檢測計算機病毒的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計算機病毒檢測方法,更具體而言,涉及一種利用復(fù)制環(huán)特性檢測計算機病毒的方法。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)以及計算機技術(shù)的發(fā)展,隨著而來的計算機病毒同樣也“迅猛”發(fā)展。由于其傳播渠道以及傳播速度,它給社會、企業(yè)以及個人造成的損失日益巨大。目前整個計算機界對于病毒的檢測尚處于被動狀態(tài),歸納起來有以下幾種病毒檢測方法特征碼技術(shù)該技術(shù)是目前應(yīng)用最廣也是目前最實用的技術(shù),它是通過對已發(fā)現(xiàn)的病毒進行分析后得出其特有的特征代碼,作為搜索并發(fā)現(xiàn)該病毒的依據(jù),并同步開發(fā)出相應(yīng)殺毒程序。但該技術(shù)的缺點是在預(yù)防計算機病毒方面永遠只能處于被動局面,對新的病毒束手無策。隨著網(wǎng)絡(luò)技術(shù)和計算機技術(shù)的發(fā)展,新病毒很快就能泛濫成災(zāi)并造成巨大損失,有的病毒甚至從出現(xiàn)到產(chǎn)生危害,只用了短短幾天時間。所以該技術(shù)今后將逐步成為只能查殺已知計算機病毒的技術(shù),因為它除了對那些同一病毒的變種和由同一病毒制造軟件產(chǎn)生的病毒(因為它們有相同的“遺傳基因”)有時能檢測出來外,對全新開發(fā)的病毒沒有任何防范能力,而目前能形成巨大危害的恰恰就是這些病毒。
虛擬機技術(shù)通過該技術(shù)虛擬出一個計算機環(huán)境,并在該環(huán)境中運行可疑程序,從而檢測是否有計算機病毒的存在。但該技術(shù)的缺點是一方面消耗太多資源,專業(yè)性極高;另一方面很多計算機病毒可輕易躲過,漏報率高。而且該方法在判斷某一程序是否具有病毒行為上沒有客觀可靠的標準,所以現(xiàn)在也只是作為一種輔助手段用于防病毒方面。
行為監(jiān)測技術(shù)該技術(shù)是通過對正在運行的程序的一些行為進行監(jiān)測,對可疑行為進行判斷,以期發(fā)現(xiàn)病毒。但目前該技術(shù)還沒有完善的理論指導(dǎo),在對可疑行為進行判斷時由于沒有一種客觀可靠的標準,所進行的監(jiān)測也是片面和不完備的,因此錯報、漏報多有發(fā)生,使用戶懷疑其可信度,而棄之。如果有完善的理論指導(dǎo),該技術(shù)在防計算機病毒領(lǐng)域?qū)⑹呛苡袧摿蜕Φ?。其中啟發(fā)式查毒就是這樣一種方法。該技術(shù)現(xiàn)行的方法是利用對內(nèi)存的中斷向量表或函數(shù)施以保護和檢查而檢測那些企圖通過改變中斷向量或函數(shù)而達到駐留內(nèi)存以感染其它程序的病毒,但這種方法則很容易導(dǎo)致誤報警的情況,因為很多應(yīng)用軟件也要改變中斷向量或函數(shù),這種方法就會發(fā)生誤報警,多次以后用戶就會產(chǎn)生麻痹大意思想。而且花費的代價也較大,因為要不斷對中斷向量表或函數(shù)進行檢測,占用大量的機時,且對于那些不是通過修改中斷向量或函數(shù)而駐留內(nèi)存這一途徑傳播的病毒,就不會被檢測到。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于提供一種可以主動檢測新病毒的方法,它可以及時檢測出新出現(xiàn)的病毒并及時進行防范。
所謂的病毒就是指能夠通過已感染病毒的程序的運行而將其本身通過某種途徑自我復(fù)制到其它程序的一段程序。鑒于所有病毒都具有這樣唯一的最根本共性,即要進行自我復(fù)制,針對這一共性,申請人得出一種主動檢查程序中有無病毒存在的技術(shù)方案,通過這一技術(shù)方案將能夠檢測出所有已知和未知的病毒。
本發(fā)明提供了一種利用復(fù)制環(huán)特性檢測計算機病毒的方法,包括以下步驟(1)一個對所有與寫操作有關(guān)的操作進行修改的步驟;(2)在修改步驟之后,還有一個如果發(fā)現(xiàn)不是一個寫操作則正常運行的步驟;如是寫操作則繼續(xù)進行如下步驟;(3)取得發(fā)出相關(guān)調(diào)用指令的地址和要寫的內(nèi)容的首地址、長度以及相應(yīng)程序的機內(nèi)序號的步驟;(4)根據(jù)相應(yīng)的判據(jù),判斷是否存在復(fù)制環(huán)的步驟;
(5)根據(jù)相關(guān)調(diào)用指令的地址進行相應(yīng)處理的步驟。
其中上述步驟(4)的判斷過程,具體包括以下步驟(a)判斷是否復(fù)制了包括這個復(fù)制操作在內(nèi)的代碼,如果是,則中止程序運行并做出相應(yīng)處理;如果不是,則繼續(xù)進行以下步驟;(b)判斷是否是對該程序前面某個復(fù)制操作的復(fù)制,如果是,則中止程序運行并做出相應(yīng)處理;如果不是,則保存該復(fù)制操作的地址并進行正常操作。
步驟(a)的判斷依據(jù)為是否復(fù)制了包括這個復(fù)制操作在內(nèi)的代碼;而步驟(b)的判斷依據(jù)為,第I次進行寫操作時都檢查其寫的部分是否滿足入下關(guān)系被寫部分的起始地址≤第N次寫操作發(fā)生的地址≤被寫部分的終止地址,若滿足,則表明存在復(fù)制環(huán);若不滿足,則繼續(xù)進行檢查直至第I-1次寫操作發(fā)生的地址,這里N=0,1,…,I-1。
所述相應(yīng)處理,可以包括中止程序的運行,將含病毒的代碼寫入一個新文件并將該文件通過網(wǎng)絡(luò)發(fā)到指定公司的網(wǎng)站,以便于進行分析等處理方式。
下面結(jié)合附圖,詳細描述本發(fā)明。在附圖中,其中圖1是一個流程圖,示出一個針對操作系統(tǒng)各可執(zhí)行平臺開發(fā)的相應(yīng)的監(jiān)控程序過程;圖2是一個本發(fā)明采用的CVCR函數(shù)的流程示意圖。
具體實施例方式
下面具體說明本發(fā)明的技術(shù)實施方案。
為描述此方案,我們需先引進一個新概念——自我復(fù)制環(huán),簡稱復(fù)制環(huán),其定義如下若一塊代碼,它分為n+1(n≥1)段,每段中都有且僅有一個復(fù)制操作(這樣定義,是因為如果一段中有多個復(fù)制操作,則可以把它分成多段;如果沒有,則可以與相鄰的有復(fù)制操作的段合并。該定義的目的是為了便于定義的陳述,在實際監(jiān)測中由于每個復(fù)制操作都是被依次執(zhí)行,因此必然可被如此劃分),且在i,i+1段(0≤i≤n)之間存在一種復(fù)制關(guān)系,即第i段復(fù)制第i+1段,且第n+1段對第0段進行復(fù)制,則構(gòu)成一個封閉的鏈狀復(fù)制環(huán) 其中→表示前者對后者有復(fù)制操作。此處的前后是相對復(fù)制關(guān)系來說的,復(fù)制者稱為“前者”,被復(fù)制者稱為“后者”。其中i,i+1是按復(fù)制關(guān)系排列的,而不一定是各程序段的物理次序。例如,有一塊程序,按復(fù)制關(guān)系分為五段,構(gòu)成一個復(fù)制環(huán)為 而其中各段的物理排列次序可能如下圖所示 現(xiàn)在我們稱n=0時的自我復(fù)制環(huán)為0級復(fù)制環(huán),n=i時的自我復(fù)制環(huán)為i級復(fù)制環(huán)。因為現(xiàn)在的病毒所復(fù)制的內(nèi)容都包含該復(fù)制操作的代碼在內(nèi),據(jù)此我們知道目前計算機病毒的復(fù)制環(huán)都是0級復(fù)制環(huán)。
而具體到現(xiàn)在的計算機中也可采取對所有的寫操作進行檢測,特別是對于0級復(fù)制環(huán),可以很容易地通過將寫操作在程序中發(fā)生的地址add1與被寫部分的起始地址add2及被寫部分的終止地址(其終止地址=起始地址add2+被寫部分的長度length)進行比較add2≤add1≤add2+length (1)若滿足(1)式,則表明存在0級復(fù)制環(huán)。而我們在前面已經(jīng)說過,目前的計算機病毒均為0級復(fù)制環(huán)的病毒。
而對于1級復(fù)制環(huán)以上(含1級)的病毒,則可通過如下監(jiān)測發(fā)現(xiàn)對任一程序被運行時都進行監(jiān)測,當發(fā)生第一次復(fù)制時將寫操作發(fā)生的地址保存起來,然后以后第I次進行寫操作時都檢查其寫的部分的地址addI是否滿足如下關(guān)系被寫部分的起始地址≤第一次寫操作發(fā)生的地址≤被寫部分的終止地址若滿足上述關(guān)系,則表明存在病毒復(fù)制環(huán),因為前面的各復(fù)制操作是一鏈狀關(guān)系,而此時該處復(fù)制了鏈首,所以構(gòu)成了復(fù)制環(huán),而復(fù)制環(huán)是病毒的唯一共性,因此可以判斷存在病毒復(fù)制環(huán)。若不滿足上述關(guān)系,則繼續(xù)進行檢查直至第I-1次寫操作,直至被監(jiān)測的程序被執(zhí)行完畢,如沒發(fā)現(xiàn)復(fù)制環(huán),說明本程序中不存在病毒,然后準備進行下次的程序檢查。
采用此方法進行計算機病毒檢查,就可檢查出新出現(xiàn)的計算機病毒。
對于任何操作系統(tǒng)則可通過如下方法實現(xiàn)如圖1所示,針對操作系統(tǒng)各可執(zhí)行平臺開發(fā)相應(yīng)的監(jiān)控程序,該程序必須做到第一.對該平臺所有與寫文件或?qū)懕P的有關(guān)的操作進行修改,使任何相關(guān)調(diào)用(如針對Windows的JAVA平臺開發(fā)其監(jiān)控程序,則所有的JAVA程序被執(zhí)行時)首先通過該監(jiān)控程序;第二.必須保證正確取得出相關(guān)調(diào)用指令的地址及要寫的內(nèi)容的首地址、長度;第三.保證本監(jiān)控程序總是最先執(zhí)行;第四.此處的地址及要寫的內(nèi)容的首地址均為該平臺級指令的地址。例如該平臺是VB執(zhí)行器,則地址就是發(fā)出該VB指令在其VB程序中的地址;第五.對每個程序在開始被執(zhí)行時要建立專門的數(shù)據(jù)區(qū),在程序結(jié)束時清除該數(shù)據(jù)區(qū),而CVCR則根據(jù)不同程序的機內(nèi)序號(handle)進行處理。
其中CVCR函數(shù)的流程示意圖如圖2所示。
首先置返回值為false,然后判斷是否復(fù)制了包括這個復(fù)制在內(nèi)的代碼。如果是,則表明存在0級復(fù)制環(huán),于是系統(tǒng)中止程序運行并做相應(yīng)處理,然后置返回值為true。
如果沒有上述復(fù)制,則判斷是否是對該程序前面某個復(fù)制操作的復(fù)制。如果是,則表明存在復(fù)制環(huán),于是系統(tǒng)中止程序運行并做相應(yīng)處理,然后置返回值為true。
如果不是,則保存該復(fù)制操作的地址并返回。
這樣一來,操作系統(tǒng)各可執(zhí)行平臺的監(jiān)控程序?qū)⒅回撠熆春米约旱摹伴T”,做好自己的監(jiān)控既可達到預(yù)防計算機病毒的目的。
本方法的關(guān)鍵是“復(fù)制環(huán)”的建立,這是判定計算機病毒的必要條件。
權(quán)利要求
1.一種利用復(fù)制環(huán)特性檢測計算機病毒的方法,包括以下步驟(1)一個對所有與寫操作有關(guān)的操作進行修改的步驟;(2)在修改步驟之后,還有一個如果發(fā)現(xiàn)不是一個寫操作則正常運行的步驟;如是寫操作則繼續(xù)進行如下步驟;(3)取得發(fā)出相關(guān)調(diào)用指令的地址和要寫的內(nèi)容的首地址、長度以及相應(yīng)程序的機內(nèi)序號的步驟;(4)根據(jù)相應(yīng)的判據(jù),判斷是否存在復(fù)制環(huán)的步驟;(5)根據(jù)相關(guān)調(diào)用指令的地址進行相應(yīng)處理的步驟。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟(4)的判斷過程,具體包括以下步驟(a)判斷是否復(fù)制了包括這個復(fù)制操作在內(nèi)的代碼,如果是,則中止程序運行并做出相應(yīng)處理;如果不是,則繼續(xù)進行以下步驟;(b)判斷是否是對該程序前面某個復(fù)制操作的復(fù)制,如果是,則中止程序運行并做出相應(yīng)處理;如果不是,則保存該復(fù)制操作的地址并進行正常操作。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,步驟(a)的判斷依據(jù)為是否復(fù)制了包括這個復(fù)制操作在內(nèi)的代碼;而步驟(b)的判斷依據(jù)為,第I次進行寫操作時都檢查其寫的部分是否滿足入下關(guān)系被寫部分的起始地址≤第N次寫操作發(fā)生的地址≤被寫部分的終止地址,若滿足,則表明存在復(fù)制環(huán);若不滿足,則繼續(xù)進行檢查直至第I-1次寫操作發(fā)生的地址,這里N=0,1,…,I-1。
4.根據(jù)上述任何一項權(quán)利要求所述的方法,其特征在于,所述相應(yīng)處理,可以包括中止程序的運行,將含病毒的代碼寫入一個新文件并將該文件通過網(wǎng)絡(luò)發(fā)到指定公司的網(wǎng)站,以便于進行分析等處理方式。
全文摘要
一種利用復(fù)制環(huán)特性檢測計算機病毒的方法,包括以下步驟(1)一個對所有與寫操作有關(guān)的操作進行修改的步驟;(2)在修改步驟之后,還有一個如果發(fā)現(xiàn)不是一個寫操作則正常運行的步驟;如是寫操作則繼續(xù)進行如下步驟;(3)取得發(fā)出相關(guān)調(diào)用指令的地址和要寫的內(nèi)容的首地址、長度以及相應(yīng)程序的機內(nèi)序號的步驟;(4)根據(jù)相應(yīng)的判據(jù),判斷是否存在復(fù)制環(huán)的步驟;(5)根據(jù)相關(guān)調(diào)用指令的地址進行相應(yīng)處理的步驟。根據(jù)本發(fā)明的方法,就可以及時檢測出新出現(xiàn)的病毒并及時進行防范。
文檔編號G06F11/28GK1525333SQ0315712
公開日2004年9月1日 申請日期2003年9月15日 優(yōu)先權(quán)日2003年9月15日
發(fā)明者汪曉東, 王重九 申請人:汪曉東, 王重九