專利名稱::一種用于檢測和清除計算機病毒的方法和裝置的制作方法
技術領域:
:本發(fā)明涉及計算機安全,具體涉及一種用于檢測和清除計算機病毒的方法和裝置。
背景技術:
:使用特征碼掃描進行病毒樣本識別是計算機反病毒最早使用的病毒查殺技術。計算機反病毒技術發(fā)展幾十年來,雖然又出現(xiàn)了行為查殺等病毒查殺技術,但特征碼掃描以其準確和穩(wěn)定等特點,依然是目前主流計算機反病毒軟件病毒識別所采用的主要技術,是目前反病毒技術中的基礎技術。特征碼掃描是指采用事先提取的病毒特征對未知樣本進行掃描和判斷的方法。特征的提取是由人工分析或自動分析識別確定為病毒后,對病毒樣本提取的二進制或其它特征,這種特征是該種病毒獨有的、區(qū)別于其它病毒或正常文件的。查毒時,反病毒軟件依次使用其病毒庫中的特征對未知文件進行掃描,如果某一特征匹配成功,則表示該文件為該特征所代表的病毒,如果所有特征均未匹配,則認為該文件不是病毒,是正常文件。特征碼掃描從根本上說是一種特征識別判定技術,其不但可以用于掃描判定病毒,也可以用于掃描判定正常文件,目前在反病毒軟件中也被廣泛的用于正常樣本的判定。特征碼掃描技術具有準確、誤報率低、實現(xiàn)技術簡單的優(yōu)點,其技術成熟,因此目前依然是反病毒技術中病毒識別的主要技術。但同時,特征碼掃描技術也有明顯的缺點,其對多態(tài)變形、加密的病毒的識別能力低,且不能識別未知病毒。除特征碼掃描外,目前反病毒中常用的病毒識別技術還有“行為查殺”技術,其基本原理是指對已運行的樣本或在反病毒軟件中可控環(huán)境中(常見為反病毒虛擬機)運行樣本,通過記錄和判定樣本的運行行為來識別病毒。行為查殺技術具有能夠查殺未知病毒的能力,但誤報率高是其目前依然無法解決的最大缺點。反病毒軟件使用的殺毒技術,主要是指其對感染型病毒樣本(被感染型病毒感染的正常文件)的清除能力,對于非感染型病毒,則簡單的刪除即可。感染型病毒的清除,目前主要采用使用的殺毒記錄殺毒和硬編碼殺毒兩種方法。殺毒記錄殺毒是指,在分析人員分析測試過后編寫殺毒記錄,查殺時判定病毒后執(zhí)行對應的殺毒記錄中的殺毒方法進行殺毒。殺毒記錄中描述的是其殺毒引擎支持的殺毒方法(如修改程序入口、截取文件尾部等)及參數(shù)的組合。硬編碼殺毒是指編寫專門的程序代碼進行殺毒,其應用于殺毒情況較復雜的情況,例如病毒專殺程序。這里選擇開源殺毒引擎ClamAV為例對于傳統(tǒng)殺毒引擎進行分析。ClamAV殺毒引擎查殺方法主要包括以下幾種-MD5(MessageDigestAlgorithm5,消息摘要算法第五版)特征病毒分析員為病毒文件生成相應的MD5作為其特征。ClamAV引擎通過MD5作為其病毒特征;-基于PE(PortableExecute,可移植執(zhí)行)文件節(jié)的MD5特征病毒分析員將病毒PE文件的其中一個節(jié)作為其文件特征,將節(jié)數(shù)據(jù)生成相應的MD5作為其病毒特征。-代碼特征代碼特征是非常傳統(tǒng)的一種病毒特征提取方式。病毒分析員將PE文件中具有特殊含義的二進制數(shù)據(jù)作為病毒特征,通常選擇病毒代碼的二進制作數(shù)據(jù)為病毒特征。ClamAV的代碼特征不僅是匹配二進制數(shù)據(jù),還支持通配符,以及部分正則表達式,還支持基于文件格式的擴展匹配,支持邏輯化特征。-PE文件圖標特征=Windows上的病毒經常將自己的圖標偽裝成非可移植執(zhí)行文件的圖標,于是ClamAV提供將圖標作為病毒的特征。以上特征都是基于ClamAV殺毒引擎體系構架。ClamAV殺毒引擎是以算法為基礎的殺毒引擎,其核心的算法是B-M單模匹配算法以及A-C多模匹配算法。由于傳統(tǒng)殺毒引擎(如上述ClamAV)的結構是以算法為基礎的,所以導致以下兩個比較明顯的問題I.病毒特征選取不靈活這里的不靈活體現(xiàn)在兩個方面,一方面是病毒分析員選取病毒特征不靈活,另一方面是病毒分析員擴展新的病毒特征不靈活;ClamAV不同的查殺方法之間是不提供邏輯關系的。比如使用PE文件節(jié)的MD5特征并不能夠與代碼特征結合起來使用。雖然代碼特征提供一定的邏輯匹配的功能,但如果面對多態(tài)變形病毒,其邏輯匹配的功能仍然無法滿足精確檢測的需求。如常見的多態(tài)變形病毒vrut早期版本通過隨機從兩套加密算法中選取一套,并隨機產生一個密鑰對病毒體代碼進行加密;而解密代碼則通過一個多態(tài)引擎生成進行多態(tài)變換,使得vrut每次感染的文件其病毒體代碼特征都完全不同。因此僅通過ClamAV代碼特征所提供的邏輯匹配是無法對其進行精確查殺的。而如果要對這種以算法為基礎的殺毒引擎擴展其病毒特征選取方法,由于其病毒特征選取方法與引擎偶合度過大,導致很難進行擴展。要么在原算法之外新增掃描過程,以效率為代價。如ClamAV新增MD5特征掃描就是在其代碼特征掃描之前新增掃描過程;要么就是修改原引擎中的算法,ClamAV引擎中的A-C多模匹配算法就是經過改進的算法,以支持代碼特征中簡單的邏輯運算、通配符等。2.檢測病毒效率低下對于殺毒引擎的檢測效率,主要瓶頸在輸入輸出,如果能夠有效的控制輸入輸出,則查毒的效率就會有極大的提高。但通過以上的過程,可以看到,ClamAV并沒有針對輸入輸出進行優(yōu)化。MD5特征決定必須對檢測文件進行全文遍歷。另外由于A-C多模算法在匹配之前需要建立狀態(tài)機,而病毒庫記錄越大,則狀態(tài)機建立的所需要的時間與空間就越多。
發(fā)明內容鑒于上述問題,提出了本發(fā)明,以便提供一種克服上述問題或者至少部分地解決上述問題的用于檢測和清除計算機病毒的方法以及相應的裝置。依據(jù)本發(fā)明的一個方面,提供了一種用于檢測和清除計算機病毒的方法,包括利用腳本語言編寫用于檢測和清除計算機病毒的腳本并且將所述腳本編譯為二進制的病毒庫文件;用于檢測計算機病毒的檢測處理,其包括-基于所述病毒庫文件中包含的多個病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理;-將定位處理的結果作為變量進行運算處理和/或邏輯控制處理;-基于所述病毒庫文件中包含的多個病毒記錄,對運算處理和/或邏輯控制處理的結果進行匹配處理,其中所述匹配處理包括二進制匹配處理和/或opcode匹配處理;以及對與所述多個病毒記錄中的一個或多個匹配的待檢測的文件進行病毒清除處理。所述腳本語言使用可擴展標記語言XML進行描述。所述可移植執(zhí)行文件結構包括可移植執(zhí)行文件入口點的偏移、可移植執(zhí)行文件頭的偏移、可移植執(zhí)行文件數(shù)據(jù)目錄的偏移、可移植執(zhí)行文件附加數(shù)據(jù)的偏移、可移植執(zhí)行文件節(jié)表的偏移、和/或可移植執(zhí)行文件節(jié)的偏移。所述定位處理包括根據(jù)模擬中央處理單元解析的call、jmp、jcc、和/或loop指令,進行定位處理。所述多個病毒記錄中的每個病毒記錄具有各自的文件特征,在所述基于所述病毒庫文件中包含的多個病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理的步驟中,檢查所述待檢測的文件的文件特征,并且基于文件特征與所述待檢測的文件符合的病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理。所述匹配處理支持通配符號和浮動搜索,包括以下的一種或多種處理利用所述運算處理和/或邏輯控制處理的結果處的指令的opcode、操作數(shù)、長度,進行匹配處理;利用通過分析可移植執(zhí)行文件的入口指令序列得到的文件編譯器信息,進行匹配處理;利用所述待檢測的文件的屬性信息、資源信息、和/或版本信息,進行匹配處理;利用可移植執(zhí)行文件的導入函數(shù)信息和/或導出函數(shù)信息,進行匹配處理,所述導入函數(shù)信息包括導入模塊和導入函數(shù)的數(shù)量和名稱,所述導出函數(shù)信息包括導出模塊和導出函數(shù)的數(shù)量和名稱;以及利用所述待檢測的文件的位置和長度的散列值,進行匹配處理。所述運算處理包括加、減、乘、除、邏輯與、邏輯或、移位、比較處理。所述邏輯控制處理包括跳轉處理和返回處理,其中所述跳轉處理包括有條件跳轉處理和非條件跳轉處理,返回處理包括有條件返回處理和非條件返回處理。每個病毒記錄包含針對一種計算機病毒的、記錄如何進行定位處理、運算處理和/或邏輯控制處理、以及匹配處理的多條檢測信息、以及記錄如何進行病毒清除處理的多條清除息,所述檢測處理包括對于每個病毒記錄,利用所述多條檢測信息,對待檢測的文件進行包括定位處理、運算處理和/或邏輯控制處理、以及匹配處理的檢測處理,在所述檢測處理中,如果所述多條檢測信息中的每一條檢測信息均被成功執(zhí)行,則將所述待檢測的文件判定為含病毒文件。對待檢測的文件進行病毒清除處理的步驟包括根據(jù)對應的病毒記錄中的多條清除信息,對所述含病毒文件進行病毒清除處理。所述對所述含病毒文件進行病毒清除處理的步驟包括以下的一個或多個處理刪除所述含病毒文件;修改所述含病毒文件的入口點地址;向所述含病毒文件的特定區(qū)域寫入數(shù)據(jù)塊;在所述含病毒文件內復制數(shù)據(jù)塊;刪除所述含病毒文件的特定文件節(jié),并對所述含病毒文件的格式進行調整;刪除所述含病毒文件頭部和/或尾部的特定大小的數(shù)據(jù);設置所述含病毒文件的大小。根據(jù)本發(fā)明的另一方面,提供了一種用于檢測和清除計算機病毒的裝置,包括腳本編寫和編譯模塊,用于利用腳本語言編寫用于檢測和清除計算機病毒的腳本并且將所述腳本編譯為二進制的病毒庫文件;檢測模塊,用于檢測計算機病毒的檢測處理,其包括-定位子模塊,用于基于所述病毒庫文件中包含的多個病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理;-運算和邏輯控制子模塊,用于將定位處理的結果作為變量進行運算處理和/或邏輯控制處理;-匹配子模塊,用于基于所述病毒庫文件中包含的多個病毒記錄,對運算處理和/或邏輯控制處理的結果進行匹配處理,其中所述匹配處理包括二進制匹配處理和/或opcode匹配處理;以及清除模塊,用于對與所述多個病毒記錄中的一個或多個匹配的待檢測的文件進行病毒清除處理。所述腳本語言使用可擴展標記語言XML進行描述。所述可移植執(zhí)行文件結構包括可移植執(zhí)行文件入口點的偏移、可移植執(zhí)行文件頭的偏移、可移植執(zhí)行文件數(shù)據(jù)目錄的偏移、可移植執(zhí)行文件附加數(shù)據(jù)的偏移、可移植執(zhí)行文件節(jié)表的偏移、和/或可移植執(zhí)行文件節(jié)的偏移。所述定位處理包括根據(jù)模擬中央處理單元解析的call、jmp、jcc、和/或loop指令,進行定位處理。所述多個病毒記錄中的每個病毒記錄具有各自的文件特征,所述定位子模塊檢查所述待檢測的文件的文件特征,并且基于文件特征與所述待檢測的文件符合的病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理。所述匹配處理支持通配符號和浮動搜索,包括以下的一種或多種處理利用所述運算處理和/或邏輯控制處理的結果處的指令的opcode、操作數(shù)、長度,進行匹配處理;利用通過分析可移植執(zhí)行文件的入口指令序列得到的文件編譯器信息,進行匹配處理;利用所述待檢測的文件的屬性信息、資源信息、和/或版本信息,進行匹配處理;利用可移植執(zhí)行文件的導入函數(shù)信息和/或導出函數(shù)信息,進行匹配處理,所述導入函數(shù)信息包括導入模塊和導入函數(shù)的數(shù)量和名稱,所述導出函數(shù)信息包括導出模塊和導出函數(shù)的數(shù)量和名稱;以及利用所述待檢測的文件的位置和長度的散列值,進行匹配處理。所述運算處理包括加、減、乘、除、邏輯與、邏輯或、移位、比較處理。所述邏輯控制處理包括跳轉處理和返回處理,其中所述跳轉處理包括有條件跳轉處理和非條件跳轉處理,返回處理包括有條件返回處理和非條件返回處理。每個病毒記錄包含針對一種計算機病毒的、記錄如何進行定位處理、運算處理和/或邏輯控制處理、以及匹配處理的多條檢測信息、以及記錄如何進行病毒清除處理的多條清除息,所述檢測模塊對于每個病毒記錄,利用所述多條檢測信息,對待檢測的文件進行包括定位處理、運算處理和/或邏輯控制處理、以及匹配處理的檢測處理,在所述檢測處理中,如果所述多條檢測信息中的每一條檢測信息均被成功執(zhí)行,則將所述待檢測的文件判定為含病毒文件。所述清除模塊根據(jù)對應的病毒記錄中的多條清除信息,對所述含病毒文件進行病毒清除處理。所述清除模塊執(zhí)行以下的一個或多個處理刪除所述含病毒文件;修改所述含病毒文件的入口點地址;向所述含病毒文件的特定區(qū)域寫入數(shù)據(jù)塊;在所述含病毒文件內復制數(shù)據(jù)塊;刪除所述含病毒文件的特定文件節(jié),并對所述含病毒文件的格式進行調整;刪除所述含病毒文件頭部和/或尾部的特定大小的數(shù)據(jù);設置所述含病毒文件的大小。本發(fā)明提供了一種用于檢測和清除計算機病毒的方法和裝置,所述方法及裝置可以在虛擬機中使用,可用于惡意軟件(病毒)行為分析、查/殺毒、脫殼等領域。根據(jù)本發(fā)明的實施例,使用XML來描述腳本語言和病毒記錄,便于管理和檢索海量的病毒記錄,同時可將腳本編譯為二進制的病毒庫文件,確保對病毒進行檢測和清除時的高效率。本發(fā)明利用類似x86匯編指令的腳本描述病毒記錄,以提供類似匯編的靈活控制能力以及高的行為抽象度。根據(jù)本發(fā)明的實施例的每個處理本身都相對簡單,但由于架構足夠靈活,可以編寫出與匯編復雜度相當?shù)牟《居涗?。本發(fā)明極大地提高了傳統(tǒng)特征碼查殺技術的靈活性和效率,提高了特征碼查殺技術對于多態(tài)變形病毒、病毒家族查殺的適用性。本發(fā)明采用GUID作為處理的唯一描述,因而具有很強的擴展性,只要遵從一定的規(guī)范,即可增加新的處理,而并不會影響原來的檢測和清除處理以及病毒記錄。本發(fā)明中的大多數(shù)處理并不涉及到系統(tǒng)輸入輸出操作,部分處理只涉及到極少量的輸入輸出操作,所以檢測和清除病毒的速度非???。上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖I是根據(jù)本發(fā)明的實施例的用于檢測和清除計算機病毒的方法的流程圖;以及圖2是根據(jù)本發(fā)明的實施例的用于檢測和清除計算機病毒的裝置的框圖。具體實施方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。圖I是根據(jù)本發(fā)明的實施例的用于檢測和清除計算機病毒的方法的流程圖。如圖I所示,在用于檢測和清除計算機病毒的方法100中,一開始,執(zhí)行步驟SlOl:利用腳本語言編寫用于檢測和清除計算機病毒的腳本并且將所述腳本編譯為二進制的病毒庫文件。根據(jù)本發(fā)明的實施例,所述腳本語言使用XML(extensibleMarkupLanguage,可擴展標記語言)進行描述。腳本的語句是由不同函數(shù)方法組成的,函數(shù)方法可以分為檢測處理與病毒清除處理兩大類。檢測處理的主要目的是檢測病毒,而病毒清除處理則會對已經確認為病毒的文件進行操作,以達到刪除或清除病毒的目的。根據(jù)本發(fā)明的實施例,將所述腳本語言編譯成二進制的病毒庫文件,在對病毒進行檢測和清除時只需要讀取該二進制的病毒庫文件即可。所述腳本語言利用xml語言進行掃描。每一種處理擁有唯一的⑶ID(GloballyUniqueIdentifier,全局唯一標識符),以保證各處理之間不會在調用處理的時候產生沖突。再使用xml的標簽來掃描此處理的參數(shù)。例如〈stdmethodalias="L_File"base="File"offset="2"target="FILE"clsid="{877289A9-2E55-4aa8-A94A-5EE7412F887C}"/>以上一條xml標簽描述所述腳本語言中的定位處理。clsid是定位處理的唯一⑶ID,在編譯的時候通過此clsid調用相應的參數(shù)解析處理對處理進行轉換。在步驟SlOl后,執(zhí)行用于檢測計算機病毒的檢測處理,其包括步驟S103a,基于所述病毒庫文件中包含的多個病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或PE(PortableExecute,可移植執(zhí)行)文件結構的定位處理;步驟S103b,將定位處理的結果作為變量進行運算處理和/或邏輯控制處理;步驟S103c,基于所述病毒庫文件中包含的多個病毒記錄,對運算處理和/或邏輯控制處理的結果進行匹配處理,其中所述匹配處理包括二進制匹配處理和/或opcode匹配處理。根據(jù)本發(fā)明的實施例,所述PE文件結構包括PE文件入口點的偏移、PE文件頭的偏移、PE文件數(shù)據(jù)目錄的偏移、PE文件附加數(shù)據(jù)的偏移、PE文件節(jié)表的偏移、和/或PE文件節(jié)的偏移。在定位處理成功執(zhí)行以后,會在運行棧上返回定位地址結果,以供其它處理使用。另外,作為對于定位處理的擴展,可以根據(jù)模擬中央處理單元解析的call、jmp、jcc、和/或loop指令,基于所述病毒庫文件中包含的多個病毒記錄,進行定位處理。根據(jù)本發(fā)明的實施例,所述多個病毒記錄中的每個病毒記錄具有各自的文件特征,在所述步驟S103a中,檢查所述待檢測的文件的文件特征,并且基于文件特征與所述待檢測的文件符合的病毒記錄,對所述待檢測的文件執(zhí)行定位處理。舉例來說,所述文件特征可以是文件的編譯器信息,在步驟S103a中,首先檢查待檢測的文件的編譯器信息,并且基于編譯器信息與該文件符合的病毒記錄,來對該文件執(zhí)行定位處理。這樣,在病毒庫文件包括大量病毒記錄的情況下,只需要利用與待檢測的文件的某項文件特征符合的那些病毒記錄對于待檢測的文件進行檢測,提高了檢測的效率。在進行了上述定位處理之后,將該定位處理的結果作為變量進行運算和/或邏輯控制處理。涉及上述變量的處理可以包括常量變量處理、引用變量處理、裝載變量處理。常量變量處理類似于C語言中的普通變量,為使用者提供直接設置變量的方法;引用變量處理類似于C語言中的指針變量,為使用者提供引用其它處理計算結果的方法;裝載變量處理是特殊處理,可以讀取檢測文件指定位置的值作為變量。根據(jù)本發(fā)明的實施例,所述運算處理包括加、減、乘、除、邏輯與、邏輯或、移位、t匕較處理,其與x86匯編的運算方法相類似,操作對象為根據(jù)本發(fā)明的實施例的腳本語言的棧變量與寄存器。根據(jù)本發(fā)明的實施例,所述控制處理可以類似于x86匯編的控制處理,控制處理分為兩大類,一類是跳轉處理,另一類是返回處理。跳轉處理可以修改當前執(zhí)行順序,跳轉到指定的處理開始執(zhí)行,跳轉處理可以類似于x86匯編中的跳轉指令,包括條件跳轉與非條件跳轉;返回處理可以立即結束當前的檢測(清除)過程,并可顯示指定返回結果為查殺目標或非查殺目標,返回處理也可以與x86匯編中的跳轉指令類似,包括條件返回與非條件返回。根據(jù)本發(fā)明的實施例,步驟S103c的匹配處理支持通配符號和浮動搜索,并且可以包括以下的一種或多種處理-利用所述運算處理和/或邏輯控制處理的結果處的指令的opcode、操作數(shù)、長度,進行匹配處理;利用通過分析可移植執(zhí)行文件的入口指令序列得到的文件編譯器信息,進行匹配處理;利用所述待檢測的文件的屬性信息、資源信息、和/或版本信息,進行匹配處理,所述屬性信息可以包括文件名、文件大小等,所述資源信息包括資源的類型、大小、名稱等;利用可移植執(zhí)行文件的導入函數(shù)信息和/或導出函數(shù)信息,進行匹配處理,所述導入函數(shù)信息包括導入模塊和導入函數(shù)的數(shù)量和名稱,所述導出函數(shù)信息包括導出模塊和導出函數(shù)的數(shù)量和名稱;以及利用所述待檢測的文件的位置和長度的散列值,進行匹配處理。根據(jù)本發(fā)明的實施例,通過將上述定位處理與匹配處理分開執(zhí)行,可以有效降低輸入輸出數(shù)據(jù)量,提高檢測的準確性。根據(jù)本發(fā)明的實施例,上述每個病毒記錄包含針對一種計算機病毒的、記錄如何進行定位處理、運算處理和/或邏輯控制處理、以及匹配處理的多條檢測信息、以及記錄如何進行病毒清除處理的多條清除信息,其中所述檢測處理包括對于每個病毒記錄,利用所述多條檢測信息,對待檢測的文件進行包括定位處理、運算處理和/或邏輯控制處理、以及匹配處理的檢測處理,在所述檢測處理中,如果所述多條檢測信息中的每一條檢測信息均被成功執(zhí)行,則將所述待檢測的文件判定為含病毒文件。具體來說,對待檢測的文件執(zhí)行每個病毒記錄中所包含的多條檢測信息中的定位處理、運算處理和/或邏輯控制處理、以及匹配處理,如果某條檢測信息中的處理執(zhí)行失敗,則結束檢測,而如果每條檢測信息中的處理均執(zhí)行成功,則將所述待檢測的文件判定為含病毒文件。在步驟S103a之后,執(zhí)行步驟S105:對與所述多個病毒記錄中的一個或多個匹配的待檢測的文件進行病毒清除處理。根據(jù)本發(fā)明的實施例,可以根據(jù)對應的病毒記錄中的多條清除信息,對所述含病毒文件進行病毒清除處理。而該病毒清除處理可以包括以下的一個或多個處理刪除所述含病毒文件,即對于含病毒文件進行直接刪除;修改所述含病毒文件的入口點地址,例如修改含病毒的可移植執(zhí)行文件的入口點地址;向所述含病毒文件的特定區(qū)域寫入數(shù)據(jù)塊,即對特定區(qū)域進行數(shù)據(jù)塊填充;在所述含病毒文件內復制數(shù)據(jù)塊;刪除所述含病毒文件的特定文件節(jié),并對所述含病毒文件的格式進行調整,例如刪除含病毒的可移植執(zhí)行文件中制定的文件節(jié),并對該文件的格式進行相應的調整;刪除所述含病毒文件頭部和/或尾部的特定大小的數(shù)據(jù);設置所述含病毒文件的大小。本發(fā)明提供了一種用于檢測和清除計算機病毒的方法,所述方法可以在虛擬機中使用,可用于惡意軟件(病毒)行為分析、查/殺毒、脫殼等領域。根據(jù)本發(fā)明的實施例,使用XML來描述腳本語言和病毒記錄,便于管理和檢索海量的病毒記錄,同時可將腳本編譯為二進制的病毒庫文件,確保對病毒進行檢測和清除時的高效率。本發(fā)明利用類似x86匯編指令的腳本描述病毒記錄,以提供類似匯編的靈活控制能力以及高的行為抽象度。根據(jù)本發(fā)明的實施例的每個處理本身都相對簡單,但由于架構足夠靈活,可以編寫出與匯編復雜度相當?shù)牟《居涗?。本發(fā)明極大地提高了傳統(tǒng)特征碼查殺技術的靈活性和效率,提高了特征碼查殺技術對于多態(tài)變形病毒、病毒家族查殺的適用性。本發(fā)明采用⑶ID作為處理的唯一描述,因而具有很強的擴展性,只要遵從一定的規(guī)范,即可增加新的處理,而并不會影響原來的檢測和清除處理以及病毒記錄。本發(fā)明中的大多數(shù)處理并不涉及到系統(tǒng)輸入輸出操作,部分處理只涉及到極少量的輸入輸出操作,所以檢測和清除病毒的速度非???。與上述的方法100相對應,本發(fā)明還提供了一種用于檢測和清除計算機病毒的裝置200,參見圖2,該裝置200包括腳本編寫和編譯模塊201,用于利用腳本語言編寫用于檢測和清除計算機病毒的腳本并且將所述腳本編譯為二進制的病毒庫文件,該腳本編寫和編譯模塊201可以用于執(zhí)行上述方法100中的步驟SlOl;檢測模塊203,用于檢測計算機病毒的檢測處理,其包括-定位子模塊203a,用于基于所述病毒庫文件中包含的多個病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理,該定位子模塊203a可以用于執(zhí)行上述方法100中的步驟S103a;-運算和邏輯控制子模塊203b,用于將定位處理的結果作為變量進行運算處理和/或邏輯控制處理,該運算和邏輯控制子模塊203b可以用于執(zhí)行上述方法100中的步驟S103b;-匹配子模塊203c,用于基于所述病毒庫文件中包含的多個病毒記錄,對運算處理和/或邏輯控制處理的結果進行匹配處理,其中所述匹配處理包括二進制匹配處理和/或opcode匹配處理,該匹配子模塊203c可以用于執(zhí)行上述方法100中的步驟S103c;以及清除模塊205,用于對與所述多個病毒記錄中的一個或多個匹配的待檢測的文件進行病毒清除處理,該清除模塊205可以用于執(zhí)行上述方法100中的步驟S105。在本發(fā)明的實施例中,其中所述腳本語言使用可擴展標記語言XML進行描述。在本發(fā)明的實施例中,所述可移植執(zhí)行文件結構包括可移植執(zhí)行文件入口點的偏移、可移植執(zhí)行文件頭的偏移、可移植執(zhí)行文件數(shù)據(jù)目錄的偏移、可移植執(zhí)行文件附加數(shù)據(jù)的偏移、可移植執(zhí)行文件節(jié)表的偏移、和/或可移植執(zhí)行文件節(jié)的偏移。在本發(fā)明的實施例中,所述定位處理包括根據(jù)模擬中央處理單元解析的call、jmp、jcc、和/或loop指令,進行定位處理。在本發(fā)明的實施例中,所述多個病毒記錄中的每個病毒記錄具有各自的文件特征,所述定位子模塊203a檢查所述待檢測的文件的文件特征,并且基于文件特征與所述待檢測的文件符合的病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理。在本發(fā)明的實施例中,所述匹配處理支持通配符號和浮動搜索,包括以下的一種或多種處理利用所述運算處理和/或邏輯控制處理的結果處的指令的opcode、操作數(shù)、長度,進行匹配處理;利用通過分析可移植執(zhí)行文件的入口指令序列得到的文件編譯器信息,進行匹配處理;利用所述待檢測的文件的屬性信息、資源信息、和/或版本信息,進行匹配處理;利用可移植執(zhí)行文件的導入函數(shù)信息和/或導出函數(shù)信息,進行匹配處理,所述導入函數(shù)信息包括導入模塊和導入函數(shù)的數(shù)量和名稱,所述導出函數(shù)信息包括導出模塊和導出函數(shù)的數(shù)量和名稱;以及利用所述待檢測的文件的位置和長度的散列值,進行匹配處理。在本發(fā)明的實施例中,所述運算處理包括加、減、乘、除、邏輯與、邏輯或、移位、t匕較處理。在本發(fā)明的實施例中,所述邏輯控制處理包括跳轉處理和返回處理,其中所述跳轉處理包括有條件跳轉處理和非條件跳轉處理,返回處理包括有條件返回處理和非條件返回處理。在本發(fā)明的實施例中,每個病毒記錄包含針對一種計算機病毒的、記錄如何進行定位處理、運算處理和/或邏輯控制處理、以及匹配處理的多條檢測信息、以及記錄如何進行病毒清除處理的多條清除信息,所述檢測模塊203對于每個病毒記錄,利用所述多條檢測信息,對待檢測的文件進行包括定位處理、運算處理和/或邏輯控制處理、以及匹配處理的檢測處理,在所述檢測處理中,如果所述多條檢測信息中的每一條檢測信息均被成功執(zhí)行,則將所述待檢測的文件判定為含病毒文件。在本發(fā)明的實施例中,所述清除模塊205根據(jù)對應的病毒記錄中的多條清除信息,對所述含病毒文件進行病毒清除處理。在本發(fā)明的實施例中,所述清除模塊205執(zhí)行以下的一個或多個處理刪除所述含病毒文件;修改所述含病毒文件的入口點地址;向所述含病毒文件的特定區(qū)域寫入數(shù)據(jù)塊;在所述含病毒文件內復制數(shù)據(jù)塊;刪除所述含病毒文件的特定文件節(jié),并對所述含病毒文件的格式進行調整;刪除所述含病毒文件頭部和/或尾部的特定大小的數(shù)據(jù);設置所述含病毒文件的大小。由于上述各裝置實施例與前述各方法實施例相對應,因此不再對各裝置實施例進行詳細描述。在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類系統(tǒng)所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。本領域那些技術人員可以理解,可以對實施例中的裝置中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個裝置中??梢园褜嵤├械娜舾赡K組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者模塊中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的替代特征來代替。此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內并且形成不同的實施例。例如,在權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個裝置實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的裝置中的一些或者全部模塊的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。權利要求1.一種用于檢測和清除計算機病毒的方法(100),包括利用腳本語言編寫用于檢測和清除計算機病毒的腳本并且將所述腳本編譯為二進制的病毒庫文件;用于檢測計算機病毒的檢測處理,其包括-基于所述病毒庫文件中包含的多個病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理;-將定位處理的結果作為變量進行運算處理和/或邏輯控制處理;-基于所述病毒庫文件中包含的多個病毒記錄,對運算處理和/或邏輯控制處理的結果進行匹配處理,其中所述匹配處理包括二進制匹配處理和/或opcode匹配處理;以及對與所述多個病毒記錄中的一個或多個匹配的待檢測的文件進行病毒清除處理。2.如權利要求I所述的方法,其中所述腳本語言使用可擴展標記語言XML進行描述。3.如權利要求I所述的方法,其中所述可移植執(zhí)行文件結構包括可移植執(zhí)行文件入口點的偏移、可移植執(zhí)行文件頭的偏移、可移植執(zhí)行文件數(shù)據(jù)目錄的偏移、可移植執(zhí)行文件附加數(shù)據(jù)的偏移、可移植執(zhí)行文件節(jié)表的偏移、和/或可移植執(zhí)行文件節(jié)的偏移。4.如權利要求I所述的方法,其中所述定位處理包括根據(jù)模擬中央處理單元解析的call、jmp、jcc、和/或loop指令,進行定位處理。5.如權利要求I所述的方法,其中所述多個病毒記錄中的每個病毒記錄具有各自的文件特征,在所述基于所述病毒庫文件中包含的多個病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理的步驟中,檢查所述待檢測的文件的文件特征,并且基于文件特征與所述待檢測的文件符合的病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理。6.如權利要求I所述的方法,其中所述匹配處理支持通配符號和浮動搜索,包括以下的一種或多種處理利用所述運算處理和/或邏輯控制處理的結果處的指令的opcode、操作數(shù)、長度,進行匹配處理;利用通過分析可移植執(zhí)行文件的入口指令序列得到的文件編譯器信息,進行匹配處理;利用所述待檢測的文件的屬性信息、資源信息、和/或版本信息,進行匹配處理;利用可移植執(zhí)行文件的導入函數(shù)信息和/或導出函數(shù)信息,進行匹配處理,所述導入函數(shù)信息包括導入模塊和導入函數(shù)的數(shù)量和名稱,所述導出函數(shù)信息包括導出模塊和導出函數(shù)的數(shù)量和名稱;以及利用所述待檢測的文件的位置和長度的散列值,進行匹配處理。7.如權利要求I所述的方法,其中所述運算處理包括加、減、乘、除、邏輯與、邏輯或、移位、比較處理。8.如權利要求I所述的方法,其中所述邏輯控制處理包括跳轉處理和返回處理,其中所述跳轉處理包括有條件跳轉處理和非條件跳轉處理,返回處理包括有條件返回處理和非條件返回處理。9.如權利要求1-8中的任一項所述的方法,其中每個病毒記錄包含針對一種計算機病毒的、記錄如何進行定位處理、運算處理和/或邏輯控制處理、以及匹配處理的多條檢測信息、以及記錄如何進行病毒清除處理的多條清除信息,所述檢測處理包括對于每個病毒記錄,利用所述多條檢測信息,對待檢測的文件進行包括定位處理、運算處理和/或邏輯控制處理、以及匹配處理的檢測處理,在所述檢測處理中,如果所述多條檢測信息中的每一條檢測信息均被成功執(zhí)行,則將所述待檢測的文件判定為含病毒文件。10.如權利要求9所述的方法,其中對待檢測的文件進行病毒清除處理的步驟包括根據(jù)對應的病毒記錄中的多條清除信息,對所述含病毒文件進行病毒清除處理。11.如權利要求10所述的方法,其中所述對所述含病毒文件進行病毒清除處理的步驟包括以下的一個或多個處理刪除所述含病毒文件;修改所述含病毒文件的入口點地址;向所述含病毒文件的特定區(qū)域寫入數(shù)據(jù)塊;在所述含病毒文件內復制數(shù)據(jù)塊;刪除所述含病毒文件的特定文件節(jié),并對所述含病毒文件的格式進行調整;刪除所述含病毒文件頭部和/或尾部的特定大小的數(shù)據(jù);設置所述含病毒文件的大小。12.一種用于檢測和清除計算機病毒的裝置(200),包括腳本編寫和編譯模塊(201),用于利用腳本語言編寫用于檢測和清除計算機病毒的腳本并且將所述腳本編譯為二進制的病毒庫文件;檢測模塊(203),用于檢測計算機病毒的檢測處理,其包括-定位子模塊(203a),用于基于所述病毒庫文件中包含的多個病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理;-運算和邏輯控制子模塊(203b),用于將定位處理的結果作為變量進行運算處理和/或邏輯控制處理;-匹配子模塊(203c),用于基于所述病毒庫文件中包含的多個病毒記錄,對運算處理和/或邏輯控制處理的結果進行匹配處理,其中所述匹配處理包括二進制匹配處理和/或opcode匹配處理;以及清除模塊(205),用于對與所述多個病毒記錄中的一個或多個匹配的待檢測的文件進行病毒清除處理。13.如權利要求12所述的裝置,其中所述腳本語言使用可擴展標記語言XML進行描述。14.如權利要求12所述的裝置,其中所述可移植執(zhí)行文件結構包括可移植執(zhí)行文件入口點的偏移、可移植執(zhí)行文件頭的偏移、可移植執(zhí)行文件數(shù)據(jù)目錄的偏移、可移植執(zhí)行文件附加數(shù)據(jù)的偏移、可移植執(zhí)行文件節(jié)表的偏移、和/或可移植執(zhí)行文件節(jié)的偏移。15.如權利要求12所述的裝置,其中所述定位處理包括根據(jù)模擬中央處理單元解析的call、jmp、jcc、和/或loop指令,進行定位處理。16.如權利要求12所述的方法,其中所述多個病毒記錄中的每個病毒記錄具有各自的文件特征,所述定位子模塊(203a)檢查所述待檢測的文件的文件特征,并且基于文件特征與所述待檢測的文件符合的病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理。17.如權利要求12所述的裝置,其中所述匹配處理支持通配符號和浮動搜索,包括以下的一種或多種處理利用所述運算處理和/或邏輯控制處理的結果處的指令的opcode、操作數(shù)、長度,進行匹配處理;利用通過分析可移植執(zhí)行文件的入口指令序列得到的文件編譯器信息,進行匹配處理;利用所述待檢測的文件的屬性信息、資源信息、和/或版本信息,進行匹配處理;利用可移植執(zhí)行文件的導入函數(shù)信息和/或導出函數(shù)信息,進行匹配處理,所述導入函數(shù)信息包括導入模塊和導入函數(shù)的數(shù)量和名稱,所述導出函數(shù)信息包括導出模塊和導出函數(shù)的數(shù)量和名稱;以及利用所述待檢測的文件的位置和長度的散列值,進行匹配處理。18.如權利要求12所述的裝置,其中所述運算處理包括加、減、乘、除、邏輯與、邏輯或、移位、比較處理。19.如權利要求12所述的裝置,其中所述邏輯控制處理包括跳轉處理和返回處理,其中所述跳轉處理包括有條件跳轉處理和非條件跳轉處理,返回處理包括有條件返回處理和非條件返回處理。20.如權利要求12-19中的任一項所述的裝置,其中每個病毒記錄包含針對一種計算機病毒的、記錄如何進行定位處理、運算處理和/或邏輯控制處理、以及匹配處理的多條檢測信息、以及記錄如何進行病毒清除處理的多條清除信息,所述檢測模塊(203)對于每個病毒記錄,利用所述多條檢測信息,對待檢測的文件進行包括定位處理、運算處理和/或邏輯控制處理、以及匹配處理的檢測處理,在所述檢測處理中,如果所述多條檢測信息中的每一條檢測信息均被成功執(zhí)行,則將所述待檢測的文件判定為含病毒文件。21.如權利要求20所述的裝置,其中所述清除模塊(205)根據(jù)對應的病毒記錄中的多條清除信息,對所述含病毒文件進行病毒清除處理。22.如權利要求21所述的裝置,其中所述清除模塊(205)執(zhí)行以下的一個或多個處理刪除所述含病毒文件;修改所述含病毒文件的入口點地址;向所述含病毒文件的特定區(qū)域寫入數(shù)據(jù)塊;在所述含病毒文件內復制數(shù)據(jù)塊;刪除所述含病毒文件的特定文件節(jié),并對所述含病毒文件的格式進行調整;刪除所述含病毒文件頭部和/或尾部的特定大小的數(shù)據(jù);設置所述含病毒文件的大小。全文摘要本發(fā)明公開了一種用于檢測和清除計算機病毒的方法和裝置。所述方法包括利用腳本語言編寫用于檢測和清除計算機病毒的腳本并且將所述腳本編譯為二進制的病毒庫文件;用于檢測計算機病毒的檢測處理,其包括基于所述病毒庫文件中包含的多個病毒記錄,對待檢測的文件進行基于文件偏移、內存映像偏移、和/或可移植執(zhí)行文件結構的定位處理;將定位處理的結果作為變量進行運算處理和/或邏輯控制處理;基于所述病毒庫文件中包含的多個病毒記錄,對運算處理和/或邏輯控制處理的結果進行匹配處理,其中所述匹配處理包括二進制匹配處理和/或opcode匹配處理;以及對與所述多個病毒記錄中的一個或多個匹配的待檢測的文件進行病毒清除處理。文檔編號G06F21/56GK102867144SQ20121032869公開日2013年1月9日申請日期2012年9月6日優(yōu)先權日2012年9月6日發(fā)明者周輝,徐傳宇,李智鵬,唐杰申請人:北京奇虎科技有限公司,奇智軟件(北京)有限公司