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