日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

變形計算機(jī)病毒檢測的制作方法

文檔序號:6409703閱讀:268來源:國知局
專利名稱:變形計算機(jī)病毒檢測的制作方法
技術(shù)領(lǐng)域
本發(fā)明總體上涉及檢測計算機(jī)病毒,特別是涉及檢測變形(metamorphic)計算機(jī)病毒。
背景技術(shù)
現(xiàn)代計算機(jī)系統(tǒng)正處在計算機(jī)病毒和其它惡意代碼(maliciouscode)持續(xù)攻擊的威脅之下。病毒往往通過傳統(tǒng)途徑傳播計算機(jī)用戶向計算機(jī)系統(tǒng)插入被病毒感染的盤或其它介質(zhì)。當(dāng)計算機(jī)訪問盤上的數(shù)據(jù)時,病毒就會感染該計算機(jī)系統(tǒng)。
病毒還可通過新的途徑進(jìn)行傳播。與以前相比,現(xiàn)在有更多的計算機(jī)系統(tǒng)連接到互聯(lián)網(wǎng)和其它通信網(wǎng)絡(luò)上。這些網(wǎng)絡(luò)允許聯(lián)網(wǎng)的計算機(jī)訪問廣泛的程序和數(shù)據(jù),但是也提供了許多新的、能夠被計算機(jī)病毒借以感染計算機(jī)的途徑。例如,用戶可能把病毒當(dāng)成可執(zhí)行程序、電子郵件附件以及網(wǎng)頁上的惡意代碼等下載到計算機(jī)上。因此,普遍的經(jīng)驗(yàn)是在計算機(jī)系統(tǒng)上安裝防病毒軟件,以便檢測是否存在病毒。
一些簡單的計算機(jī)病毒會把自己的精確副本拷貝到它們感染的每個可執(zhí)行的程序文件中。當(dāng)執(zhí)行被感染的程序時,該簡單的病毒會獲取計算機(jī)系統(tǒng)的控制權(quán),并嘗試感染其它文件。如果病毒確定了要感染的目標(biāo)可執(zhí)行文件,它將把自己一個字節(jié)不差地(byte-for-byte)拷貝到目標(biāo)可執(zhí)行文件中。因?yàn)榇祟惒《驹诿看胃腥拘挛募r復(fù)制自己的同一副本,所以防病毒軟件能夠通過掃描文件,查找病毒的具體的特征字節(jié)串(例如“簽名(signature)”),來非常輕松地檢測到病毒。
計算機(jī)病毒的設(shè)計者正在不斷開發(fā)新技術(shù),以躲避防病毒軟件。例如,加密病毒就是這樣的一種技術(shù)。加密病毒包含解密程序(又稱為“解密循環(huán)(decryption loop)”)和加密的病毒體。當(dāng)感染了加密病毒的文件執(zhí)行時,解密程序獲得計算機(jī)的控制權(quán),并給加密的病毒體解密。隨后,解密程序把控制權(quán)移交給解密后的病毒體,該解密后的病毒體能夠傳播病毒。病毒通過把同一解密程序和加密的病毒體拷貝到目標(biāo)可執(zhí)行文件來傳播。雖然病毒體進(jìn)行了加密,從而隱藏起來看不見,但防病毒軟件能夠通過搜索不變的解密程序中的簽名來檢測到這些病毒。
多形性(polymorphic)加密病毒(“多形性病毒”)包含解密程序和加密的病毒體。病毒體包含靜態(tài)部分和通常稱為“變形病毒生產(chǎn)機(jī)(mutation engine)”的機(jī)器碼生成器。多形性病毒的運(yùn)行類似于加密病毒的運(yùn)行,不同點(diǎn)是多形性病毒在每次感染文件時都產(chǎn)生了新的解密程序。許多多形性病毒都使用解密程序,但是采用不同的指令順序,其中解密程序?qū)τ谒斜桓腥镜奈募碚f,在功能上是相同的。
這些各種各樣的變形使每個解密程序能夠擁有不同的簽名。因此,防病毒軟件不能通過僅僅搜索解密程序的簽名來檢測多形性病毒。相反,軟件把可能被感染的程序載入基于軟件的CPU模擬器,該CPU模擬器作為模擬的虛擬計算機(jī)進(jìn)行工作。允許所述的程序在該虛擬計算機(jī)內(nèi)自由執(zhí)行。如果程序?qū)嶋H上不包含多形性病毒,則允許解密程序?qū)Σ《倔w解密。防病毒軟件通過在虛擬計算機(jī)的虛擬內(nèi)存中搜索已解密病毒體的簽名來檢測病毒。
病毒創(chuàng)造者已經(jīng)開發(fā)出“變形”病毒,以便戰(zhàn)勝上述的基于簽名掃描的檢測技術(shù)。變形病毒沒有必要加密,但是每次感染都會改變病毒體中的指令。變形病毒通常利用的技術(shù)包括在病毒體中的每個指令后插入跳轉(zhuǎn)(jump)指令,使用不同組的等效指令來執(zhí)行某些功能,在代碼的隨機(jī)位置插入空操作(no-operation)指令等。一個復(fù)雜的變形病毒實(shí)際上反匯編目標(biāo)宿主文件,在反匯編過的宿主代碼中插入病毒代碼,然后再重新匯編宿主文件。
因此,防病毒軟件往往檢測不到變形病毒,因?yàn)闆]有靜態(tài)的簽名可供搜索。因此,本領(lǐng)域需要一種能夠可靠檢測是否存在變形病毒的技術(shù)。

發(fā)明內(nèi)容
使用寄存器簽名(register signature)來檢測變形和其它類型病毒的病毒檢測系統(tǒng)(VDS)(400)滿足了上述需求。VDS(400)優(yōu)選地包括數(shù)據(jù)模塊(410)、引擎模塊(412)、模擬模塊(412)和病毒數(shù)據(jù)庫模塊(430)。VDS(400)的操作優(yōu)選地由數(shù)據(jù)模塊(410)中存儲的P代碼指令來驅(qū)動。引擎模塊(412)包括P代碼解釋程序(416),用于進(jìn)行響應(yīng)解釋P代碼和控制VDS(400)。
模擬模塊(412)由引擎模塊(412)控制,并在擁有虛擬處理器(424)、虛擬寄存器(428)和虛擬內(nèi)存(426)的虛擬機(jī)(422)中執(zhí)行計算機(jī)程序指令。虛擬機(jī)(422)與計算機(jī)系統(tǒng)(200)上的實(shí)際硬件和軟件相隔離地執(zhí)行指令,從而虛擬機(jī)中的病毒不會感染計算機(jī)系統(tǒng)上的文件。
病毒數(shù)據(jù)庫模塊(430)優(yōu)選地存儲VDS(400)所使用的寄存器簽名,以檢測是否存在病毒。寄存器簽名描述了病毒在執(zhí)行時存儲在寄存器中的值,以及病毒存儲這些值的順序。寄存器簽名是有效的,因?yàn)橛嬎銠C(jī)程序(例如病毒)在使用一組給定的輸入進(jìn)行執(zhí)行時,將產(chǎn)生一組給定的輸出,例如寄存器值。即使對于代碼不斷改變的變形病毒,這種說法通常也是成立的。
數(shù)據(jù)模塊(410)中的P代碼指令優(yōu)選地包括文件選擇模塊(510),用于過濾計算機(jī)系統(tǒng)(200)上的文件,以確定潛在的病毒宿主文件。模擬控制模塊(520)在選定的文件中確定和選擇潛在的病毒入口點(diǎn),并且促使模擬模塊(412)模擬在入口點(diǎn)上的指令,直到到達(dá)斷點(diǎn)條件。當(dāng)模擬模塊(412)模擬指令時,建表模塊(522)構(gòu)建一個表(600),以跟蹤虛擬寄存器(428)在每一步的值。優(yōu)選地,模擬模塊(412)在每個選定的入口點(diǎn)模擬相對少量的(例如50到500個)指令。
一旦模擬到達(dá)斷點(diǎn)或以其它方式停止,病毒報告模塊(526)將分析該表,以確定它是否包含病毒數(shù)據(jù)庫模塊(430)中存儲的任何寄存器簽名。如果某個寄存器簽名匹配,則選定的文件可能包含病毒。


