本發(fā)明屬于安全防御
技術(shù)領(lǐng)域:
:,尤其涉及一種檢測和清除可移植可執(zhí)行文件中感染型病毒的方法及裝置。
背景技術(shù):
::通常,感染型病毒在感染正??梢浦部蓤?zhí)行PE(PortableExecutable,PE)文件時,在不同的PE文件中植入的代碼都可能不同,形態(tài)多變,而且感染型病毒在感染PE文件時,通常會將原PE文件入口點(diǎn)處的一段代碼覆蓋,并且將原PE文件入口點(diǎn)處的該段被覆蓋的代碼加密后保存在被感染后的PE文件中,這樣,一方面,被感染型病毒感染的PE文件執(zhí)行時需要先解密被加密的代碼,使得傳統(tǒng)的基于特征碼的查殺技術(shù),很難提取針對這類感染型病毒的通用特征碼。另一方面,如果想要清除PE文件中的感染型病毒,必須還原該段被加密的代碼?,F(xiàn)有技術(shù)中,清除文件中感染型病毒采用的方式通常為:分析感染后的文件,逆向病毒的解密代碼。這樣,由于感染型病毒的變種頗多,不同種類的感染型病毒的加密和解密的邏輯都可能發(fā)生變化,一旦感染型病毒的加密和解密邏輯發(fā)生變化,反病毒工程師就需要花費(fèi)大量的人力物力來對其進(jìn)行分析,大大增加了這類病毒的檢測和清除的難度,并且延長了檢測和清除的時間周期。所以,現(xiàn)有的檢測和清除PE文件中感染型病毒的方法,檢測和清除病毒的難度較大,周期較長。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明的一個目的是提出一種檢測和清除可移植可執(zhí)行文件中感染型病毒的方法,以解決現(xiàn)有的檢測和清除可移植可執(zhí)行文件中感染型病毒的方法中,檢測和清除病毒的難度較大,周期較長的問題。為了對披露的實(shí)施例的一些方面有一個基本的理解,下面給出了簡單的概括。該概括部分不是泛泛評述,也不是要確定關(guān)鍵/重要組成元素或描繪這些實(shí)施例的保護(hù)范圍。其唯一目的是用簡單的形式呈現(xiàn)一些概念,以此作為后面的詳細(xì)說明的序言。在一些可選的實(shí)施例中,該方法包括:判斷目標(biāo)可移植可執(zhí)行PE文件的PE文件頭是否具有疑似感染感染型病毒的預(yù)設(shè)特征;如果所述目標(biāo)PE文件的PE文件頭中具有所述預(yù)設(shè)特征,則對所述目標(biāo)PE文件進(jìn)行預(yù)處理;以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件,在執(zhí)行過程中,在相應(yīng)的目標(biāo)PE文件的入口點(diǎn)設(shè)置int3斷點(diǎn),執(zhí)行至入口點(diǎn)時,如果檢測到存在無效API調(diào)用,則去掉所述無效API調(diào)用;在以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件的過程中,對出現(xiàn)的debug事件進(jìn)行處理,直至出現(xiàn)異常無法處理事件時,結(jié)束debug執(zhí)行過程;采用當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容與預(yù)設(shè)病毒庫中的病毒特征進(jìn)行匹配;根據(jù)匹配的結(jié)果確定所述目標(biāo)PE文件是否感染了感染型病毒,并對感染了感染型病毒的目標(biāo)PE文件進(jìn)行病毒清除。進(jìn)一步,對所述目標(biāo)PE文件進(jìn)行預(yù)處理的過程,具體包括:去除所述目標(biāo)PE文件的PE文件頭中的隨機(jī)基址ASLR標(biāo)志和動態(tài)鏈接庫DLL標(biāo)志;將所述目標(biāo)PE文件的PE文件頭中的數(shù)據(jù)目錄表清零;去除所述目標(biāo)PE文件的PE文件頭中的導(dǎo)入表;去除所述目標(biāo)PE文件的PE文件頭中的線程本地存儲TLS字段。進(jìn)一步,對出現(xiàn)的debug事件進(jìn)行處理的過程,包括下述至少一個過程:如果出現(xiàn)動態(tài)鏈接庫DLL加載的debug事件,則再次判斷相應(yīng)的目標(biāo)PE文件的入口點(diǎn)EP代碼當(dāng)前是否已經(jīng)被執(zhí)行,如果是,則將當(dāng)前內(nèi)存中的DLL代碼置為0xCC后繼續(xù)后續(xù)的debug執(zhí)行過程;或,如果否,則保存DLL的加載信息后繼續(xù)后續(xù)的debug執(zhí)行過程;如果出現(xiàn)斷點(diǎn)異常的debug事件,則判斷該斷點(diǎn)異常的debug事件是否為入口點(diǎn)EP斷點(diǎn)異常事件,如果是,則將當(dāng)前內(nèi)存中的DLL代碼置為0xCC后繼續(xù)后續(xù)的debug執(zhí)行過程;或,如果否,則繼續(xù)后續(xù)的debug執(zhí)行過程。進(jìn)一步,根據(jù)匹配的結(jié)果確定所述目標(biāo)PE文件是否感染了感染型病毒的過程,具體包括:如果所述預(yù)設(shè)病毒庫中存在與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征,則確定所述目標(biāo)PE文件感染了感染型病毒;或,如果所述預(yù)設(shè)病毒庫中不存在與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征,則確定所述目標(biāo)PE文件未感染感染型病毒。進(jìn)一步,對感染了感染型病毒的目標(biāo)PE文件進(jìn)行病毒清除的過程,具體包括:根據(jù)與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征的特征串定位該目標(biāo)PE文件被替換的程序入口點(diǎn)OEP代碼長度、OEP位置、保存位置信息;定位到所述目標(biāo)PE文件被替換的OEP代碼長度、OEP位置、保存位置信息后,修復(fù)所述目標(biāo)PE文件,從而清除所述目標(biāo)PE文件中的感染型病毒。進(jìn)一步,預(yù)設(shè)特征包括下述至少一個特征:所述目標(biāo)PE文件的PE文件頭的入口點(diǎn)EP所在節(jié)可寫;所述目標(biāo)PE文件的PE文件頭的節(jié)區(qū)數(shù)目大于一;內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)包含可寫和可執(zhí)行屬性。本發(fā)明的另一個目的是提出一種檢測和清除可移植可執(zhí)行文件中感染型病毒的裝置。在一些可選的實(shí)施例中,該裝置包括:疑似感染分析模塊,用于判斷目標(biāo)可移植可執(zhí)行PE文件的PE文件頭是否具有疑似感染感染型病毒的預(yù)設(shè)特征;預(yù)處理模塊,用于如果所述目標(biāo)PE文件的PE文件頭中具有所述預(yù)設(shè)特征,則對所述目標(biāo)PE文件進(jìn)行預(yù)處理;執(zhí)行模塊,用于以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件,在執(zhí)行過程中,在相應(yīng)的目標(biāo)PE文件的入口點(diǎn)設(shè)置int3斷點(diǎn),執(zhí)行至入口點(diǎn)時,如果檢測到存在無效API調(diào)用,則去掉所述無效API調(diào)用;事件處理模塊,用于在以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件的過程中,對出現(xiàn)的debug事件進(jìn)行處理,直至出現(xiàn)異常無法處理事件時,結(jié)束debug執(zhí)行過程;特征匹配模塊,用于采用當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容與預(yù)設(shè)病毒庫中的病毒特征進(jìn)行匹配;病毒清除模塊,用于根據(jù)匹配的結(jié)果確定所述目標(biāo)PE文件是否感染了感染型病毒,并對感染了感染型病毒的目標(biāo)PE文件進(jìn)行病毒清除。進(jìn)一步,預(yù)處理模塊具體用于:去除所述目標(biāo)PE文件的PE文件頭中的隨機(jī)基址ASLR標(biāo)志和動態(tài)鏈接庫DLL標(biāo)志;將所述目標(biāo)PE文件的PE文件頭中的數(shù)據(jù)目錄表清零;去除所述目標(biāo)PE文件的PE文件頭中的導(dǎo)入表;去除所述目標(biāo)PE文件的PE文件頭中的線程本地存儲TLS字段。進(jìn)一步,事件處理模塊包括下述至少一個單元:第一事件處理單元,用于如果出現(xiàn)動態(tài)鏈接庫DLL加載的debug事件,則再次判斷相應(yīng)的目標(biāo)PE文件的入口點(diǎn)EP代碼當(dāng)前是否已經(jīng)被執(zhí)行,如果是,則將當(dāng)前內(nèi)存中的DLL代碼置為0xCC后,觸發(fā)所述執(zhí)行模塊繼續(xù)后續(xù)的debug執(zhí)行過程;或,如果否,則保存DLL的加載信息后,觸發(fā)所述執(zhí)行模塊繼續(xù)后續(xù)的debug執(zhí)行過程;第二事件處理單元,用于如果出現(xiàn)斷點(diǎn)異常的debug事件,則判斷該斷點(diǎn)異常的debug事件是否為入口點(diǎn)EP斷點(diǎn)異常事件,如果是,則將當(dāng)前內(nèi)存中的DLL代碼置為0xCC后,觸發(fā)所述執(zhí)行模塊繼續(xù)后續(xù)的debug執(zhí)行過程;或,如果否,則觸發(fā)所述執(zhí)行模塊繼續(xù)后續(xù)的debug執(zhí)行過程。進(jìn)一步,病毒清除模塊具體包括:病毒感染確定單元,用于如果所述預(yù)設(shè)病毒庫中存在與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征,則確定所述目標(biāo)PE文件感染了感染型病毒;或,如果所述預(yù)設(shè)病毒庫中不存在與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征,則確定所述目標(biāo)PE文件未感染感染型病毒;病毒感染清除單元,用于根據(jù)與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征的特征串定位該目標(biāo)PE文件被替換的程序入口點(diǎn)OEP代碼長度、OEP位置、保存位置信息;定位到所述目標(biāo)PE文件被替換的OEP代碼長度、OEP位置、保存位置信息后,修復(fù)所述目標(biāo)PE文件,從而清除所述目標(biāo)PE文件中的感染型病毒。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果為:本發(fā)明提供一種檢測和清除可移植可執(zhí)行文件中感染型病毒的方法及裝置,該方法中,首先初步判斷目標(biāo)PE文件是否疑似感染感染型病毒,如果確定目標(biāo)PE文件疑似感染感染型病毒,則對該目標(biāo)PE文件進(jìn)行預(yù)處理,之后以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件,在執(zhí)行過程中,對不同的debug事件進(jìn)行處理,直至出現(xiàn)異常無法處理事件時,停止debug執(zhí)行過程,此時,病毒已經(jīng)被解密,采用當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容與預(yù)設(shè)病毒庫中的病毒進(jìn)行匹配,如果匹配成功,說明目標(biāo)PE文件確實(shí)感染了感染型病毒,采用與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征的特征串定位目標(biāo)PE文件被替換的程序入口點(diǎn)OEP(OriginalEntryPoint,OEP)代碼長度、OEP位置、保存位置信息,定位到之后,修復(fù)目標(biāo)PE文件,即可完成對目標(biāo)PE文件中的感染型病毒清除的目的,無需再花費(fèi)大量時間與工程逆向病毒的解密代碼,病毒的檢測和清除過程更加簡單,并且極大的縮短了檢測和清除病毒的時間周期,效率更高。為了上述以及相關(guān)的目的,一個或多個實(shí)施例包括后面將詳細(xì)說明并在權(quán)利要求中特別指出的特征。下面的說明以及附圖詳細(xì)說明某些示例性方面,并且其指示的僅僅是各個實(shí)施例的原則可以利用的各種方式中的一些方式。其它的益處和新穎性特征將隨著下面的詳細(xì)說明結(jié)合附圖考慮而變得明顯,所公開的實(shí)施例是要包括所有這些方面以及它們的等同。附圖說明圖1是本發(fā)明實(shí)施例的一種檢測和清除可移植可執(zhí)行文件中感染型病毒的方法的流程示意圖;圖2是本發(fā)明實(shí)施例的一種檢測和清除可移植可執(zhí)行文件中感染型病毒的裝置的結(jié)構(gòu)框圖。具體實(shí)施方式以下描述和附圖充分地示出本發(fā)明的具體實(shí)施方案,以使本領(lǐng)域的技術(shù)人員能夠?qū)嵺`它們。實(shí)施例僅代表可能的變化。除非明確要求,否則單獨(dú)的部件和功能是可選的,并且操作的順序可以變化。一些實(shí)施方案的部分和特征可以被包括在或替換其他實(shí)施方案的部分和特征。本發(fā)明的實(shí)施方案的范圍包括權(quán)利要求書的整個范圍,以及權(quán)利要求書的所有可獲得的等同物。在本文中,本發(fā)明的這些實(shí)施方案可以被單獨(dú)地或總地用術(shù)語“發(fā)明”來表示,這僅僅是為了方便,并且如果事實(shí)上公開了超過一個的發(fā)明,不是要自動地限制該應(yīng)用的范圍為任何單個發(fā)明或發(fā)明構(gòu)思。現(xiàn)在結(jié)合附圖進(jìn)行說明,圖1示出的是一些可選的實(shí)施例中一種檢測和清除可移植可執(zhí)行文件中感染型病毒的方法的流程圖;圖2示出的是一些可選的實(shí)施例中一種檢測和清除可移植可執(zhí)行文件中感染型病毒的裝置的結(jié)構(gòu)框圖。如圖1所示,在一些可選的實(shí)施例中,公開了一種檢測和清除可移植可執(zhí)行文件中感染型病毒的方法,該方法包括:S11、判斷目標(biāo)可移植可執(zhí)行PE文件的PE文件頭是否具有疑似感染感染型病毒的預(yù)設(shè)特征;為了確??梢浦部蓤?zhí)行PE文件在被執(zhí)行時,能夠保證系統(tǒng)運(yùn)行的安全可靠性,用戶通常會對PE文件進(jìn)行感染型病毒的檢測和清除,本文中,將用戶想要對其進(jìn)行感染型病毒檢測和清除的當(dāng)前可移植可執(zhí)行PE文件定義為目標(biāo)可移植可執(zhí)行PE文件,簡稱目標(biāo)PE文件,任意一個用戶想要對其進(jìn)行感染型病毒檢測和清除的PE文件都可以作為目標(biāo)PE文件。預(yù)設(shè)特征預(yù)先存儲于檢測系統(tǒng)內(nèi),包括下述至少一個特征:所述目標(biāo)PE文件的PE文件頭的入口點(diǎn)EP所在節(jié)可寫;所述目標(biāo)PE文件的PE文件頭的節(jié)區(qū)數(shù)目大于一;內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)包含可寫和可執(zhí)行屬性。亦即,只要目標(biāo)PE文件的PE文件頭中出現(xiàn)上述一個或多個特征,均認(rèn)為該目標(biāo)PE文件疑似感染感染型病毒。并且,用戶可以將上述未提及的其它與目標(biāo)PE文件的PE文件頭相關(guān)的、可以判斷目標(biāo)PE文件疑似感染感染型病毒的特征作為預(yù)設(shè)特征預(yù)先存儲于檢測系統(tǒng)內(nèi)。S12、如果所述目標(biāo)PE文件的PE文件頭中具有所述預(yù)設(shè)特征,則對所述目標(biāo)PE文件進(jìn)行預(yù)處理;對目標(biāo)PE文件進(jìn)行預(yù)處理的過程,具體包括:去除所述目標(biāo)PE文件的PE文件頭中的隨機(jī)基址ASLR(Addressspacelayoutrandomization,ASLR)標(biāo)志和動態(tài)鏈接庫DLL(DynamicLinkLibrary,DLL)標(biāo)志;將所述目標(biāo)PE文件的PE文件頭中的數(shù)據(jù)目錄表清零;去除所述目標(biāo)PE文件的PE文件頭中的導(dǎo)入表;去除所述目標(biāo)PE文件的PE文件頭中的線程本地存儲TLS字段。S13、以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件,在執(zhí)行過程中,在相應(yīng)的目標(biāo)PE文件的入口點(diǎn)設(shè)置int3斷點(diǎn),執(zhí)行至入口點(diǎn)時,如果檢測到存在無效API調(diào)用,則去掉所述無效API調(diào)用;S14、在以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件的過程中,對出現(xiàn)的debug事件進(jìn)行處理,直至出現(xiàn)異常無法處理事件時,結(jié)束debug執(zhí)行過程;在以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件的過程中,可能會出現(xiàn)debug事件,對出現(xiàn)的每一個debug事件需要進(jìn)行相應(yīng)的處理。對debug執(zhí)行過程中出現(xiàn)的debug事件進(jìn)行處理的過程,包括下述至少一個過程:如果出現(xiàn)動態(tài)鏈接庫DLL加載的debug事件,則再次判斷相應(yīng)的目標(biāo)PE文件的入口點(diǎn)EP代碼當(dāng)前是否已經(jīng)被執(zhí)行,如果是,則將當(dāng)前內(nèi)存中的DLL代碼置為0xCC后繼續(xù)后續(xù)的debug執(zhí)行過程;或,如果否,則保存DLL的加載信息后繼續(xù)后續(xù)的debug執(zhí)行過程;如果出現(xiàn)斷點(diǎn)異常的debug事件,則判斷該斷點(diǎn)異常的debug事件是否為入口點(diǎn)EP斷點(diǎn)異常事件,如果是,則將當(dāng)前內(nèi)存中的DLL代碼置為0xCC后繼續(xù)后續(xù)的debug執(zhí)行過程;或,如果否,則繼續(xù)后續(xù)的debug執(zhí)行過程。S15、采用當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容與預(yù)設(shè)病毒庫中的病毒特征進(jìn)行匹配;debug執(zhí)行過程結(jié)束后,病毒便已經(jīng)被解密,之后采用當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容與預(yù)設(shè)病毒庫中的病毒特征進(jìn)行匹配后,就可以根據(jù)匹配結(jié)果確定目標(biāo)PE文件是否感染了感染型病毒,并根據(jù)匹配的病毒特征對目標(biāo)PE文件進(jìn)行修復(fù),以清除目標(biāo)PE文件中的感染型病毒。整個過程中,無需再花費(fèi)大量時間與工程逆向病毒的解密代碼,使得病毒的檢測和清除更加簡單,并且極大的減小了檢測和清除病毒的時間周期,提高了檢測效率。S16、根據(jù)匹配的結(jié)果確定所述目標(biāo)PE文件是否感染了感染型病毒,并對感染了感染型病毒的目標(biāo)PE文件進(jìn)行病毒清除。根據(jù)匹配的結(jié)果確定所述目標(biāo)PE文件是否感染了感染型病毒的過程,具體包括:如果所述預(yù)設(shè)病毒庫中存在與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征,則確定所述目標(biāo)PE文件感染了感染型病毒;或,如果所述預(yù)設(shè)病毒庫中不存在與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征,則確定所述目標(biāo)PE文件未感染感染型病毒。對感染了感染型病毒的目標(biāo)PE文件進(jìn)行病毒清除的過程,具體包括:根據(jù)與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征的特征串定位該目標(biāo)PE文件被替換的程序入口點(diǎn)OEP代碼長度、OEP位置、保存位置信息;定位到所述目標(biāo)PE文件被替換的OEP代碼長度、OEP位置、保存位置信息后,修復(fù)所述目標(biāo)PE文件,從而清除所述目標(biāo)PE文件中的感染型病毒。該方法中,首先初步判斷目標(biāo)PE文件是否疑似感染感染型病毒,如果確定目標(biāo)PE文件疑似感染感染型病毒,則對該目標(biāo)PE文件進(jìn)行預(yù)處理,之后以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件,在執(zhí)行過程中,對不同的debug事件進(jìn)行處理,直至出現(xiàn)異常無法處理事件時,停止debug執(zhí)行過程,此時,病毒已經(jīng)被解密,采用當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容與預(yù)設(shè)病毒庫中的病毒進(jìn)行匹配,如果匹配成功,說明目標(biāo)PE文件確實(shí)感染了感染型病毒,采用與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征的特征串定位目標(biāo)PE文件被替換的程序入口點(diǎn)OEP(OriginalEntryPoint,OEP)代碼長度、OEP位置、保存位置信息,定位到之后,修復(fù)目標(biāo)PE文件,即可完成對目標(biāo)PE文件中的感染型病毒清除的目的,無需再花費(fèi)大量時間與工程逆向病毒的解密代碼,病毒的檢測和清除過程更加簡單,并且極大的縮短了檢測和清除病毒的時間周期,效率更高。如圖2所示,在一些可選的實(shí)施例中,公開了一種檢測和清除可移植可執(zhí)行文件中感染型病毒的裝置200,該裝置200包括:疑似感染分析模塊201,用于判斷目標(biāo)可移植可執(zhí)行PE文件的PE文件頭是否具有疑似感染感染型病毒的預(yù)設(shè)特征;預(yù)處理模塊202,用于如果所述目標(biāo)PE文件的PE文件頭中具有所述預(yù)設(shè)特征,則對所述目標(biāo)PE文件進(jìn)行預(yù)處理;執(zhí)行模塊203,用于以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件,在執(zhí)行過程中,在相應(yīng)的目標(biāo)PE文件的入口點(diǎn)設(shè)置int3斷點(diǎn),執(zhí)行至入口點(diǎn)時,如果檢測到存在無效API調(diào)用,則去掉所述無效API調(diào)用;事件處理模塊204,用于在以debug方式執(zhí)行預(yù)處理后的目標(biāo)PE文件的過程中,對出現(xiàn)的debug事件進(jìn)行處理,直至出現(xiàn)異常無法處理事件時,結(jié)束debug執(zhí)行過程;特征匹配模塊205,用于采用當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容與預(yù)設(shè)病毒庫中的病毒特征進(jìn)行匹配;病毒清除模塊206,用于根據(jù)匹配的結(jié)果確定所述目標(biāo)PE文件是否感染了感染型病毒,并對感染了感染型病毒的目標(biāo)PE文件進(jìn)行病毒清除。進(jìn)一步,預(yù)處理模塊202具體用于:去除所述目標(biāo)PE文件的PE文件頭中的隨機(jī)基址ASLR標(biāo)志和動態(tài)鏈接庫DLL標(biāo)志;將所述目標(biāo)PE文件的PE文件頭中的數(shù)據(jù)目錄表清零;去除所述目標(biāo)PE文件的PE文件頭中的導(dǎo)入表;去除所述目標(biāo)PE文件的PE文件頭中的線程本地存儲TLS字段。進(jìn)一步,事件處理模塊204包括下述至少一個單元:第一事件處理單元2041,用于如果出現(xiàn)動態(tài)鏈接庫DLL加載的debug事件,則再次判斷相應(yīng)的目標(biāo)PE文件的入口點(diǎn)EP代碼當(dāng)前是否已經(jīng)被執(zhí)行,如果是,則將當(dāng)前內(nèi)存中的DLL代碼置為0xCC后,觸發(fā)所述執(zhí)行模塊203繼續(xù)后續(xù)的debug執(zhí)行過程;或,如果否,則保存DLL的加載信息后,觸發(fā)所述執(zhí)行模塊203繼續(xù)后續(xù)的debug執(zhí)行過程;第二事件處理單元2042,用于如果出現(xiàn)斷點(diǎn)異常的debug事件,則判斷該斷點(diǎn)異常的debug事件是否為入口點(diǎn)EP斷點(diǎn)異常事件,如果是,則將當(dāng)前內(nèi)存中的DLL代碼置為0xCC后,觸發(fā)所述執(zhí)行模塊203繼續(xù)后續(xù)的debug執(zhí)行過程;或,如果否,則觸發(fā)所述執(zhí)行模塊203繼續(xù)后續(xù)的debug執(zhí)行過程。進(jìn)一步,病毒清除模塊206具體包括:病毒感染確定單元2061,用于如果所述預(yù)設(shè)病毒庫中存在與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征,則確定所述目標(biāo)PE文件感染了感染型病毒;或,如果所述預(yù)設(shè)病毒庫中不存在與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征,則確定所述目標(biāo)PE文件未感染感染型病毒;病毒感染清除單元2062,用于根據(jù)與當(dāng)前內(nèi)存中目標(biāo)PE文件的PE結(jié)構(gòu)中的最后一個有效節(jié)的內(nèi)容相匹配的病毒特征的特征串定位該目標(biāo)PE文件被替換的程序入口點(diǎn)OEP代碼長度、OEP位置、保存位置信息;定位到所述目標(biāo)PE文件被替換的OEP代碼長度、OEP位置、保存位置信息后,修復(fù)所述目標(biāo)PE文件,從而清除所述目標(biāo)PE文件中的感染型病毒。采用該裝置對目標(biāo)PE文件進(jìn)行感染型病毒的檢測和清除時,無需花費(fèi)大量時間與工程逆向病毒的解密代碼,病毒的檢測和清除過程更加簡單,并且極大的縮短了檢測和清除病毒的時間周期,效率更高??傊?,以上所述僅為本發(fā)明的實(shí)施例,并非用于限定本發(fā)明的保護(hù)范圍,而用于說明本發(fā)明。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3