一種加載器Loader病毒的查殺方法、裝置及終端的制作方法
【專利摘要】本發(fā)明實(shí)施例公開了一種加載器Loader病毒的查殺方法,包括:獲取目標(biāo)檢測(cè)程序的動(dòng)態(tài)鏈接庫(kù)DLL文件;提取所述目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù);判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能,若是,則確定所述目標(biāo)檢測(cè)程序的DLL文件是所述Loader病毒;清除或隔離所述目標(biāo)檢測(cè)程序。相應(yīng)地,本發(fā)明實(shí)施例還公開了一種加載器Loader病毒的查殺裝置和一種終端。采用本發(fā)明,可以實(shí)現(xiàn)對(duì)Loader病毒的查殺,具有維護(hù)成本低和準(zhǔn)確率高的特點(diǎn)。
【專利說明】—種加載器Loader病毒的查殺方法、裝置及終端
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)安全【技術(shù)領(lǐng)域】,尤其涉及一種加載器Loader病毒的查殺方法、裝置及終端。
【背景技術(shù)】
[0002]木馬病毒是一種常見的計(jì)算機(jī)病毒,其隱藏在宿主計(jì)算機(jī)內(nèi),病毒作者可以通過木馬病毒對(duì)宿主計(jì)算機(jī)進(jìn)行毀壞、竊取文件或遠(yuǎn)程操控等,例如:病毒作者可以通過木馬病毒在遠(yuǎn)程控制宿主計(jì)算機(jī)執(zhí)行“開關(guān)攝像頭”或“開關(guān)麥克風(fēng)”等敏感操作,對(duì)用戶的隱私造成極大威脅。其中,加載器(Loader)病毒便屬于木馬病毒,加載器病毒通常偽裝作主程序的DLL(Dynamic Link Library,動(dòng)態(tài)連接庫(kù))文件,隨主程序啟動(dòng)而運(yùn)行。需要指出的是,加載器病毒所依附的主程序往往是知名企業(yè)的程序,具有安全認(rèn)證的數(shù)字簽名,因此被查殺難度大。
[0003]目前,普遍應(yīng)對(duì)加載器病毒的方法是,先確定待檢驗(yàn)的主程序,再在預(yù)設(shè)的數(shù)據(jù)庫(kù)中查找在正常情況下該主程序的DLL文件的文件名列表,然后檢驗(yàn)該主程序的DLL文件的文件名列表是否與正常情況下的一致,若不一致說明該主程序中偽裝有加載器病毒。但是,由于主程序數(shù)目龐大且更新頻繁,維護(hù)數(shù)據(jù)庫(kù)的成本非常高,一旦維護(hù)沒同步,誤報(bào)的幾率非常高,影響了用戶的體驗(yàn)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例所要解決的技術(shù)問題在于,提供一種加載器Loader病毒的查殺方法、裝置及終端,可以實(shí)現(xiàn)對(duì)Loader病毒的查殺,具有維護(hù)成本低和準(zhǔn)確率高的特點(diǎn)。
[0005]為了解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種加載器Loader病毒的查殺方法,包括:
[0006]獲取目標(biāo)檢測(cè)程序的動(dòng)態(tài)鏈接庫(kù)DLL文件;
[0007]提取所述目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù);
[0008]判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能,若是,則確定所述目標(biāo)檢測(cè)程序的DLL文件是所述Loader病毒;
[0009]清除或隔離所述目標(biāo)檢測(cè)程序。
[0010]相應(yīng)地,本發(fā)明實(shí)施例還提供了一種加載器Loader病毒的查殺裝置,包括:
[0011]文件獲取模塊,用于獲取目標(biāo)檢測(cè)程序的動(dòng)態(tài)鏈接庫(kù)DLL文件;
[0012]函數(shù)提取模塊,用于提取所述目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù);
[0013]病毒確定模塊,用于判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能,若是,則確定所述目標(biāo)檢測(cè)程序的DLL文件是所述Loader病毒;
[0014]病毒處理模塊,用于清除或隔離所述目標(biāo)檢測(cè)程序。
[0015]實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:本發(fā)明實(shí)施例通過提取目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù),判斷在DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)導(dǎo)出函數(shù)具有邏輯功能的方法,從而確定目標(biāo)檢測(cè)程序的DLL文件是否為L(zhǎng)oader病毒,可以實(shí)現(xiàn)對(duì)Loader病毒的查殺,具有維護(hù)成本低和準(zhǔn)確率高的特點(diǎn)。
【專利附圖】
【附圖說明】
[0016]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0017]圖1是本發(fā)明實(shí)施例提供的一種加載器Loader病毒的查殺方法的流程示意圖;
[0018]圖2是本發(fā)明實(shí)施例提供的另一種加載器Loader病毒的查殺方法的流程示意圖;
[0019]圖3是本發(fā)明實(shí)施例提供的一種加載器Loader病毒的查殺裝置的結(jié)構(gòu)示意圖;
[0020]圖4是本發(fā)明實(shí)施例提供的一種文件獲取模塊的結(jié)構(gòu)示意圖;
[0021]圖5是本發(fā)明實(shí)施例提供的一種函數(shù)提取模塊的結(jié)構(gòu)示意圖;
[0022]圖6是本發(fā)明實(shí)施例提供的一種文件目錄的示意圖;
[0023]圖7是本發(fā)明實(shí)施例提供的另一種加載器Loader病毒的查殺裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0024]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0025]本發(fā)明實(shí)施例中的加載器Loader病毒的查殺裝置(以下簡(jiǎn)稱為“本發(fā)明裝置”)內(nèi)置于終端,所述終端可以包括個(gè)人電腦、智能手機(jī)、平板電腦、游戲機(jī)以及電子閱讀器等,所述終端可以安裝或運(yùn)行程序。
[0026]應(yīng)理解,本發(fā)明實(shí)施例的Loader病毒是一種木馬病毒,病毒作者可以通過木馬病毒對(duì)宿主計(jì)算機(jī)進(jìn)行毀壞、竊取文件或遠(yuǎn)程操控等。Loader病毒通常偽裝作主程序的子文件,隨主程序啟動(dòng)而運(yùn)行。其中,在Windows系統(tǒng)的終端中,上述主程序可以是可執(zhí)行(EXE)程序,以ΕΧΕ”作為文件名后綴,子文件可以是DLL(Dynamic Link Library,動(dòng)態(tài)連接庫(kù))文件,需要指出的是,EXE程序的功能是通過運(yùn)行一個(gè)或多個(gè)DLL文件來實(shí)現(xiàn)的。一般地,EXE程序的DLL文件要么與其處于同一文件目錄下,要么處于系統(tǒng)文件目錄,因此在EXE程序啟動(dòng)時(shí),終端會(huì)默認(rèn)首先在EXE程序的文件目錄下查找DLL文件,若無查找結(jié)果再到系統(tǒng)文件目錄下查找DLL文件。利用上述特點(diǎn),病毒作者將Loader病毒替換EXE程序的DLL文件或?qū)oader病毒放置在EXE程序的文件目錄下,然后將上述EXE程序偽裝作正常EXE程序欺騙用戶在終端上使用,當(dāng)終端啟動(dòng)該EXE程序后便會(huì)運(yùn)行Loader病毒。
[0027]還應(yīng)理解,Loader病毒具有以下特點(diǎn):1、在文件類型上,Loader病毒是DLL文件;
2、為了欺騙終端,Loader病毒的導(dǎo)出函數(shù)的個(gè)數(shù)與正常DLL的導(dǎo)出函數(shù)的個(gè)數(shù)相同;3、Loader病毒僅利用其中一個(gè)導(dǎo)出函數(shù)實(shí)現(xiàn)其行為指令,而其它的導(dǎo)出函數(shù)使用無用指令來充數(shù)。
[0028]圖1是本發(fā)明實(shí)施例中一種加載器Loader病毒的查殺方法的流程示意圖。如圖所示本實(shí)施例中的加載器Loader病毒的查殺方法的流程可以包括:
[0029]SlOl,獲取目標(biāo)檢測(cè)程序的動(dòng)態(tài)鏈接庫(kù)DLL文件。
[0030]所述目標(biāo)檢測(cè)程序可以是終端上的任意一個(gè)應(yīng)用程序,在本發(fā)明實(shí)施例中,目標(biāo)檢測(cè)程序可以是EXE程序,例如QQ.EXE等,目標(biāo)檢測(cè)程序包括一個(gè)或多個(gè)DLL文件。所述DLL文件隨目標(biāo)檢測(cè)程序啟動(dòng)而運(yùn)行,DLL文件運(yùn)行時(shí)將調(diào)用行為指令,從而實(shí)現(xiàn)目標(biāo)檢測(cè)程序的功能。
[0031]具體的,本發(fā)明裝置獲取目標(biāo)檢測(cè)程序的一個(gè)或多個(gè)DLL文件。具體實(shí)現(xiàn)過程中,本發(fā)明裝置可先確定目標(biāo)檢測(cè)程序所在的文件目錄,再獲取文件目錄下的一個(gè)或多個(gè)DLL文件。
[0032]例如,本發(fā)明裝置根據(jù)目標(biāo)檢測(cè)程序的路徑,找到目標(biāo)檢測(cè)程序的文件目錄,文件目錄可如圖6所示,其中,Documentl、Document2表示文件夾,X.EXE表示目標(biāo)檢測(cè)程序,A.DLL、B.DLL、E.DLL和F.DLL表示目標(biāo)檢測(cè)程序的DLL文件,C.SYS和D.DAT表示其它格式的文件,由于在文件類型上Loader病毒是DLL文件,因此本發(fā)明裝置僅需獲取文件目錄下的DLL文件。需要指出的是,DLL文件可包括資源類(resource)的DLL文件,資源類的DLL文件常用于導(dǎo)出圖標(biāo)、光標(biāo)、對(duì)話框或字符串等,因此其字節(jié)非常小,無法執(zhí)行較復(fù)雜的行為指令,進(jìn)而病毒作者不會(huì)將Loader病毒偽裝或替換資源類的DLL文件,故進(jìn)一步的,本發(fā)明裝置僅需獲取文件目錄下的非資源類的DLL文件。
[0033]S102,提取所述目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù)。
[0034]應(yīng)理解,DLL文件所執(zhí)行的指令是通過導(dǎo)出函數(shù)來實(shí)現(xiàn)的,每個(gè)DLL文件可有多個(gè)導(dǎo)出函數(shù)。
[0035]具體的,本發(fā)明裝置提取目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù)。具體實(shí)現(xiàn)過程中,本發(fā)明裝置可通過以下方法提取導(dǎo)出函數(shù):先獲取目標(biāo)檢測(cè)程序的DLL文件中的多個(gè)函數(shù)地址,再提取多個(gè)函數(shù)地址分別對(duì)應(yīng)的多個(gè)導(dǎo)出函數(shù)。其中,所述函數(shù)地址可指向?qū)С龊瘮?shù)的存儲(chǔ)位置,因而本發(fā)明裝置可根據(jù)導(dǎo)出函數(shù)的存儲(chǔ)位置提取導(dǎo)出函數(shù)。
[0036]例如:本發(fā)明裝置先獲取到目標(biāo)檢測(cè)程序的DLL文件的三個(gè)函數(shù)地址,分別為address_A、address_B 和 address_C,再根據(jù) address_A、address_B 和 address_C 分別提取其對(duì)應(yīng)的導(dǎo)出函數(shù)AO、BO和CO。
[0037]S103,判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能,若是,則確定所述目標(biāo)檢測(cè)程序的DLL文件是所述Loader病毒。
[0038]可選的,為了提高判斷的準(zhǔn)確性,本發(fā)明裝置將先判斷每個(gè)DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)是否大于預(yù)設(shè)個(gè)數(shù)閾值,在確定導(dǎo)出函數(shù)的個(gè)數(shù)大于預(yù)設(shè)個(gè)數(shù)閾值后,再執(zhí)行下面的步驟。其中,預(yù)設(shè)個(gè)數(shù)閾值一般設(shè)置為2,即每個(gè)DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)應(yīng)至少有3個(gè),無導(dǎo)出函數(shù)或?qū)С龊瘮?shù)少于3個(gè)的DLL文件不具普遍性,會(huì)影響判斷的準(zhǔn)確性。
[0039]具體的,本發(fā)明裝置判斷在DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)導(dǎo)出函數(shù)具有邏輯功能,若是,則確定目標(biāo)檢測(cè)程序的DLL文件是Loader病毒。本發(fā)明實(shí)施例作出上述判斷的依據(jù)在于,為了欺騙終端,Loader病毒的導(dǎo)出函數(shù)的個(gè)數(shù)與正常DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)相同,假設(shè)正常的DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)為5個(gè),那么Loader病毒的導(dǎo)出函數(shù)也為5個(gè),但是,Loader病毒僅利用其中I個(gè)導(dǎo)出函數(shù)實(shí)現(xiàn)其行為指令,其它4個(gè)導(dǎo)出函數(shù)無任何作用,因而通常使用無用指令來填充其它4個(gè)導(dǎo)出函數(shù)。
[0040]可選的,本發(fā)明裝置可以通過以下步驟來判斷在DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)導(dǎo)出函數(shù)具有邏輯功能:基于反匯編引擎,將DLL文件的導(dǎo)出函數(shù)由字節(jié)碼轉(zhuǎn)換為源代碼;通過對(duì)轉(zhuǎn)換為源代碼的導(dǎo)出函數(shù)進(jìn)行邏輯分析,判斷在DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)導(dǎo)出函數(shù)的源代碼具有邏輯功能。需要指出的是,DLL文件的導(dǎo)出函數(shù)由字節(jié)碼組成,而很難直接根據(jù)字節(jié)碼判斷DLL文件的導(dǎo)出函數(shù)有無邏輯功能,因此本發(fā)明裝置可先通過反匯編引擎將導(dǎo)出函數(shù)由字節(jié)碼轉(zhuǎn)換為源代碼,例如,本發(fā)明裝置將字節(jié)碼為“74”的語(yǔ)句轉(zhuǎn)換為源代碼為“GNZ”的匯編語(yǔ)句。然后,本發(fā)明裝置對(duì)源代碼進(jìn)行邏輯分析,判斷DLL文件的各個(gè)導(dǎo)出函數(shù)是否具有邏輯功能,如某個(gè)導(dǎo)出函數(shù)的源代碼可對(duì)應(yīng)用程序編程接口 API進(jìn)行調(diào)用,則說明該導(dǎo)出函數(shù)具有邏輯功能,又如某個(gè)導(dǎo)出函數(shù)的源代碼均為“AO:Xor eax,eax Retn”等占位用的無用指令,則說明該導(dǎo)出函數(shù)不具有邏輯功能。
[0041]進(jìn)一步可選的,在判斷導(dǎo)出函數(shù)有無邏輯功能的具體實(shí)現(xiàn)過程中,本發(fā)明裝置可只對(duì)源代碼的長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù)進(jìn)行邏輯分析。原因在于,想要實(shí)現(xiàn)一定邏輯功能,其導(dǎo)出函數(shù)的源代碼的長(zhǎng)度必然不會(huì)太短,通過設(shè)置上述預(yù)設(shè)長(zhǎng)度閾值,本發(fā)明裝置可忽略對(duì)長(zhǎng)度太短的源代碼進(jìn)行邏輯分析,并直接判定其不具備邏輯功能,例如:假設(shè)某個(gè)DLL文件有100個(gè)導(dǎo)出函數(shù),而其中的80個(gè)導(dǎo)出函數(shù)的源代碼的長(zhǎng)度均不大于預(yù)設(shè)長(zhǎng)度閾值,那么本發(fā)明裝置可直接判定這80個(gè)導(dǎo)出函數(shù)無邏輯功能,進(jìn)而只對(duì)剩下的20個(gè)導(dǎo)出函數(shù)的源代碼進(jìn)行邏輯分析。眾所周知的,進(jìn)行邏輯分析需要消耗一定的開銷和時(shí)間,通過上述方法,本發(fā)明裝置可節(jié)省開銷和時(shí)間,增大效率,提高用戶體驗(yàn)。
[0042]S104,清除或隔離所述目標(biāo)檢測(cè)程序。
[0043]具體的,本發(fā)明裝置將清除或隔離被確定攜帶有Loader病毒的目標(biāo)檢測(cè)程序。
[0044]進(jìn)一步可選的,本發(fā)明裝置針對(duì)上述目標(biāo)檢測(cè)程序更新病毒數(shù)據(jù)庫(kù),當(dāng)檢測(cè)到出現(xiàn)目標(biāo)檢測(cè)程序時(shí),向用戶發(fā)出危險(xiǎn)警報(bào)。其中,上述病毒數(shù)據(jù)庫(kù)可以是云端數(shù)據(jù)庫(kù),其它終端可以通過互聯(lián)網(wǎng)從云端數(shù)據(jù)庫(kù)獲取病毒資料。
[0045]本發(fā)明實(shí)施例通過提取目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù),判斷在DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)導(dǎo)出函數(shù)具有邏輯功能的方法,確定目標(biāo)檢測(cè)程序的DLL文件是否為L(zhǎng)oader病毒,可以實(shí)現(xiàn)對(duì)Loader病毒的查殺,具有維護(hù)成本低和準(zhǔn)確率高的特點(diǎn)。
[0046]圖2是本發(fā)明實(shí)施例中另一種加載器Loader病毒的查殺方法的流程示意圖,可以包括:
[0047]S201,確定所述目標(biāo)檢測(cè)程序所在的文件目錄。
[0048]所述目標(biāo)檢測(cè)程序可以是終端上的任意一個(gè)應(yīng)用程序,在本發(fā)明實(shí)施例中,目標(biāo)檢測(cè)程序可以是EXE程序,例如QQ.EXE等,目標(biāo)檢測(cè)程序包括一個(gè)或多個(gè)DLL文件。所述DLL文件隨目標(biāo)檢測(cè)程序啟動(dòng)而運(yùn)行,DLL文件運(yùn)行時(shí)將調(diào)用行為指令,從而實(shí)現(xiàn)目標(biāo)檢測(cè)程序的功能。
[0049]具體的,本發(fā)明裝置可確定目標(biāo)檢測(cè)程序所在的文件目錄。例如,本發(fā)明裝置根據(jù)目標(biāo)檢測(cè)程序的路徑,找到目標(biāo)檢測(cè)程序的文件目錄,文件目錄可如圖6所示,其中,Documentl、Document2 表示文件夾,X.EXE 表示目標(biāo)檢測(cè)程序,A.DLL,B.DLL、E.DLL 和 F.DLL表示目標(biāo)檢測(cè)程序的DLL文件,C.SYS和D.DAT表示其它格式的文件。
[0050]S202,獲取所述文件目錄下的非資源類的DLL文件。
[0051]具體的,本發(fā)明裝置獲取文件目錄下的一個(gè)或多個(gè)非資源類的DLL文件。需要指出的是,由于在文件類型上Loader病毒是DLL文件,因此本發(fā)明裝置僅需獲取文件目錄下的DLL文件。另外,DLL文件可包括資源類(resource)的DLL文件,資源類的DLL文件常用于導(dǎo)出圖標(biāo)、光標(biāo)、對(duì)話框或字符串等,因此其字節(jié)非常小,無法執(zhí)行較復(fù)雜的行為指令,進(jìn)而病毒作者不會(huì)將Loader病毒偽裝或替換資源類的DLL文件,故進(jìn)一步的,本發(fā)明裝置僅需獲取文件目錄下的非資源類的DLL文件。
[0052]S203,獲取所述目標(biāo)檢測(cè)程序的DLL文件中的多個(gè)函數(shù)地址。
[0053]應(yīng)理解,DLL文件所執(zhí)行的指令是通過導(dǎo)出函數(shù)來實(shí)現(xiàn)的,每個(gè)DLL文件可有多個(gè)導(dǎo)出函數(shù),其中,所述函數(shù)地址可指向?qū)С龊瘮?shù)的存儲(chǔ)位置,根據(jù)導(dǎo)出函數(shù)的存儲(chǔ)位置可提取導(dǎo)出函數(shù)。
[0054]具體的,本發(fā)明裝置提取目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù)。
[0055]S204,提取所述多個(gè)函數(shù)地址分別對(duì)應(yīng)的多個(gè)所述導(dǎo)出函數(shù)。
[0056]具體的,本發(fā)明裝置提取多個(gè)函數(shù)地址分別對(duì)應(yīng)的多個(gè)導(dǎo)出函數(shù)。例如:假設(shè)獲取到目標(biāo)檢測(cè)程序的DLL文件的三個(gè)函數(shù)地址,分別為address_A、address_B和address_C,本發(fā)明裝置根據(jù)address_A、address_B和address_C分別提取其對(duì)應(yīng)的導(dǎo)出函數(shù)A O、B()和C O。
[0057]S205,判斷所述DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)是否大于3個(gè)。
[0058]具體的,為了提高判斷的準(zhǔn)確性,本發(fā)明裝置將判斷每個(gè)DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)是否大于預(yù)設(shè)個(gè)數(shù)閾值,在確定導(dǎo)出函數(shù)的個(gè)數(shù)大于預(yù)設(shè)個(gè)數(shù)閾值后,再執(zhí)行步驟S206。其中,預(yù)設(shè)個(gè)數(shù)閾值一般設(shè)置為2,即每個(gè)DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)應(yīng)至少有3個(gè),無導(dǎo)出函數(shù)或?qū)С龊瘮?shù)少于3個(gè)的DLL文件不具普遍性,會(huì)影響判斷的準(zhǔn)確性。
[0059]S206,基于反匯編引擎,將所述DLL文件的導(dǎo)出函數(shù)由字節(jié)碼轉(zhuǎn)換為源代碼。
[0060]一般的,DLL文件的導(dǎo)出函數(shù)由字節(jié)碼組成。具體的,本發(fā)明裝置可通過反匯編引擎將導(dǎo)出函數(shù)由字節(jié)碼轉(zhuǎn)換為源代碼,例如,本發(fā)明裝置將字節(jié)碼為“74”的語(yǔ)句轉(zhuǎn)換為源代碼為“GNZ”的匯編語(yǔ)句。
[0061]S207,獲取所述源代碼的長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù)。
[0062]具體的,本發(fā)明裝置獲取源代碼的長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù),并判定源代碼的長(zhǎng)度不大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù)不具備邏輯功能。原因在于,想要實(shí)現(xiàn)一定邏輯功能,其導(dǎo)出函數(shù)的源代碼的長(zhǎng)度必然不會(huì)太短,通過設(shè)置上述預(yù)設(shè)長(zhǎng)度閾值,本發(fā)明裝置可直接判定其不具備邏輯功能,例如:假設(shè)某個(gè)DLL文件有100個(gè)導(dǎo)出函數(shù),而其中的80個(gè)導(dǎo)出函數(shù)的源代碼的長(zhǎng)度均不大于預(yù)設(shè)長(zhǎng)度閾值,那么本發(fā)明裝置可直接判定這80個(gè)導(dǎo)出函數(shù)無邏輯功能。
[0063]S208,通過對(duì)所述源代碼的長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù)進(jìn)行邏輯分析,判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)的源代碼具有邏輯功能,若是,則確定所述目標(biāo)檢測(cè)程序的DLL文件是所述Loader病毒。
[0064]本發(fā)明實(shí)施例作出上述判斷的依據(jù)在于,為了欺騙終端,Loader病毒的導(dǎo)出函數(shù)的個(gè)數(shù)與正常DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)相同,假設(shè)正常的DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)為5個(gè),那么Loader病毒的導(dǎo)出函數(shù)也為5個(gè),但是,Loader病毒僅利用其中I個(gè)導(dǎo)出函數(shù)實(shí)現(xiàn)其行為指令,其它4個(gè)導(dǎo)出函數(shù)無任何作用,因而通常使用無用指令來填充其它4個(gè)導(dǎo)出函數(shù)。
[0065]具體實(shí)現(xiàn)過程中,如某個(gè)導(dǎo)出函數(shù)的源代碼可對(duì)應(yīng)用程序編程接口 API進(jìn)行調(diào)用,則說明該導(dǎo)出函數(shù)具有邏輯功能,又如某個(gè)導(dǎo)出函數(shù)的源代碼均為“AO:Xor eax, eaxRetn”等占位用的無用指令,則說明該導(dǎo)出函數(shù)不具有邏輯功能。
[0066]需要指出的是,進(jìn)行邏輯分析需要消耗一定的開銷和時(shí)間,本發(fā)明實(shí)施例只對(duì)源代碼長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù)進(jìn)行邏輯分析,可見節(jié)省了開銷和時(shí)間,增大效率,提高用戶體驗(yàn)。例如:假設(shè)某個(gè)DLL文件有100個(gè)導(dǎo)出函數(shù),而其中的80個(gè)導(dǎo)出函數(shù)的源代碼的長(zhǎng)度均不大于預(yù)設(shè)長(zhǎng)度閾值,那么本發(fā)明裝置可直接判定這80個(gè)導(dǎo)出函數(shù)無邏輯功能,進(jìn)而只對(duì)剩下的20個(gè)導(dǎo)出函數(shù)的源代碼進(jìn)行邏輯分析。
[0067]S209,清除或隔離所述目標(biāo)檢測(cè)程序。
[0068]具體的,本發(fā)明裝置將清除或隔離被確定攜帶有Loader病毒的目標(biāo)檢測(cè)程序。
[0069]進(jìn)一步可選的,本發(fā)明裝置針對(duì)上述目標(biāo)檢測(cè)程序更新病毒數(shù)據(jù)庫(kù),當(dāng)檢測(cè)到出現(xiàn)目標(biāo)檢測(cè)程序時(shí),向用戶發(fā)出危險(xiǎn)警報(bào)。其中,上述病毒數(shù)據(jù)庫(kù)可以是云端數(shù)據(jù)庫(kù),其它終端可以通過互聯(lián)網(wǎng)從云端數(shù)據(jù)庫(kù)獲取病毒資料。
[0070]本發(fā)明實(shí)施例通過提取目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù),判斷在DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)導(dǎo)出函數(shù)具有邏輯功能的方法,確定目標(biāo)檢測(cè)程序的DLL文件是否為L(zhǎng)oader病毒,可以實(shí)現(xiàn)對(duì)Loader病毒的查殺,具有維護(hù)成本低和準(zhǔn)確率高的特點(diǎn)。
[0071]圖3是本發(fā)明實(shí)施例中一種加載器Loader病毒的查殺裝置的結(jié)構(gòu)示意圖。如圖所示本發(fā)明實(shí)施例中的加載器Loader病毒的查殺裝置至少可以包括文件獲取模塊310、函數(shù)提取模塊320、病毒確定模塊330以及病毒處理模塊340,其中:
[0072]文件獲取模塊310,用于獲取目標(biāo)檢測(cè)程序的動(dòng)態(tài)鏈接庫(kù)DLL文件。具體的,所述文件獲取模塊310可以如圖4所示進(jìn)一步包括:目錄確定單元311和文件獲取單元312,其中:
[0073]目錄確定單元311,用于確定所述目標(biāo)檢測(cè)程序所在的文件目錄。
[0074]所述目標(biāo)檢測(cè)程序可以是終端上的任意一個(gè)應(yīng)用程序,在本發(fā)明實(shí)施例中,目標(biāo)檢測(cè)程序可以是EXE程序,例如QQ.EXE等,目標(biāo)檢測(cè)程序包括一個(gè)或多個(gè)DLL文件。所述DLL文件隨目標(biāo)檢測(cè)程序啟動(dòng)而運(yùn)行,DLL文件運(yùn)行時(shí)將調(diào)用行為指令,從而實(shí)現(xiàn)目標(biāo)檢測(cè)程序的功能。
[0075]具體的,目錄確定單元311可確定目標(biāo)檢測(cè)程序所在的文件目錄。例如,目錄確定單元311根據(jù)目標(biāo)檢測(cè)程序的路徑,找到目標(biāo)檢測(cè)程序的文件目錄,文件目錄可如圖6所不,其中,DocumentK Document2表不文件夾,X.EXE表不目標(biāo)檢測(cè)程序,A.DLL、B.DLL、E.DLL和F.DLL表示目標(biāo)檢測(cè)程序的DLL文件,C.SYS和D.DAT表示其它格式的文件。
[0076]文件獲取單元312,用于獲取所述文件目錄下的非資源類的DLL文件。
[0077]具體的,文件獲取單元312獲取文件目錄下的一個(gè)或多個(gè)非資源類的DLL文件。需要指出的是,由于在文件類型上Loader病毒是DLL文件,因此文件獲取單元312僅需獲取文件目錄下的DLL文件。另外,DLL文件可包括資源類(resource)的DLL文件,資源類的DLL文件常用于導(dǎo)出圖標(biāo)、光標(biāo)、對(duì)話框或字符串等,因此其字節(jié)非常小,無法執(zhí)行較復(fù)雜的行為指令,進(jìn)而病毒作者不會(huì)將Loader病毒偽裝或替換資源類的DLL文件,故進(jìn)一步的,文件獲取單元312僅需獲取文件目錄下的非資源類的DLL文件。
[0078]函數(shù)提取模塊320,用于提取所述目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù)。所述函數(shù)提取模塊320可以如圖5所示進(jìn)一步包括:地址獲取單元321和函數(shù)提取單元322,其中:
[0079]地址獲取單元321,用于獲取所述目標(biāo)檢測(cè)程序的DLL文件中的多個(gè)函數(shù)地址。
[0080]應(yīng)理解,DLL文件所執(zhí)行的指令是通過導(dǎo)出函數(shù)來實(shí)現(xiàn)的,每個(gè)DLL文件可有多個(gè)導(dǎo)出函數(shù),其中,所述函數(shù)地址可指向?qū)С龊瘮?shù)的存儲(chǔ)位置,根據(jù)導(dǎo)出函數(shù)的存儲(chǔ)位置可提取導(dǎo)出函數(shù)。
[0081]具體的,地址獲取單元321提取目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù)。
[0082]函數(shù)提取單元322,用于提取所述多個(gè)函數(shù)地址分別對(duì)應(yīng)的多個(gè)所述導(dǎo)出函數(shù)。
[0083]具體的,函數(shù)提取單元322提取多個(gè)函數(shù)地址分別對(duì)應(yīng)的多個(gè)導(dǎo)出函數(shù)。例如:假設(shè)獲取到目標(biāo)檢測(cè)程序的DLL文件的三個(gè)函數(shù)地址,分別為address_A、address_B和address_C,函數(shù)提取單兀322根據(jù)address_A、address_B和address_C分別提取其對(duì)應(yīng)的導(dǎo)出函數(shù)A()、B()和CO。
[0084]病毒確定模塊330,用于判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能,若是,則確定所述目標(biāo)檢測(cè)程序的DLL文件是所述Loader病毒。
[0085]具體的,病毒確定模塊330判斷在DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)導(dǎo)出函數(shù)具有邏輯功能,若是,則確定目標(biāo)檢測(cè)程序的DLL文件是Loader病毒。本發(fā)明實(shí)施例作出上述判斷的依據(jù)在于,為了欺騙終端,Loader病毒的導(dǎo)出函數(shù)的個(gè)數(shù)與正常DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)相同,假設(shè)正常的DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)為5個(gè),那么Loader病毒的導(dǎo)出函數(shù)也為5個(gè),但是,Loader病毒僅利用其中I個(gè)導(dǎo)出函數(shù)實(shí)現(xiàn)其行為指令,其它4個(gè)導(dǎo)出函數(shù)無任何作用,因而通常使用無用指令來填充其它4個(gè)導(dǎo)出函數(shù)。
[0086]病毒處理模塊340,用于清除或隔離所述目標(biāo)檢測(cè)程序。
[0087]具體的,病毒處理模塊340將清除或隔離被確定攜帶有Loader病毒的目標(biāo)檢測(cè)程序。
[0088]進(jìn)一步可選的,病毒處理模塊340針對(duì)上述目標(biāo)檢測(cè)程序更新病毒數(shù)據(jù)庫(kù),當(dāng)檢測(cè)到出現(xiàn)目標(biāo)檢測(cè)程序時(shí),向用戶發(fā)出危險(xiǎn)警報(bào)。其中,上述病毒數(shù)據(jù)庫(kù)可以是云端數(shù)據(jù)庫(kù),其它終端可以通過互聯(lián)網(wǎng)從云端數(shù)據(jù)庫(kù)獲取病毒資料。
[0089]可選的,請(qǐng)參閱圖3,如圖所示本發(fā)明實(shí)施例中的加載器Loader病毒的查殺裝置還可以包括閾值確定模塊350,用于在所述病毒確定模塊330判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能之前,確定所述DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)大于預(yù)設(shè)個(gè)數(shù)閾值。
[0090]具體的,為了提高判斷的準(zhǔn)確性,閾值確定模塊350將先判斷每個(gè)DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)是否大于預(yù)設(shè)個(gè)數(shù)閾值,在確定導(dǎo)出函數(shù)的個(gè)數(shù)大于預(yù)設(shè)個(gè)數(shù)閾值后,再觸發(fā)病毒確定模塊330判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能。其中,預(yù)設(shè)個(gè)數(shù)閾值一般設(shè)置為2,即每個(gè)DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)應(yīng)至少有3個(gè),無導(dǎo)出函數(shù)或?qū)С龊瘮?shù)少于3個(gè)的DLL文件不具普遍性,會(huì)影響判斷的準(zhǔn)確性。
[0091]可選的,請(qǐng)參閱圖3,如圖所示本發(fā)明實(shí)施例中的加載器Loader病毒的查殺裝置還可以包括代碼轉(zhuǎn)換模塊360,用于基于反匯編引擎,將所述DLL文件的導(dǎo)出函數(shù)由字節(jié)碼轉(zhuǎn)換為源代碼。
[0092]相應(yīng)的,病毒確定模塊330,具體用于通過對(duì)轉(zhuǎn)換為源代碼的導(dǎo)出函數(shù)進(jìn)行邏輯分析,判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)的源代碼具有邏輯功能。
[0093]需要指出的是,DLL文件的導(dǎo)出函數(shù)由字節(jié)碼組成,而很難直接根據(jù)字節(jié)碼判斷DLL文件的導(dǎo)出函數(shù)有無邏輯功能,因此代碼轉(zhuǎn)換模塊360可先通過反匯編引擎將導(dǎo)出函數(shù)由字節(jié)碼轉(zhuǎn)換為源代碼,例如,代碼轉(zhuǎn)換模塊360將字節(jié)碼為“74”的語(yǔ)句轉(zhuǎn)換為源代碼為“GNZ”的匯編語(yǔ)句。然后,病毒確定模塊330對(duì)源代碼進(jìn)行邏輯分析,判斷DLL文件的各個(gè)導(dǎo)出函數(shù)是否具有邏輯功能,如某個(gè)導(dǎo)出函數(shù)的源代碼可對(duì)應(yīng)用程序編程接口 API進(jìn)行調(diào)用,則說明該導(dǎo)出函數(shù)具有邏輯功能,又如某個(gè)導(dǎo)出函數(shù)的源代碼均為“AO:Xor eax,eax Retn”等占位用的無用指令,則說明該導(dǎo)出函數(shù)不具有邏輯功能。
[0094]進(jìn)一步可選的,請(qǐng)參閱圖3,如圖所示本發(fā)明實(shí)施例中的加載器Loader病毒的查殺裝置還可以包括函數(shù)篩選模塊370,用于獲取所述源代碼的長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù)。
[0095]相應(yīng)的,病毒確定模塊330,具體用于通過對(duì)所述源代碼的長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù)進(jìn)行邏輯分析,判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)的源代碼具有邏輯功能。
[0096]原因在于,想要實(shí)現(xiàn)一定邏輯功能,其導(dǎo)出函數(shù)的源代碼的長(zhǎng)度必然不會(huì)太短,通過設(shè)置上述預(yù)設(shè)長(zhǎng)度閾值,病毒確定模塊330可忽略對(duì)長(zhǎng)度太短的源代碼進(jìn)行邏輯分析,并直接判定其不具備邏輯功能,例如:假設(shè)某個(gè)DLL文件有100個(gè)導(dǎo)出函數(shù),而其中的80個(gè)導(dǎo)出函數(shù)的源代碼的長(zhǎng)度均不大于預(yù)設(shè)長(zhǎng)度閾值,那么函數(shù)篩選模塊370可直接判定這80個(gè)導(dǎo)出函數(shù)無邏輯功能,進(jìn)而病毒確定模塊330只對(duì)剩下的20個(gè)導(dǎo)出函數(shù)的源代碼進(jìn)行邏輯分析。眾所周知的,進(jìn)行邏輯分析需要消耗一定的開銷和時(shí)間,通過上述方法,病毒確定模塊330可節(jié)省開銷和時(shí)間,增大效率,提高用戶體驗(yàn)。
[0097]請(qǐng)參閱圖7,本發(fā)明實(shí)施例提供了另一種加載器Loader病毒的查殺裝置的結(jié)構(gòu)示意圖,該查殺裝置可以用于實(shí)施圖1?圖2的實(shí)施例中提供的加載器Loader病毒的查殺方法。具體來講:
[0098]查殺裝置400可以包括網(wǎng)絡(luò)接口 410、包括有一個(gè)或一個(gè)以上計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的存儲(chǔ)器420、輸入單兀430、顯不單兀440、電源450、包括有一個(gè)或者一個(gè)以上處理核心的處理器460等部件。本領(lǐng)域技術(shù)人員可以理解,圖7中示出的結(jié)構(gòu)并不構(gòu)成對(duì)查殺裝置的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:
[0099]網(wǎng)絡(luò)接口 410可用于接入網(wǎng)絡(luò),具體實(shí)現(xiàn)過程可以用寬帶網(wǎng)絡(luò)接口、WiFi (wireless fidelity,無線保真)模塊或 RF (Rad1 Frequency,射頻)模塊來實(shí)現(xiàn)。
[0100]存儲(chǔ)器420可用于存儲(chǔ)軟件程序以及模塊,處理器460通過運(yùn)行存儲(chǔ)在存儲(chǔ)器420的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器460可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū)。此外,存儲(chǔ)器420可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。相應(yīng)地,存儲(chǔ)器420還可以包括存儲(chǔ)器控制器,以提供處理器460和輸入單元430對(duì)存儲(chǔ)器420的訪問。
[0101]輸入單元430可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號(hào)輸入。具體地,輸入單元430可包括觸摸屏或鍵鼠431以及其他輸入設(shè)備432。觸摸屏或鍵鼠431,包括觸摸屏或鍵鼠,觸摸屏也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在接觸面上或在接觸面附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動(dòng)相應(yīng)的連接裝置。除了觸摸屏或鍵鼠431,輸入單元430還可以包括其他輸入設(shè)備432。鍵鼠包括物理鍵盤和物理鼠標(biāo)。另外,其他輸入設(shè)備432可以包括但不限于功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、操作桿等中的一種或多種。
[0102]顯示單元440可用于顯示由用戶輸入的信息或提供給用戶的信息以及查殺裝置400的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來構(gòu)成。顯示單元440可包括顯示面板441,可選的,可以采用IXD(Liquid Crystal Display,液晶顯示器)、OLED (Organic Light-Emitting D1de,有機(jī)發(fā)光二極管)等形式來配置顯示面板441。
[0103]查殺裝置400還包括給各個(gè)部件供電的電源450 (比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器460邏輯相連,從而通過電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。電源450還可以包括一個(gè)或一個(gè)以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測(cè)電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。
[0104]處理器460是查殺裝置的控制中心,利用各種接口和線路連接整個(gè)手機(jī)的各個(gè)部分,通過運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器420內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器420內(nèi)的數(shù)據(jù),執(zhí)行各種功能和處理數(shù)據(jù)??蛇x的,處理器460可包括一個(gè)或多個(gè)處理核心;優(yōu)選的,處理器460可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理通信。可以理解的是,上述調(diào)制解調(diào)處理器也可以不集成到處理器460中。
[0105]進(jìn)一步的,處理器460調(diào)用存儲(chǔ)器420中存儲(chǔ)的程序代碼,用于執(zhí)行以下操作:
[0106]獲取目標(biāo)檢測(cè)程序的動(dòng)態(tài)鏈接庫(kù)DLL文件;
[0107]提取所述目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù);
[0108]判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能,若是,則確定所述目標(biāo)檢測(cè)程序的DLL文件是所述Loader病毒;
[0109]清除或隔離所述目標(biāo)檢測(cè)程序。
[0110]本發(fā)明實(shí)施例的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以通過計(jì)算機(jī)軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如R0M/RAM、磁碟或光盤)中,包括若干指令用以控制終端執(zhí)行本發(fā)明實(shí)施例圖1?圖2所描述的加載器Loader病毒的查殺方法中的部分或全部的步驟。
[0111]本發(fā)明實(shí)施例通過提取目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù),判斷在DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)導(dǎo)出函數(shù)具有邏輯功能的方法,從而確定目標(biāo)檢測(cè)程序的DLL文件是否為L(zhǎng)oader病毒,可以實(shí)現(xiàn)對(duì)Loader病毒的查殺,具有維護(hù)成本低和準(zhǔn)確率高的特點(diǎn)。
[0112]在本說明書的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對(duì)上述術(shù)語(yǔ)的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
[0113]此外,術(shù)語(yǔ)“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括至少一個(gè)該特征。在本發(fā)明的描述中,“多個(gè)”的含義是至少兩個(gè),例如兩個(gè),三個(gè)等,除非另有明確具體的限定。
[0114]流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬【技術(shù)領(lǐng)域】的技術(shù)人員所理解。
[0115]在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認(rèn)為是用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實(shí)現(xiàn)在任何計(jì)算機(jī)可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計(jì)算機(jī)的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說明書而言,"計(jì)算機(jī)可讀介質(zhì)"可以是任何可以包含、存儲(chǔ)、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計(jì)算機(jī)可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個(gè)或多個(gè)布線的電連接部(電子裝置),便攜式計(jì)算機(jī)盤盒(磁裝置),隨機(jī)存取存儲(chǔ)器(RAM),只讀存儲(chǔ)器(R0M),可擦除可編輯只讀存儲(chǔ)器(EPR0M或閃速存儲(chǔ)器),光纖裝置,以及便攜式光盤只讀存儲(chǔ)器(⑶ROM)。另外,計(jì)算機(jī)可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因?yàn)榭梢岳缤ㄟ^對(duì)紙或其他介質(zhì)進(jìn)行光學(xué)掃描,接著進(jìn)行編輯、解譯或必要時(shí)以其他合適方式進(jìn)行處理來以電子方式獲得所述程序,然后將其存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。
[0116]應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場(chǎng)可編程門陣列(FPGA)等。
[0117]本【技術(shù)領(lǐng)域】的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。此外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。
[0118]上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。
[0119]以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種加載器Loader病毒的查殺方法,其特征在于,所述方法包括: 獲取目標(biāo)檢測(cè)程序的動(dòng)態(tài)鏈接庫(kù)DLL文件; 提取所述目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù); 判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能,若是,則確定所述目標(biāo)檢測(cè)程序的DLL文件是所述Loader病毒; 清除或隔離所述目標(biāo)檢測(cè)程序。
2.如權(quán)利要求1所述的方法,其特征在于,所述獲取目標(biāo)檢測(cè)程序的動(dòng)態(tài)鏈接庫(kù)DLL文件,包括: 確定所述目標(biāo)檢測(cè)程序所在的文件目錄; 獲取所述文件目錄下的非資源類的DLL文件。
3.如權(quán)利要求1所述的方法,其特征在于,所述提取所述目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù),包括: 獲取所述目標(biāo)檢測(cè)程序的DLL文件中的多個(gè)函數(shù)地址; 提取所述多個(gè)函數(shù)地址分別對(duì)應(yīng)的多個(gè)所述導(dǎo)出函數(shù)。
4.如權(quán)利要求1所述的方法,其特征在于,所述判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能,包括: 基于反匯編引擎,將所述DLL文件的導(dǎo)出函數(shù)由字節(jié)碼轉(zhuǎn)換為源代碼; 通過對(duì)轉(zhuǎn)換為源代碼的導(dǎo)出函數(shù)進(jìn)行邏輯分析,判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)的源代碼具有邏輯功能。
5.如權(quán)利要求4所述的方法,其特征在于,所述通過對(duì)轉(zhuǎn)換為源代碼的導(dǎo)出函數(shù)進(jìn)行邏輯分析,判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)的源代碼具有邏輯功能,包括: 獲取所述源代碼的長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù); 通過對(duì)所述源代碼的長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù)進(jìn)行邏輯分析,判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)的源代碼具有邏輯功能。
6.如權(quán)利要求4所述的方法,其特征在于,所述源代碼具有邏輯功能包括: 所述源代碼對(duì)應(yīng)用程序編程接口 API進(jìn)行調(diào)用。
7.如權(quán)利要求1所述的方法,其特征在于,所述判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能之前,還包括: 確定所述DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)大于預(yù)設(shè)個(gè)數(shù)閾值。
8.如權(quán)利要求7所述的方法,其特征在于,所述預(yù)設(shè)個(gè)數(shù)閾值是2。
9.如權(quán)利要求1-8任一項(xiàng)所述的方法,其特征在于,所述清除或隔離所述目標(biāo)檢測(cè)程序之后,還包括: 針對(duì)所述目標(biāo)檢測(cè)程序更新病毒數(shù)據(jù)庫(kù); 當(dāng)檢測(cè)到出現(xiàn)所述目標(biāo)檢測(cè)程序時(shí),向用戶發(fā)出危險(xiǎn)警報(bào)。
10.一種加載器Loader病毒的查殺裝置,其特征在于,所述查殺裝置包括: 文件獲取模塊,用于獲取目標(biāo)檢測(cè)程序的動(dòng)態(tài)鏈接庫(kù)DLL文件; 函數(shù)提取模塊,用于提取所述目標(biāo)檢測(cè)程序的DLL文件的多個(gè)導(dǎo)出函數(shù); 病毒確定模塊,用于判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能,若是,則確定所述目標(biāo)檢測(cè)程序的DLL文件是所述Loader病毒; 病毒處理模塊,用于清除或隔離所述目標(biāo)檢測(cè)程序。
11.如權(quán)利要求10所述的查殺裝置,其特征在于,所述文件獲取模塊,包括: 目錄確定單元,用于確定所述目標(biāo)檢測(cè)程序所在的文件目錄; 文件獲取單元,用于獲取所述文件目錄下的非資源類的DLL文件。
12.如權(quán)利要求10所述的查殺裝置,其特征在于,所述函數(shù)提取模塊,包括: 地址獲取單元,用于獲取所述目標(biāo)檢測(cè)程序的DLL文件中的多個(gè)函數(shù)地址; 函數(shù)提取單元,用于提取所述多個(gè)函數(shù)地址分別對(duì)應(yīng)的多個(gè)所述導(dǎo)出函數(shù)。
13.如權(quán)利要求10所述的查殺裝置,其特征在于,所述查殺裝置還包括: 代碼轉(zhuǎn)換模塊,用于基于反匯編引擎,將所述DLL文件的導(dǎo)出函數(shù)由字節(jié)碼轉(zhuǎn)換為源代碼; 所述病毒確定模塊,具體用于通過對(duì)轉(zhuǎn)換為源代碼的導(dǎo)出函數(shù)進(jìn)行邏輯分析,判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)的源代碼具有邏輯功能。
14.如權(quán)利要求13所述的查殺裝置,其特征在于,所述查殺裝置還包括: 函數(shù)篩選模塊,用于獲取所述源代碼的長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù); 所述病毒確定模塊,具體用于通過對(duì)所述源代碼的長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度閾值的導(dǎo)出函數(shù)進(jìn)行邏輯分析,判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)的源代碼具有邏輯功能。
15.如權(quán)利要求13所述的查殺裝置,其特征在于,所述源代碼具有邏輯功能包括: 所述源代碼對(duì)應(yīng)用程序編程接口 API進(jìn)行調(diào)用。
16.如權(quán)利要求10所述的查殺裝置,其特征在于,所述查殺裝置還包括: 閾值確定模塊,用于在所述病毒確定模塊判斷在所述DLL文件的多個(gè)導(dǎo)出函數(shù)中是否有且僅有一個(gè)所述導(dǎo)出函數(shù)具有邏輯功能之前,確定所述DLL文件的導(dǎo)出函數(shù)的個(gè)數(shù)大于預(yù)設(shè)個(gè)數(shù)閾值。
17.如權(quán)利要求16所述的查殺裝置,其特征在于,所述預(yù)設(shè)個(gè)數(shù)閾值是2。
18.如權(quán)利要求10-17任一項(xiàng)所述的查殺裝置,其特征在于,所述病毒處理模塊,還用于針對(duì)所述目標(biāo)檢測(cè)程序更新病毒數(shù)據(jù)庫(kù);當(dāng)檢測(cè)到出現(xiàn)所述目標(biāo)檢測(cè)程序時(shí),向用戶發(fā)出危險(xiǎn)警報(bào)。
19.一種終端,其特征在于,所述終端包括如權(quán)利要求10-18任一項(xiàng)所述的查殺裝置。
【文檔編號(hào)】G06F21/56GK104200164SQ201410458394
【公開日】2014年12月10日 申請(qǐng)日期:2014年9月10日 優(yōu)先權(quán)日:2014年9月10日
【發(fā)明者】陳根, 劉桂峰, 姚輝 申請(qǐng)人:北京金山安全軟件有限公司