圖1是一個高級方塊圖,顯示擁有多個入口點(diǎn)的潛在的病毒宿主文件100。
圖2是一個高級方塊圖,顯示用于執(zhí)行病毒檢測系統(tǒng)(VDS)400的計算機(jī)系統(tǒng)200。
圖3是一個流程圖,顯示典型變形病毒在感染宿主文件100時執(zhí)行的步驟。
圖4是一個高級方塊圖,顯示根據(jù)本發(fā)明的實(shí)施例的VDS 400的各個模塊。
圖5是一個高級方塊圖,顯示VDS 400中的P代碼數(shù)據(jù)模塊410的更詳細(xì)視圖。
圖6顯示了根據(jù)本發(fā)明的示例性實(shí)施例建立的寄存器表600。
圖7是一個流程圖,顯示根據(jù)本發(fā)明的實(shí)施例的VDS 400檢測是否存在病毒的操作。
這些圖僅用于圖解描述本發(fā)明的實(shí)施例。本領(lǐng)域技術(shù)人員將非常容易地從以下說明中發(fā)現(xiàn),在不背離這里描述的本發(fā)明原理的情況下,可以使用這里圖解說明的結(jié)構(gòu)和方法的替換實(shí)施例。
具體實(shí)施例方式
為了實(shí)現(xiàn)它們被設(shè)計成要實(shí)現(xiàn)的危害,計算機(jī)病毒必須獲得計算機(jī)的中央處理單元(CPU)的控制權(quán)。病毒通常通過把它們自己附加到可執(zhí)行文件(“宿主文件”)上,并修改宿主文件的可執(zhí)行映像,以把CPU的控制權(quán)轉(zhuǎn)交給病毒代碼,從而獲得這一控制權(quán)。病毒通過執(zhí)行自己的指令,然后調(diào)用初始指令將控制權(quán)交回宿主文件,從而隱藏自己的存在。如此處所用,術(shù)語“病毒”還包括其它形式的惡意代碼,如“蠕蟲”和“特洛伊木馬”。它們可以滲透和感染計算機(jī)系統(tǒng)。
病毒使用不同的技術(shù)來感染宿主文件。例如,一種簡單的病毒總是將相同的病毒體插入文件中。加密病毒通過向宿主文件中插入不變的解密程序和加密的病毒體來感染文件。多形性加密病毒(多形性病毒)與加密病毒相似,不同點(diǎn)是多形性病毒在每次感染文件時會產(chǎn)生新的解密程序。變形病毒不需要加密,但是它在每次感染文件時會重新安排病毒體中的指令順序,以產(chǎn)生另一種不同的、但功能等同的病毒。病毒可能使用上述技術(shù)的組合。雖然本發(fā)明的優(yōu)勢是它能夠可靠地檢測變形病毒,但應(yīng)當(dāng)理解,本發(fā)明可用于檢測任何類型的病毒。
病毒通常通過在或接近文件入口點(diǎn)的地方附加或改變代碼來感染宿主文件?!叭肟邳c(diǎn)”是指文件中的任何指令指向的指針,或文件中的其它數(shù)據(jù),病毒可以修改這些數(shù)據(jù)而獲得文件所在的計算機(jī)系統(tǒng)的控制權(quán)。入口點(diǎn)通常通過與文件中某個任意點(diǎn)(arbitrary point)的偏移量來識別。某些入口點(diǎn)位于文件或區(qū)域的開始,因此在執(zhí)行文件或區(qū)域時始終被調(diào)用。例如,入口點(diǎn)可以是當(dāng)執(zhí)行宿主文件或調(diào)用文件中的功能時所執(zhí)行的第一條指令。其它入口點(diǎn)可以包括能夠被病毒修改的文件深處的單指令。例如,入口點(diǎn)可以被修改用于調(diào)用病毒代碼的CALL或JMP指令。一旦病毒通過入口點(diǎn)攫取了計算機(jī)系統(tǒng)的控制權(quán),病毒通常會感染該系統(tǒng)或與主系統(tǒng)聯(lián)網(wǎng)的其它系統(tǒng)上的其它文件。
圖1是一個高級方塊圖,顯示擁有多個能夠如上所述被病毒感染的入口點(diǎn)的潛在病毒宿主文件100。在圖1所示的例子中,可執(zhí)行文件是一個Win32可移植可執(zhí)行(PE)文件,用于結(jié)合基于MICROSOFT WINDOWS的操作系統(tǒng)(OS)而使用,如WINDOWSME、WINDOWS NT、WINDOWS 2000或WINDOWS XP。通常,所示的文件100是表示文件是可執(zhí)行文件的.EXE類型或表示文件是動態(tài)鏈接庫的.DLL。然而,本發(fā)明可以用于任何文件,而不僅限于圖1所示的文件類型。例如,APPLE MACINTOSH文件與Win32文件有許多相似之處,本發(fā)明同樣適用于這些文件。
文件100分成多個包含代碼或數(shù)據(jù)且大小為4千字節(jié)(KB)的段。MS-DOS段102包含MS-DOS報頭102,并以字符“MZ”作為標(biāo)記。該段102包含一個小的可執(zhí)行程序103,設(shè)計用于當(dāng)可執(zhí)行文件在不支持的OS(例如MS-DOS)中運(yùn)行時,顯示錯誤消息。該程序103是文件100的一個入口點(diǎn)。MS-DOS段102還包含一個與PE段106的起點(diǎn)108保持相關(guān)偏移量的字段104。該字段(104)是文件100的另一個入口點(diǎn)。
PE段106以字符“PE”作為標(biāo)記且?guī)в幸粋€包含關(guān)于文件100的基本信息的數(shù)據(jù)結(jié)構(gòu)110。數(shù)據(jù)結(jié)構(gòu)110具有許多描述文件100各個方面的數(shù)據(jù)字段。
下面的段112帶有一個段表114。段表114包含有關(guān)文件100中每個段的信息,包括段的類型、大小和在文件100中的位置。例如,段表114中的項(xiàng)目表示段是否具有代碼或數(shù)據(jù),段是否可讀、可寫和/或可執(zhí)行。段表114中的每個項(xiàng)目都描述了可以擁有多個、一個或沒有入口點(diǎn)的段。
文本段116帶有由編譯程序或匯編程序產(chǎn)生的通用代碼。數(shù)據(jù)段118帶有在編譯時初始化的全局和靜態(tài)變量。
導(dǎo)出段120包含一個導(dǎo)出表122,其識別由文件100導(dǎo)出的、供其它程序使用的功能。EXE文件可能不導(dǎo)出任何功能,但是DLL文件通常會導(dǎo)出一些功能。導(dǎo)出表122帶有功能名、入口點(diǎn)地址關(guān)于被導(dǎo)出的功能的導(dǎo)出順序值。入口點(diǎn)地址通常指向文件100中的其它段。導(dǎo)出表122中列出的每個被導(dǎo)出的功能都是到文件100中的入口點(diǎn)。
導(dǎo)入段124擁有一個導(dǎo)入表126,其識別文件100導(dǎo)入的功能。導(dǎo)入表126中的每個項(xiàng)目通過名稱識別外部的DLL和導(dǎo)入的功能。當(dāng)文本段116中的代碼調(diào)用其它模塊的功能時,如外部DLL文件,調(diào)用指令將控制權(quán)移交給也在文本段116中的JMP指令。JMP指令接著將調(diào)用導(dǎo)向?qū)氡?26中的一個位置。JMP指令和導(dǎo)入表126中的項(xiàng)目表示到文件100中的入口點(diǎn)。
圖2是一個用于存儲和執(zhí)行宿主文件100和病毒檢測系統(tǒng)(VDS)400的計算機(jī)系統(tǒng)200的高級方塊圖。圖中至少一個處理器202連接到總線204上。另外,內(nèi)存206、存儲設(shè)備208、鍵盤210、圖形適配器212、定點(diǎn)設(shè)備214和網(wǎng)絡(luò)適配器216也連接到總線204上。顯示器218連接到圖形適配器212。
處理器202可以是任何通用處理器,如INTEL x86、SUNMICROSYSTEMS SPARC或兼容POWERPC的CPU。如本領(lǐng)域中所知,處理器202擁有多個寄存器,用于存儲指令、數(shù)據(jù)、地址和其它信息。存儲設(shè)備208可以是任何能夠存儲數(shù)據(jù)的設(shè)備,如硬盤、壓縮盤只讀存儲器(CD-ROM)、DVD或固態(tài)存儲器設(shè)備。如本領(lǐng)域中所知,存儲設(shè)備208通??纱鎯Χ鄠€不同類型的文件,包括潛在的病毒宿主文件,如圖1所示。內(nèi)存206存儲處理器202所使用的指令和數(shù)據(jù)。定點(diǎn)設(shè)備214可以是鼠標(biāo)、跟蹤球或其它類型的定點(diǎn)設(shè)備,并與鍵盤210結(jié)合使用,以便向計算機(jī)系統(tǒng)200輸入數(shù)據(jù)。圖形適配器212在顯示器218上顯示圖像和其它信息。網(wǎng)絡(luò)適配器216將計算機(jī)系統(tǒng)200連接到局域網(wǎng)或廣域網(wǎng)上。
如本領(lǐng)域中所知,計算機(jī)系統(tǒng)200適合于執(zhí)行用于提供這里所述的功能的計算機(jī)程序模塊。如這里的用法,術(shù)語“模塊”是指計算機(jī)程序邏輯和/或任何用于提供指定功能的硬件或電路。因此,模塊能夠以硬件、固件和/或軟件形式實(shí)現(xiàn)。提供VDS 400的功能的程序模塊優(yōu)選地存儲在存儲設(shè)備208中。
圖3是一個流程圖,顯示典型變形病毒在感染宿主文件時執(zhí)行的步驟。所示的步驟只是病毒感染的示例,并不代表任何特殊病毒。最初,病毒在計算機(jī)系統(tǒng)200上執(zhí)行310。例如,病毒可以在計算機(jī)系統(tǒng)200指定或調(diào)用以前被感染的文件中的功能時執(zhí)行。
病毒識別312要感染的新宿主文件。例如,病毒可能搜索匹配字符串“*.EXE”的文件,以確定新的宿主文件候選者。然后,病毒篩選候選文件,以確定特定的新宿主文件100。可以根據(jù)文件的大小、名稱、文件是否已經(jīng)被該病毒感染等來篩選文件。
病毒將其病毒代碼插入314新的宿主文件中。例如,病毒可以將病毒體附加到段末尾的空閑空間內(nèi),或?qū)⒉《倔w加入全新的段中。在此步驟期間,病毒使用一種或多種技術(shù)來修改其當(dāng)前的病毒代碼,以產(chǎn)生新的病毒代碼,然后插入到文件100中。病毒可用于修改其代碼的技術(shù)包括插入和/或刪除跳轉(zhuǎn)(“JMP”)和空操作(“NOP”)指令,替換不同組的等效指令,以執(zhí)行某些任務(wù),如寄存器減法(registersubtraction)或置零(zeroing),和/或替代某些指令所使用的寄存器。
病毒通常修改316宿主文件100中的段表114,以支持(accountfor)添加的病毒代碼。例如,病毒可能更改段表114中的大小項(xiàng)目,以支持添加的病毒代碼。同樣,病毒可能添加項(xiàng)目,用于病毒所添加的新段。如果需要,病毒可以將被感染的段標(biāo)記為可執(zhí)行和/或在不使用的字段內(nèi)放置一個值,以謹(jǐn)慎地將文件標(biāo)記為被感染,并防止病毒再次感染文件100。
此外,病毒通常還改變318宿主文件100的入口點(diǎn),以調(diào)用病毒代碼。例如,病毒可以通過覆寫字段104中的值來完成這個步驟,其中字段104保持與PE段106的起點(diǎn)108的相關(guān)偏移量,和與存儲在文件中別處的病毒代碼的相關(guān)偏移量?;蛘?,病毒可以將導(dǎo)出表122中的項(xiàng)目改成指向病毒代碼段而不是導(dǎo)出的功能。病毒還可以修改文件中任何位置的現(xiàn)有JMP或CALL指令的目的地,以指向文件中別處的病毒代碼的位置,從而有效地將被修改的指令變成病毒的新入口點(diǎn)。
特別復(fù)雜的病毒能夠使用非常復(fù)雜的技術(shù)來感染宿主文件,這些技術(shù)在一些方面與上述的技術(shù)不同。例如,一個復(fù)雜的病毒在其病毒體中包括反匯編引擎,使用它把宿主文件反匯編成最小的單元。然后,病毒以下述的方式來感染被反匯編的宿主文件把代碼塊移動到用于病毒代碼的空閑空間,插入其修改過的病毒體,重新生成代碼和數(shù)據(jù)引用(reference),包括位置信息,然后重建文件。另一種復(fù)雜的病毒檢測宿主計算機(jī)系統(tǒng)200上是否有編譯程序。如果有編譯程序,病毒則使用它來重新編譯病毒源代碼的經(jīng)過稍微修改后的版本,從而產(chǎn)生一個全新的病毒體。然后,病毒把新病毒體插入宿主文件。其它變形病毒可以使用除了這里描述的之外或不是這里描述的其它技術(shù)來修改病毒體和把病毒體插入宿主文件中。
圖4是一個高級方塊圖,顯示根據(jù)本發(fā)明的實(shí)施例的用于檢測在計算機(jī)系統(tǒng)200中的宿主文件或其它地方是否有病毒的VDS 400的模塊。圖4只顯示了用于描述本發(fā)明的VDS 400的模塊,應(yīng)當(dāng)理解,本發(fā)明的實(shí)施例可以包括在這里沒有描述的其它模塊。此外,本發(fā)明的實(shí)施例可以沒有這里描述的模塊,和/或采用與這里的描述不同的方式在多個模塊間分布所描述的功能。
VDS 400包括P代碼數(shù)據(jù)模塊410、引擎模塊412、模擬模塊414和病毒數(shù)據(jù)庫模塊430。P代碼數(shù)據(jù)模塊410優(yōu)選地帶有P代碼指令模塊,用于控制VDS 400的操作,以檢測是否存在病毒。像這里的用法一樣,“P代碼”是指用于向VDS 400提供數(shù)據(jù)驅(qū)動功能的程序代碼。優(yōu)選地,病毒研究者通過以任何計算機(jī)語言編寫指令,然后把這些指令編譯成P代碼,從而在數(shù)據(jù)模塊410中創(chuàng)建P代碼指令。此外,P代碼的功能可以由其它數(shù)據(jù)驅(qū)動的技術(shù)來代替。例如,程序代碼可以以除P代碼以外的表示法來存儲,或者狀態(tài)機(jī)可以與P代碼結(jié)合或取代P代碼來使用,以便提供確定性的數(shù)據(jù)驅(qū)動的病毒檢測。
本發(fā)明的優(yōu)選實(shí)施例使用數(shù)據(jù)驅(qū)動的技術(shù)來控制VDS 400的操作,因?yàn)檫@些技術(shù)允許VDS的功能能夠通過更新P代碼和/或其它數(shù)據(jù)來更新。例如,VDS 400可以通過更新P代碼而非其它模塊來更新,以檢測新病毒。因此,使用數(shù)據(jù)驅(qū)動的技術(shù)簡化了更新數(shù)以千計或數(shù)百萬的、安裝在“現(xiàn)場”中的計算機(jī)系統(tǒng)上的VDS 400的任務(wù)。然而,本發(fā)明的其它替代實(shí)施例通過非數(shù)據(jù)驅(qū)動的技術(shù)實(shí)現(xiàn)了所描述的功能。
引擎模塊412優(yōu)選地響應(yīng)于P代碼數(shù)據(jù)模塊410中的P代碼來控制VDS 400的操作。引擎412優(yōu)選地包含一個P代碼解釋程序416,用于解釋P代碼,其從而反過來控制引擎412的操作。在其它替代實(shí)施例中,數(shù)據(jù)模塊410帶有除P代碼之外的格式的指令,引擎414配備了一個模塊,用于以關(guān)聯(lián)格式解釋或編譯指令。
P代碼解釋程序416優(yōu)選地包括特定的P代碼功能調(diào)用,稱為“原語”418。例如,原語418可以是以P代碼或固有語言編寫,和/或集成到解釋程序416本身之中。原語418本質(zhì)上是可用于檢查能夠被其它P代碼調(diào)用的宿主文件和虛擬機(jī)422的功能。例如,原語418執(zhí)行諸如打開文件以便閱讀、關(guān)閉文件、置零(zero out)存儲單元(memorylocation)、截斷(truncate)存儲單元、定位文件中的導(dǎo)出、確定文件的類型、尋找功能起點(diǎn)的偏移量等功能。取決于其中正在使用VDS 400的計算機(jī)或操作系統(tǒng),原語418所執(zhí)行的功能可以不同。例如,在運(yùn)行MACINTOSH操作系統(tǒng)的計算機(jī)系統(tǒng)中可能使用與運(yùn)行WINDOWS操作系統(tǒng)版本的計算機(jī)系統(tǒng)不同的原語。在替代實(shí)施例中,一些或全部原語可以存儲在P代碼數(shù)據(jù)模塊410中,而不是解釋程序416中。
模擬模塊414優(yōu)選地適用于在引擎模塊412的指導(dǎo)下,在虛擬機(jī)中執(zhí)行宿主文件中的計算機(jī)程序指令。模擬模塊414包括一個用于設(shè)置虛擬機(jī)422的控制程序(CP)模塊,虛擬機(jī)422擁有虛擬處理器424、虛擬內(nèi)存426和一組虛擬寄存器428(通常是虛擬處理器的一部分)。虛擬機(jī)422能夠模擬32位MICROSOFT WINDOWS環(huán)境、APPLEMACINTOSH環(huán)境或希望模擬的任何其它硬件和/或軟件環(huán)境。虛擬機(jī)422使用虛擬處理器424來執(zhí)行虛擬內(nèi)存426中的指令,與計算機(jī)系統(tǒng)200上的實(shí)際硬件和軟件相隔離。從而,模擬模塊414所執(zhí)行的病毒或其它惡意代碼不會感染計算機(jī)系統(tǒng)200。
病毒數(shù)據(jù)庫模塊430優(yōu)選地存儲VDS 400用于確定文件是否被病毒感染的數(shù)據(jù)。在一種實(shí)施例中,病毒數(shù)據(jù)庫模塊430存儲VDS可以檢測到的描述已知病毒的數(shù)據(jù)。對于每個病毒,數(shù)據(jù)庫模塊430優(yōu)選地存儲描述病毒的感染特征的數(shù)據(jù)432,描述如何檢測是否存在病毒的數(shù)據(jù)43,;以及描述如何修復(fù)被病毒感染的文件(如果可能的話)的數(shù)據(jù)436。在一種實(shí)施例中,病毒數(shù)據(jù)庫模塊430還存儲其它數(shù)據(jù),如表示可用于檢測未知病毒的特征的數(shù)據(jù)。
在一種實(shí)施例中,病毒數(shù)據(jù)庫模塊430存儲的感染特征432包括病毒留下的、表示病毒已經(jīng)感染了文件的標(biāo)記。通常,病毒會在文件中留下這樣的標(biāo)記,以避免重復(fù)感染相同的文件。然而,標(biāo)記也可能自然地出現(xiàn),因此不能只依賴它們來表示是否存在病毒。感染特征432還描述了病毒所感染的文件的類型,病毒如何感染文件等。文件選擇模塊510優(yōu)選地使用這些特征來確定文件是否可能寄住病毒,下面將更詳細(xì)地描述文件選擇模塊510。
在優(yōu)選的實(shí)施例中,病毒數(shù)據(jù)庫模塊430中的數(shù)據(jù)434描述了如何根據(jù)寄存器值來檢測是否存在病毒。如上所述,變形病毒通常沒有可被用來檢測病毒的固定指令順序。而且,變形病毒通常用一個或多個用于執(zhí)行相同功能的不同指令來代替原有指令,從而實(shí)現(xiàn)指令的多形性。因此,變形病毒的給定分段(例如病毒中的功能、程序或模塊)將按一組固定的輸入來行動,以產(chǎn)生一組固定的輸出。
考慮在第一代擁有以下指令的變形病毒MOV BP,9090MOV AX,9192XOR BX,BXPUSH AX前兩個指令分別將值9090和9192放入寄存器BP和AX。第三個指令將BX寄存器的值置為零,且第四個指令將值9192推到堆棧上。
假定第二代病毒把執(zhí)行這些功能的指令改成MOV BP,B0A0SUB BP,B0A2ADD BP,9194SUB BP,102MOV AX,9092ADD AX,100XOR BX,BXPUSH AX這些指令與第一代病毒中的指令有了很大的不同。不過,這些指令完成與第一代指令相同的任務(wù),也就是將值9090放入寄存器BP,將寄存器BX的值置零,且將值9192從寄存器AX推到堆棧上。
雖然本例中的兩代病毒使用了相同的寄存器,但是其它病毒可能會改變不同代所使用的寄存器。然而,如果給定一組相同的輸入,則相同病毒的所有代通常會以相同的順序存儲相同的值。因此,可以利用病毒存儲在寄存器中的值以及病毒存儲這些值的順序來檢測是否存在病毒。為了便于描述,將病毒放入寄存器的值集合和/或這些值在寄存器中放入的順序稱為病毒的“寄存器簽名”。寄存器簽名優(yōu)選地由病毒研究者開發(fā),他們分析病毒的功能行為,并確定能夠高度可靠地表示病毒是否存在的簽名。
寄存器簽名不同于傳統(tǒng)的防病毒軟件所使用的常規(guī)“簽名”,因?yàn)榧拇嫫骱灻R別病毒代碼所產(chǎn)生的輸出,而傳統(tǒng)的簽名是確認(rèn)病毒代碼本身。然而,在本發(fā)明的優(yōu)選實(shí)施例中,寄存器簽名也可以指定一個或多個可能出現(xiàn)在病毒代碼中或由病毒執(zhí)行的操作代碼(opcode)。允許寄存器簽名中包含操作代碼增強(qiáng)了本發(fā)明檢測病毒的能力,因?yàn)樗鼮椴《狙芯空咛峁┝溯^大的靈活性來微調(diào)(fine-tuning)寄存器簽名,以識別特殊的病毒。
病毒數(shù)據(jù)庫模塊430優(yōu)選地提供了病毒的寄存器簽名,作為期望病毒滿足的一個或多個謂詞(predicate)的列表。列表中的項(xiàng)目優(yōu)選地以先后順序排列,意味著病毒被期望在滿足后面的謂詞之前,先要滿足前面列出的謂詞。例如,在一種實(shí)施例中,上述樣本病毒的寄存器簽名如下[REGISTER_SIGNATURE_BEGIN]regBP=9090regAX=9192regBX=0 在本例中,標(biāo)記“[REGISTER_SIGNATURE_BEGIN]”和“[REGISTER_SIGNATURE_END]”分別表示簽名的開始和結(jié)束。標(biāo)記之間的項(xiàng)目每個都包含一個謂詞。在本例中,每個謂詞都指定了一個特定的寄存器和一個該寄存器必須包含以便滿足該謂詞的值。本例中的寄存器是BP、AX和BX,且各自的值分別是9090、9192和0。因而,這個寄存器簽名匹配上述的樣本病毒。
由于變形病毒經(jīng)常改變指令所使用的寄存器,本發(fā)明的優(yōu)選實(shí)施例允許謂詞使用通配符來指定寄存器。此外,優(yōu)選的實(shí)施例還允許謂詞指定多個等同的寄存器值。例如,考慮以下寄存器簽名[REGISTER_SIGNATURE_BEGIN]regBP=9090,regSP=9090regAX=9192,regBX=1234regBX=0,regCX=0reg??=5678[REGISTER_SIGNATURE_END]在此簽名中,如果寄存器BP或寄存器SP包含值9090,則滿足第一個謂詞。如果寄存器AX包含值9192或如果寄存器BX包含值1234,則滿足第二個謂詞。如果寄存器BX或寄存器CX包含值0,則滿足第三個謂詞。最后一個謂詞使用通配符“??”來指定寄存器,并且如果任何寄存器包含值5678,則它被滿足。
在一種實(shí)施例中,寄存器簽名可以使用通配符和邏輯表達(dá)式來指定寄存器中存儲的值。例如,謂詞可以陳述“regBX?。?,”意思是如果寄存器BX的值不是0,則滿足該謂詞;或者陳述“regBX=0&regCX=1234,”意思是如果寄存器BX的值是零和寄存器CX的值是1234,則滿足該謂詞。類似地,謂詞也可以陳述“regCX=F??A,”意思是如果寄存器CX包含以“F”開頭和以“A”結(jié)尾的值,則滿足該謂詞。寄存器簽名也可以陳述如果寄存器中有多個值中的一個,則滿足謂詞。例如,如果寄存器BX包含值0011或值A(chǔ)00D,那就滿足了謂詞“regBX=0011,A00D?!奔拇嫫骱灻械闹^詞的更多變化對于本領(lǐng)域技術(shù)人員來說是顯而易見的。
此外,本發(fā)明優(yōu)選地允許寄存器簽名以簽名指定寄存器的相同方式來指定操作代碼。例如,寄存器簽名可以陳述“OPCODE=8B1A,”意思是如果處理器執(zhí)行的操作代碼是8B1A,則滿足該謂詞。由于寄存器簽名是以相同的方式指定操作代碼和寄存器值,這里使用的術(shù)語“寄存器”和“虛擬寄存器”在任何適當(dāng)?shù)臅r候也是指操作代碼。
病毒數(shù)據(jù)庫430優(yōu)選地包含寄存器簽名和指定如何使用寄存器簽名來檢測文件中的病毒的其它數(shù)據(jù)。在一種實(shí)施例中,這些數(shù)據(jù)包括指定如何模擬計算機(jī)程序指令以使病毒現(xiàn)形的模擬參數(shù)。取決于實(shí)施例和/或病毒,這些參數(shù)可以指定虛擬機(jī)422的初始狀態(tài),宿主文件中開始模擬的起點(diǎn),要模擬的指令數(shù)量,如何響應(yīng)斷點(diǎn)或異常,對應(yīng)于寄存器簽名要跟蹤的虛擬寄存器等等。此信息的一部分或全部可以被指定為默認(rèn)值。在一種實(shí)施例中,虛擬機(jī)422的默認(rèn)初始狀態(tài)是所有虛擬寄存器428的值為零。
病毒數(shù)據(jù)庫模塊430中的、描述如何修復(fù)被感染的文件的數(shù)據(jù)436通常高度特定于病毒的類型。這些數(shù)據(jù)優(yōu)選地由病毒研究者開發(fā),他們研究病毒,并確定將被感染的文件和計算機(jī)系統(tǒng)恢復(fù)到原始狀態(tài)的途徑。某些病毒將文件和/或計算機(jī)系統(tǒng)破壞得無法修復(fù),如果是這種情況,數(shù)據(jù)庫模塊430中的數(shù)據(jù)會優(yōu)選地指出。
圖5是顯示P代碼數(shù)據(jù)模塊410的更詳細(xì)視圖的高級方塊圖。P代碼數(shù)據(jù)模塊410的實(shí)施例可以包含與結(jié)合圖5而描述的模塊不同或附加的模塊,而功能可能會以與這里的描述不同的方式分布在模塊上。
文件選擇模塊510優(yōu)選地包含P代碼,用于選擇計算機(jī)系統(tǒng)200上的潛在宿主文件,以檢查是否存在病毒。一般而言,文件選擇模塊510過濾計算機(jī)系統(tǒng)200上的文件,以只選擇容易被病毒感染的文件。在一種實(shí)施例中,文件選擇模塊510對每個文件執(zhí)行一次或多次測試,且只有通過每次測試的那些文件才會被指定為“容易被病毒感染?!崩?,這些測試可能包括確定文件是否包含可執(zhí)行指令(例如文件是否擁有“.EXE”或“.DLL”擴(kuò)展名),文件是不是PE文件,文件是否包含與已知病毒感染相一致的標(biāo)記,文件的大小是否值得懷疑;文件的內(nèi)部特征是否指出可能的病毒感染等。
在一種實(shí)施例中,VDS 400中的其它模塊適用于識別計算機(jī)系統(tǒng)200上的文件,并利用文件選擇模塊510來確定文件是否容易感染。例如,其它模塊可以被配置為監(jiān)測存儲設(shè)備208上的文件何時被訪問,然后激活文件選擇模塊510來處理文件。在另一個例子中,其它模塊可以被配置為遞歸地搜索存儲設(shè)備208上的文件,并利用文件選擇模塊510來檢查每個遇到的文件。在其它實(shí)施例中,這兩個例子中描述的功能由文件選擇模塊510自己提供。
P代碼數(shù)據(jù)模塊410優(yōu)選地包括一個模擬控制模塊520。該模塊520優(yōu)選地包含代碼,用于識別和選擇文件中的潛在病毒入口點(diǎn),并在每個選定的點(diǎn)上模擬文件中的指令。雖然模擬控制模塊520的優(yōu)選實(shí)施例只選擇文件中的一些位置作為的潛在入口點(diǎn),但該模塊的一種實(shí)施例將文件中的每個指令或文件一些區(qū)域中的每個指令作為的潛在入口點(diǎn)。模擬控制模塊520訪問病毒數(shù)據(jù)庫模塊430,以確定模擬的參數(shù),并且與模擬模塊414中的控制程序420進(jìn)行交互,以便根據(jù)參數(shù)進(jìn)行模擬。在一種實(shí)施例,模擬控制模塊520帶有模擬參數(shù),而不是病毒數(shù)據(jù)庫430。
P代碼數(shù)據(jù)模塊410還優(yōu)選地包括一個建表程序模塊522。此模塊522優(yōu)選地包含用于建表的代碼,該表在給定指令模擬期間跟蹤虛擬寄存器428和操作代碼的狀態(tài)。在優(yōu)選實(shí)施例中,該表只跟蹤操作代碼和虛擬寄存器的子集。要跟蹤的寄存器子集優(yōu)選地由存儲在病毒數(shù)據(jù)庫430中數(shù)據(jù)指定,盡管本發(fā)明的其它實(shí)施例可以使用其它技術(shù)來指定寄存器。VDS 400優(yōu)選地將表存儲在模擬模塊414中或VDS中的模塊可以訪問到的計算機(jī)系統(tǒng)200的其它位置。
圖6顯示了根據(jù)本發(fā)明的示例性實(shí)施例的寄存器表600。優(yōu)選地,表600有一個計算模擬迭代的列612(即計算虛擬機(jī)422模擬的指令數(shù)量)。在一種實(shí)施例中,該列612只保存模擬指令的計數(shù)。在其它實(shí)施例中,該列612跟蹤在模擬的每個步驟中的虛擬指令指針寄存器的值。
表600還優(yōu)選地包括一~N列614,用于跟蹤在模擬的每個步驟中的指定虛擬寄存器428中的值。所示的表600的第一行618顯示在所有虛擬寄存器中的值為零,這是因?yàn)楸景l(fā)明的優(yōu)選實(shí)施例是在寄存器處于此狀態(tài)時開始模擬。虛擬機(jī)422模擬的指令致使寄存器在后來的迭代中具有不同的值。表400中的另一列616指定了虛擬機(jī)422在每次迭代時執(zhí)行的指令的操作代碼。
雖然所示的表600中的虛擬寄存器有32位,但是在實(shí)際的實(shí)施例中,每一列中的項(xiàng)目所具有的數(shù)據(jù)量可能是不同的,這取決于該列所跟蹤的數(shù)據(jù)。例如,在與特定虛擬寄存器有關(guān)的列中的項(xiàng)目優(yōu)選地具有等于相關(guān)寄存器寬度的數(shù)據(jù)量。在圖6的表600內(nèi)的項(xiàng)目中顯示的值只是范例并不代表虛擬機(jī)422的特定模擬。
表600的總體大小取決于本發(fā)明的特定實(shí)施例。在一種實(shí)施例中,表的總體大小小于64K。在一種實(shí)施例中,如果迭代數(shù)量超過表的行數(shù),建表模塊522繞回到表600的起點(diǎn),并繼續(xù)填充表項(xiàng)目。
返回到圖5,P代碼數(shù)據(jù)模塊410還優(yōu)選地包括一個斷點(diǎn)條件模塊524。該模塊524優(yōu)選地指定模擬的斷點(diǎn)和其它停止條件。優(yōu)選地,模擬控制模塊520利用斷點(diǎn)條件模塊524在某些點(diǎn)上停止模擬。
在一種實(shí)施例中,斷點(diǎn)條件模塊524指定多個將在停止前模擬的指令。優(yōu)選地,將斷點(diǎn)配置為在相對少量的指令后停止模擬。例如,在一種實(shí)施例中,斷點(diǎn)在50-500個指令后停止模擬。相比之下,典型的基于模擬的病毒檢測軟件在到達(dá)斷點(diǎn)之前可以模擬超過1百萬個指令。
在另一種實(shí)施例中,斷點(diǎn)條件模塊524指定一種虛擬機(jī)狀態(tài),在該狀態(tài)時模擬應(yīng)停止。在另一種實(shí)施例中,模塊524指定了一組因素組合,用于確定是否停止模擬。例如,斷點(diǎn)條件模塊524可以指定如果模擬了超過75個指令且BP寄存器具有值“9090,”則模擬應(yīng)停止。在另一個例子中,斷點(diǎn)條件模塊524可以指定每100個指令后應(yīng)出現(xiàn)一個斷點(diǎn),直到模擬的指令總數(shù)超過指定的最大值。
在一種實(shí)施例中,斷點(diǎn)條件模塊524存儲用于某些宿主文件和/或病毒的分開斷點(diǎn)條件。例如,在一種實(shí)施例中,模塊524存儲在文件在標(biāo)準(zhǔn)的MICROSOFT WINDOWS分布中的時候要使用的斷點(diǎn)條件。類似地,在一種實(shí)施例中,模塊524存儲當(dāng)VDS 400正在檢查是否存在特定病毒時要使用的斷點(diǎn)條件。在一種實(shí)施例中,斷點(diǎn)條件模塊524還存儲默認(rèn)的斷點(diǎn),以便在沒有用于給定文件和/或病毒的特定斷點(diǎn)條件時使用。
P代碼數(shù)據(jù)模塊410還優(yōu)選地包括一個病毒報告模塊526,存儲用于檢測文件中是否存在病毒的代碼。優(yōu)選地,病毒報告模塊526分析建表模塊522所創(chuàng)建的表600,以確定它是否包含病毒數(shù)據(jù)庫模塊430中存儲的任何寄存器簽名。在一種實(shí)施例中,如果病毒報告模塊526在表中發(fā)現(xiàn)一個起點(diǎn),從該起點(diǎn)開始寄存器簽名中的每個謂詞都被滿足,那么表600包含一個寄存器簽名。
如果病毒報告模塊526將寄存器簽名與表600中的數(shù)據(jù)相匹配,則該模塊優(yōu)選地向VDS 400報告可能的病毒檢測。作為響應(yīng),VDS 400中的其它模塊優(yōu)選地執(zhí)行行動,例如向計算機(jī)用戶通知出現(xiàn)病毒,隔離文件,并嘗試修復(fù)受感染的文件和/或計算機(jī)系統(tǒng)。如果病毒報告模塊526不匹配寄存器簽名與表600中的數(shù)據(jù),則模塊將優(yōu)選地向VDS400報告此否定結(jié)果。
圖7是一個流程圖,顯示根據(jù)本發(fā)明的實(shí)施例的VDS 400檢測是否存在病毒的操作。優(yōu)選地,用于使VDS 400能夠以所述方式操作的P代碼存儲在P代碼數(shù)據(jù)模塊410中。因?yàn)椴僮魇菙?shù)據(jù)驅(qū)動的,所以本發(fā)明的其它實(shí)施例可以執(zhí)行與這里的描述不同的或額外的步驟。此外,這些步驟可以以不同的順序執(zhí)行。
VDS 400檢查計算機(jī)系統(tǒng)200上的文件,以確定容易被病毒感染的文件。優(yōu)選地,VDS 400選擇710單個文件,用于進(jìn)一步檢查。另一種情況是,VDS 400從在計算機(jī)系統(tǒng)200上執(zhí)行的其它模塊接收對文件的引用,并使該文件接受進(jìn)一步檢查。
VDS 400檢查選定的文件,以便識別712病毒的潛在入口點(diǎn)。如上所述,文件中有許多位置可被病毒當(dāng)成入口點(diǎn)利用。VDS 400選擇一個入口點(diǎn)并根據(jù)指定的模擬參數(shù),在該入口點(diǎn)模擬714指令。VDS400還建立了716一個寄存器表,用于跟蹤在模擬指令時一些虛擬寄存器428的內(nèi)容。VDS 400連續(xù)模擬指令和建立寄存器表,直到模擬到達(dá)斷點(diǎn)。模擬文件中的指令和填充(populating)寄存器表的過程在這里稱為“跟蹤”或“微跟蹤(micro-tracing)?!?
隨后,VDS 400優(yōu)選地分析718寄存器表,以確定它是否包含表示病毒的寄存器簽名。在一種實(shí)施例中,VDS 400將病毒數(shù)據(jù)庫430中的所有寄存器簽名與寄存器表相比較。在另一種實(shí)施例中,取決于諸如所模擬的文件、入口點(diǎn)、斷點(diǎn)等變量,VDS 400只把寄存器簽名的子集與寄存器表進(jìn)行比較。
如果720 VDS 400檢測到病毒,則它優(yōu)選地通過通知計算機(jī)用戶、清除文件等方式來對病毒作出響應(yīng)722。取決于斷點(diǎn),如果沒有檢測到病毒(此步驟沒有在圖7中顯示),VDS 400可以繼續(xù)微跟蹤入口點(diǎn)。例如,如果VDS已經(jīng)模擬了100個指令,且斷點(diǎn)指定每100個指令應(yīng)有一次中斷,直到模擬完最多1000個指令,那么VDS繼續(xù)微跟蹤。
如果VDS 400完成對入口點(diǎn)的微跟蹤而沒有檢測到病毒,則VDS確定722選定的文件中是否有更多的潛在入口點(diǎn)需要微跟蹤。如果有,VDS 400開始在下一個潛在入口點(diǎn)進(jìn)行新的微跟蹤。
當(dāng)VDS 400已經(jīng)微跟蹤過所有潛在入口點(diǎn)而沒有檢測到病毒,它確定724是否有更多的文件需要檢查病毒。如果有更多的文件,VDS400會選擇另一個文件并重復(fù)上述的病毒檢測過程。如果沒有更多文件,則VDS 400結(jié)束726操作。
總之,利用一組給定輸入的程序?qū)a(chǎn)生一組給定的輸出。本發(fā)明利用這一特性,通過微跟蹤部分潛在病毒宿主文件和將所得的寄存器狀態(tài)與已知變形病毒的寄存器簽名進(jìn)行比較,來檢測是否存在變形病毒。結(jié)果,本發(fā)明能夠檢測到利用其它方法(例如模式匹配)可能檢測不到的病毒。
包括上面的描述僅用于示出優(yōu)選實(shí)施例的操作,并不意味著限制本發(fā)明的范圍。本發(fā)明的范圍只受所附權(quán)利要求書的限制。從上述討論中,許多變化對于本領(lǐng)域技術(shù)人員來說將是顯而易見的,其在本發(fā)明的精神和范圍的涵蓋范圍內(nèi)。
權(quán)利要求
1.一種用于檢測計算機(jī)系統(tǒng)上的文件中的計算機(jī)病毒的方法,包括以下步驟識別文件中的病毒的潛在入口點(diǎn);在擁有虛擬寄存器的虛擬機(jī)中,在入口點(diǎn)模擬文件中的指令;跟蹤虛擬寄存器的內(nèi)容;以及響應(yīng)虛擬寄存器的內(nèi)容,檢測計算機(jī)病毒。
2.如權(quán)利要求1所述的方法,其中在文件中存在病毒的多個潛在入口點(diǎn),并且其中對多個潛在入口點(diǎn)中的至少一些潛在入口點(diǎn)執(zhí)行模擬、跟蹤和檢測步驟。
3.如權(quán)利要求1所述的方法,其中模擬步驟包括以下子步驟確定模擬參數(shù),這些參數(shù)指定了如何在入口點(diǎn)模擬指令;以及響應(yīng)所確定的模擬參數(shù),模擬所述指令。
4.如權(quán)利要求3所述的方法,其中模擬參數(shù)指定用于虛擬寄存器的初始開始狀態(tài)。
5.如權(quán)利要求3所述的方法,其中模擬參數(shù)指定用于模擬的斷點(diǎn)。
6.如權(quán)利要求3所述的方法,其中模擬參數(shù)指定要跟蹤的用于跟蹤步驟的虛擬寄存器。
7.如權(quán)利要求1所述的方法,其中跟蹤步驟跟蹤虛擬寄存器的子集的內(nèi)容。
8.如權(quán)利要求1所述的方法,其中跟蹤步驟跟蹤虛擬機(jī)所模擬的操作代碼。
9.如權(quán)利要求1所述的方法,其中跟蹤步驟包括以下子步驟建立一個表,所述表具有用于被跟蹤的虛擬寄存器的列和指定被跟蹤的虛擬寄存器的狀態(tài)的行。
10.如權(quán)利要求9所述的方法,其中所述表的每一行指定在模擬步驟中被跟蹤的虛擬寄存器的狀態(tài)。
11.如權(quán)利要求9所述的方法,其中跟蹤步驟進(jìn)一步包括以下子步驟將在模擬期間被跟蹤的虛擬寄存器的狀態(tài)填入所述表中。
12.如權(quán)利要求1所述的方法,其中檢測步驟包括以下步驟確定虛擬寄存器的內(nèi)容是否匹配用于計算機(jī)病毒的寄存器簽名。
13.如權(quán)利要求12所述的方法,其中寄存器簽名指定表示特定病毒的寄存器狀態(tài)的序列。
14.一種用于檢測計算機(jī)系統(tǒng)中是否存在計算機(jī)病毒的病毒檢測系統(tǒng),包括病毒數(shù)據(jù)庫,用于存儲描述計算機(jī)病毒的寄存器簽名;模擬模塊,用于在擁有虛擬寄存器的虛擬計算機(jī)系統(tǒng)中模擬計算機(jī)程序指令;以及引擎模塊,用于分析虛擬寄存器的內(nèi)容,以檢測與病毒數(shù)據(jù)庫中的寄存器簽名是否匹配。
15.如權(quán)利要求14所述的病毒檢測系統(tǒng),其中寄存器簽名包括至少一個謂詞,當(dāng)虛擬寄存器包含指定值時,滿足所述謂詞。
16.如權(quán)利要求15所述的病毒檢測系統(tǒng),其中所述謂詞使用通配符來指定虛擬寄存器的值。
17.如權(quán)利要求15所述的病毒檢測系統(tǒng),其中所述謂詞使用通配符來指定虛擬寄存器。
18.如權(quán)利要求14所述的病毒檢測系統(tǒng),其中寄存器簽名指定表示計算機(jī)病毒的寄存器值的序列。
19.如權(quán)利要求18所述的病毒檢測系統(tǒng),其中寄存器簽名指定模擬模塊所模擬的至少一個操作代碼,其表示計算機(jī)病毒。
20.如權(quán)利要求14所述的病毒檢測系統(tǒng),其中病毒數(shù)據(jù)庫進(jìn)一步適用于存儲描述多個病毒的感染特征的數(shù)據(jù)。
21.如權(quán)利要求14所述的病毒檢測系統(tǒng),其中病毒數(shù)據(jù)庫進(jìn)一步適用于存儲描述如何修復(fù)被多個病毒中的一個或多個病毒感染的文件的數(shù)據(jù)。
22.如權(quán)利要求14所述的病毒檢測系統(tǒng),其中模擬模塊以初始狀態(tài)來模擬指令,并且其中初始狀態(tài)響應(yīng)于病毒數(shù)據(jù)庫中的數(shù)據(jù)來確定。
23.如權(quán)利要求14所述的病毒檢測系統(tǒng),進(jìn)一步包括用于指定斷點(diǎn)條件的斷點(diǎn)條件模塊,其中模擬模塊適用于模擬計算機(jī)程序指令,直到到達(dá)斷點(diǎn)條件。
24.如權(quán)利要求23所述的病毒檢測系統(tǒng),其中計算機(jī)程序指令在文件中,并且其中模擬模塊響應(yīng)于斷點(diǎn)條件來執(zhí)行對文件中的指令的微跟蹤。
25.如權(quán)利要求14所述的病毒檢測系統(tǒng),其中計算機(jī)程序指令在文件中,其中該文件包括多個潛在病毒入口點(diǎn),并且其中模擬模塊適用于在多個潛在病毒入口點(diǎn)中的至少一些潛在病毒入口點(diǎn)模擬指令。
26.如權(quán)利要求25所述的病毒檢測系統(tǒng),其中模擬模塊適用于分開地在潛在病毒入口點(diǎn)模擬指令,并且其中引擎模塊適用于分析每次模擬的虛擬寄存器的內(nèi)容,以檢測是否與病毒數(shù)據(jù)庫中的寄存器簽名匹配。
27.如權(quán)利要求25所述的病毒檢測系統(tǒng),其中模擬模塊在多個潛在病毒入口點(diǎn)中的至少一些潛在病毒入口點(diǎn)執(zhí)行對指令的微跟蹤。
28.如權(quán)利要求14所述的病毒檢測系統(tǒng),進(jìn)一步包括建表模塊,用于響應(yīng)于模擬的指令來建立一個表,所述表跟蹤虛擬寄存器的至少一個子集的值。
29.如權(quán)利要求28所述的病毒檢測系統(tǒng),其中響應(yīng)于病毒數(shù)據(jù)庫中存儲的數(shù)據(jù),確定所述表所跟蹤的虛擬寄存器的子集。
30.如權(quán)利要求28所述的病毒檢測系統(tǒng),進(jìn)一步包括病毒報告模塊,用于分析所述表,以確定所述表所跟蹤的虛擬寄存器的值是否匹配病毒數(shù)據(jù)庫中的寄存器簽名。
31.如權(quán)利要求14所述的病毒檢測系統(tǒng),進(jìn)一步包括文件選擇模塊,用于在計算機(jī)系統(tǒng)上的多個文件中進(jìn)行選擇,以識別容易被計算機(jī)病毒感染的文件。
32.一種計算機(jī)程序產(chǎn)品,包括計算機(jī)可讀介質(zhì),它帶有包括在其中的用于檢測計算機(jī)系統(tǒng)中的計算機(jī)病毒的計算機(jī)程序邏輯,所述計算機(jī)程序邏輯包括病毒數(shù)據(jù)庫模塊,用于存儲描述計算機(jī)病毒的寄存器簽名;模擬模塊,用于在擁有虛擬寄存器的虛擬計算機(jī)系統(tǒng)中模擬計算機(jī)程序指令;引擎模塊,用于分析虛擬寄存器的內(nèi)容,以檢測與病毒數(shù)據(jù)庫中的寄存器簽名是否匹配。
33.如權(quán)利要求32所述的計算機(jī)程序產(chǎn)品,其中寄存器簽名包括至少一個謂詞,當(dāng)虛擬寄存器包含指定值時,滿足所述謂詞。
34.如權(quán)利要求33所述的計算機(jī)程序產(chǎn)品,其中所述謂詞使用通配符來指定虛擬寄存器的值。
35.如權(quán)利要求33所述的計算機(jī)程序產(chǎn)品,其中所述謂詞使用通配符來指定虛擬寄存器。
36.如權(quán)利要求32所述的計算機(jī)程序產(chǎn)品,其中寄存器簽名指定表示計算機(jī)病毒的寄存器值的序列。
37.如權(quán)利要求36所述的計算機(jī)程序產(chǎn)品,其中寄存器簽名指定模擬模塊所模擬的至少一個操作代碼,其表示計算機(jī)病毒。
38.如權(quán)利要求32所述的計算機(jī)程序產(chǎn)品,其中病毒數(shù)據(jù)庫模塊進(jìn)一步適用于存儲描述多個計算機(jī)病毒的感染特征的數(shù)據(jù)。
39.如權(quán)利要求32所述的計算機(jī)程序產(chǎn)品,其中病毒數(shù)據(jù)庫模塊進(jìn)一步適用于存儲描述如何修復(fù)被計算機(jī)病毒中的一個或多個計算機(jī)病毒感染的文件的數(shù)據(jù)。
40.如權(quán)利要求32所述的計算機(jī)程序產(chǎn)品,其中模擬模塊以初始狀態(tài)來模擬指令,并且其中初始狀態(tài)響應(yīng)于病毒數(shù)據(jù)庫中的數(shù)據(jù)來確定。
41.如權(quán)利要求32所述的計算機(jī)程序產(chǎn)品,進(jìn)一步包括用于指定斷點(diǎn)條件的斷點(diǎn)條件模塊,其中模擬模塊適用于模擬指令,直到到達(dá)斷點(diǎn)條件。
42.如權(quán)利要求41所述的計算機(jī)程序產(chǎn)品,其中模擬模塊響應(yīng)于斷點(diǎn)條件對計算機(jī)指令進(jìn)行微跟蹤。
43.如權(quán)利要求32所述的病毒檢測系統(tǒng),其中計算機(jī)程序指令在文件中,其中該文件包括多個潛在病毒入口點(diǎn),并且其中模擬模塊適用于在多個潛在病毒入口點(diǎn)中的至少一些潛在病毒入口點(diǎn)模擬指令。
44.如權(quán)利要求43所述的計算機(jī)程序產(chǎn)品,其中模擬模塊適用于分開地在潛在病毒入口點(diǎn)模擬指令,并且其中引擎模塊適用于分析每次模擬的虛擬寄存器的內(nèi)容,以檢測是否與病毒數(shù)據(jù)庫中的寄存器簽名匹配。
45.如權(quán)利要求43所述的計算機(jī)程序產(chǎn)品,其中模擬模塊在多個潛在病毒入口點(diǎn)中的一些潛在病毒入口點(diǎn)執(zhí)行對指令的微跟蹤。
46.如權(quán)利要求32所述的計算機(jī)程序產(chǎn)品,進(jìn)一步包括建表模塊,用于響應(yīng)被模擬的指令來建立一個表,所述表跟蹤虛擬寄存器的至少一個子集的值。
47.如權(quán)利要求46所述的計算機(jī)程序產(chǎn)品,其中響應(yīng)于病毒數(shù)據(jù)庫中存儲的數(shù)據(jù),確定所述表所跟蹤的虛擬寄存器的子集。
48.如權(quán)利要求46所述的計算機(jī)程序產(chǎn)品,進(jìn)一步包括病毒報告模塊,用于分析所述表,以確定所述表所跟蹤的虛擬寄存器的值是否匹配病毒數(shù)據(jù)庫中的寄存器簽名。
49.如權(quán)利要求32所述的計算機(jī)程序產(chǎn)品,其中數(shù)據(jù)模塊包括病毒報告模塊,用于確定虛擬寄存器的值是否匹配病毒數(shù)據(jù)庫中的寄存器簽名。
50.如權(quán)利要求32所述的計算機(jī)程序產(chǎn)品,進(jìn)一步包括文件選擇模塊,用于在計算機(jī)系統(tǒng)上的多個文件中進(jìn)行選擇,以識別容易被計算機(jī)病毒感染的文件,其中模擬模塊模擬選定文件中的計算機(jī)程序指令。
全文摘要
分析計算機(jī)病毒的執(zhí)行,以開發(fā)該病毒的寄存器簽名。寄存器簽名指定了當(dāng)使用一組給定的輸入進(jìn)行執(zhí)行時,病毒所產(chǎn)生的一組輸出。病毒檢測系統(tǒng)(VDS)(400)擁有寄存器簽名的數(shù)據(jù)庫(430)。VDS(400)檢測可能包含計算機(jī)病毒的文件,并識別文件中的潛在入口點(diǎn)。VDS(400)使用擁有初始狀態(tài)的虛擬機(jī)(422)來在每個入口點(diǎn)模擬相對少量的指令。當(dāng)模擬每個潛在入口點(diǎn)時,VDS構(gòu)建了一個寄存器表,用于跟蹤虛擬寄存器(428)的子集的狀態(tài)。一旦VDS(400)到達(dá)模擬斷點(diǎn),它將結(jié)合考慮寄存器簽名來分析寄存器表,以確定文件是否包含病毒。
文檔編號G06F21/00GK1656732SQ03811842
公開日2005年8月17日 申請日期2003年5月22日 優(yōu)先權(quán)日2002年5月23日
發(fā)明者彼得·司澤爾 申請人:賽門鐵克公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1