亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種病毒程序檢測方法和終端與流程

文檔序號:11920235閱讀:233來源:國知局
一種病毒程序檢測方法和終端與流程

本發(fā)明涉及病毒程序檢測技術(shù),具體涉及一種病毒程序檢測方法和終端。



背景技術(shù):

本申請發(fā)明人在實現(xiàn)本申請實施例技術(shù)方案的過程中,至少發(fā)現(xiàn)相關(guān)技術(shù)中存在如下技術(shù)問題:

在安卓系統(tǒng)的移動終端中,由于安卓系統(tǒng)的源代碼開放的特性,使得用戶在不經(jīng)意間下載了攜帶有病毒的應(yīng)用或文件?,F(xiàn)有的病毒文件的檢測方式通常是基于點特征的檢測,所述點特征例如某個字符串或者某個代碼序列等等。當(dāng)反病毒工程師檢測到一批病毒文件樣本中均具有某個特征,例如包含某個字符串或者某個代碼序列時,則可將所述字符串或者代碼序列錄入病毒庫。后續(xù)檢測到某個文件中包含有病毒庫中的某個特征時,則可確定該文件為病毒文件。

現(xiàn)有技術(shù)的缺點在于基于點特征的病毒檢測方式很容易被病毒開發(fā)人員繞過。對于該問題,目前尚無有效解決方案。



技術(shù)實現(xiàn)要素:

為解決現(xiàn)有存在的技術(shù)問題,本發(fā)明實施例提供一種病毒程序檢測方法和終端,能夠解決現(xiàn)有技術(shù)中基于點特征的病毒檢測方式容易被繞過的問題。

為達到上述目的,本發(fā)明實施例的技術(shù)方案是這樣實現(xiàn)的:

本發(fā)明實施例提供了一種病毒程序檢測方法,所述方法包括:

獲得第一文件,提取所述第一文件的全量特征;所述全量特征支持唯一確定所述第一文件的所有組成部分;

基于所述全量特征通過預(yù)設(shè)算法計算得到第一序列;

分別計算所述第一序列與病毒庫中的多個序列之間的相似度參數(shù);其中, 所述病毒庫中的每個序列對應(yīng)一類病毒文件;

當(dāng)所述相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件。

上述方案中,所述基于所述全量特征通過預(yù)設(shè)算法計算得到第一序列之后,所述方法還包括:

將所述第一序列進行分段處理獲得n個分段序列;n為正整數(shù);

分別將每一個分段序列與病毒庫中的每個序列對應(yīng)的分段序列進行比較,基于比較結(jié)果確定所述第一文件是否是病毒文件。

上述方案中,所述分別將每一個分段序列與病毒庫中的每個序列對應(yīng)的分段序列進行比較,基于比較結(jié)果判定所述第一文件是否是病毒文件,包括:

將所述第一序列的每一個分段序列分別與所述病毒庫中的每個序列對應(yīng)的分段序列進行比較;

當(dāng)所述第一序列的第一分段序列與所述病毒庫中的第二序列的第二分段序列相等時,計算所述第一分段序列與所述第二分段序列之間的第一相似度參數(shù);其中,所述第一分段序列為所述第一序列的任一分段序列;所述第二序列為所述病毒庫中的任一序列;所述第二分段序列為所述第二序列的任一分段序列;

當(dāng)所述第一相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件。

上述方案中,所述方法還包括:當(dāng)所述第一序列的每一個分段序列與所述病毒庫中的每個序列對應(yīng)的分段序列均不相等時,確定所述第一文件不是病毒文件。

上述方案中,所述分別將所述第一序列與病毒庫中的多個序列進行比較之前,所述方法還包括:采集多個病毒樣本文件;

提取每個病毒樣本文件的全量特征,基于所述全量特征通過預(yù)設(shè)算法計算得到序列,基于得到的多個序列生成病毒庫。

上述方案中,所述基于得到的多個序列生成病毒庫,包括:

將每個序列進行分段處理獲得所述每個序列對應(yīng)的n個分段序列;n為正整數(shù);

將所述n個分段序列和對應(yīng)的序列存儲在病毒庫中。

本發(fā)明實施例還提供了一種終端,所述終端包括:特征收集模塊、病毒檢測模塊和病毒維護模塊;其中,

所述特征收集模塊,用于獲得第一文件,提取所述第一文件的全量特征;所述全量特征支持唯一確定所述第一文件的所有組成部分;

所述病毒檢測模塊,用于基于所述特征收集模塊提取的全量特征通過預(yù)設(shè)算法計算得到第一序列;還用于分別計算所述第一序列與所述病毒維護模塊中的多個序列之間的相似度參數(shù);當(dāng)所述相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件;

所述病毒維護模塊,用于存儲多個序列;每個序列對應(yīng)一類病毒文件。

上述方案中,所述病毒檢測模塊,用于基于所述全量特征通過預(yù)設(shè)算法計算得到第一序列之后,將所述第一序列進行分段處理獲得n個分段序列;n為正整數(shù);還用于分別將每一個分段序列與病毒庫中的每個序列對應(yīng)的分段序列進行比較,基于比較結(jié)果確定所述第一文件是否是病毒文件。

上述方案中,所述病毒檢測模塊,用于將所述第一序列的每一個分段序列分別與所述病毒庫中的每個序列對應(yīng)的分段序列進行比較;

當(dāng)所述第一序列的第一分段序列與所述病毒庫中的第二序列的第二分段序列相等時,計算所述第一分段序列與所述第二分段序列之間的第一相似度參數(shù);其中,所述第一分段序列為所述第一序列的任一分段序列;所述第二序列為所述病毒庫中的任一序列;所述第二分段序列為所述第二序列的任一分段序列;當(dāng)所述第一相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件。

上述方案中,所述病毒檢測模塊,還用于當(dāng)所述第一序列的每一個分段序列與所述病毒庫中的每個序列對應(yīng)的分段序列均不相等時,確定所述第一文件不是病毒文件。

上述方案中,所述病毒維護模塊,用于采集多個病毒樣本文件;提取每個病毒樣本文件的全量特征,基于所述全量特征通過預(yù)設(shè)算法計算得到序列并存儲。

上述方案中,所述病毒維護模塊,還用于將每個序列進行分段處理獲得所 述每個序列對應(yīng)的n個分段序列;n為正整數(shù);存儲所述n個分段序列和對應(yīng)的序列。

本發(fā)明實施例提供的病毒程序檢測方法和終端,所述方法包括:獲得第一文件,提取所述第一文件的全量特征;所述全量特征支持唯一確定所述第一文件的所有組成部分;基于所述全量特征通過預(yù)設(shè)算法計算得到第一序列;分別計算所述第一序列與病毒庫中的多個序列之間的相似度參數(shù);其中,所述病毒庫中的每個序列對應(yīng)一類病毒文件;當(dāng)所述相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件。如此,采用本發(fā)明實施例的技術(shù)方案,基于全量特征的病毒檢測方式,有效解決了現(xiàn)有技術(shù)中基于點特征的病毒檢測方式容易被繞過的問題,解決了病毒發(fā)生變種則無法檢測出的問題,以及對于某些小眾(流傳范圍小,不廣泛傳播)的病毒,本發(fā)明實施例的技術(shù)方案可通過全量特征的方式實現(xiàn)病毒檢測,大大提高了病毒檢測的準(zhǔn)確率。

附圖說明

圖1為本發(fā)明實施例一的病毒程序檢測方法的流程示意圖;

圖2為本發(fā)明實施例一中的病毒庫的建立示意圖;

圖3為本發(fā)明實施例二的病毒程序檢測方法的流程示意圖;

圖4為本發(fā)明實施例二中的病毒庫的建立示意圖;

圖5為本發(fā)明實施例三的病毒程序檢測方法的流程示意圖;

圖6為本發(fā)明實施例的終端的組成結(jié)構(gòu)示意圖;

圖7為本發(fā)明實施例中的病毒檢測模塊的一種處理過程示意圖;

圖8為本發(fā)明實施例的終端的一種應(yīng)用架構(gòu)示意圖;

圖9a和圖9b為本發(fā)明實施例的終端的應(yīng)用示意圖;

圖10為本發(fā)明實施例的終端的硬件結(jié)構(gòu)示意圖;

圖11為本發(fā)明實施例中的特征收集模塊的一種處理過程示意圖。

具體實施方式

下面結(jié)合附圖及具體實施例對本發(fā)明作進一步詳細的說明。

實施例一

本發(fā)明實施例提供了一種病毒程序檢測方法。圖1為本發(fā)明實施例一的病毒程序檢測方法的流程示意圖;如圖1所示,所述病毒程序檢測方法包括:

步驟101:獲得第一文件,提取所述第一文件的全量特征;所述全量特征支持唯一確定所述第一文件的所有組成部分。

步驟102:基于所述全量特征通過預(yù)設(shè)算法計算得到第一序列。

步驟103:分別計算所述第一序列與病毒庫中的多個序列之間的相似度參數(shù);當(dāng)所述相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件;其中,所述病毒庫中的每個序列對應(yīng)一類病毒文件。

本發(fā)明實施例的病毒程序檢測方法主要用于檢測處于安卓系統(tǒng)的文件是否是病毒文件。則本實施例的病毒程序檢測方法可應(yīng)用于終端中,所述終端具體可以為手機、平板電腦等移動終端;所述終端也可以為個人計算機(PC)等終端。所述病毒程序檢測方法也可應(yīng)用在服務(wù)器中。在本發(fā)明實施例中,均已終端作為執(zhí)行主體進行描述。

本實施例步驟101中,終端獲得的第一文件具體可以為安卓安裝包(APK,Android Package)文件,當(dāng)然,所述第一文件也可以是終端支持的任何格式的文件。

本實施例中,提取所述第一文件的全量特征,所述全量特征支持唯一確定所述第一文件的所有組成部分。具體的,所述第一文件可包含多個組成部分,例如可包括多個子文件等等;提取到的所述第一文件的全量特征包括每個子文件的特征;所述每個子文件的特征具體可以包括每個子文件的標(biāo)識、大小、格式、所包含的字符串或代碼序列等等。

本實施例步驟102中,所述基于所述全量特征通過預(yù)設(shè)算法計算得到第一序列,包括:基于所述全量特征通過SIMHASH算法計算得到第一序列。其中, 所述通過SIMHASH算法計算得到第一序列可參照現(xiàn)有技術(shù)中的SIMHASH算法的實現(xiàn)過程計算得到第一序列,例如首先通過hash算法將每個特征對應(yīng)生成hash值,將生成的hash值按照預(yù)設(shè)權(quán)重生成加權(quán)數(shù)字串;將各個特征對應(yīng)的序列值對應(yīng)位累加,生成一個序列串;對生成的序列串轉(zhuǎn)換為二進制,即僅包含有0和1,獲得第一序列。具體的計算過程本實施例中不做詳細描述。其中,所述第一序列具體可以為N位的字節(jié);N為正整數(shù);作為一種實施方式,所述第一序列具體可以為128位的字節(jié)。

本實施例步驟103中,所述分別計算所述第一序列與病毒庫中的多個序列之間的相似度參數(shù)之前,所述方法還包括:采集多個病毒樣本文件;提取每個病毒樣本文件的全量特征,基于所述全量特征通過預(yù)設(shè)算法計算得到序列,基于得到的多個序列生成病毒庫。

具體的,在檢測文件是否是病毒文件之前,首先建立病毒庫,所述病毒庫中包括已確定為病毒樣本文件對應(yīng)的hash序列;所述hash序列的獲得方式可參照步驟101至步驟102的第一序列的計算方式,即對每個病毒樣本文件進行全量特征的提取,基于提取的全量特征按照預(yù)設(shè)算法(具體可以為SIMHASH算法)計算獲得對應(yīng)的序列。其中,所述病毒庫中的每個hash序列對應(yīng)一類病毒文件??梢岳斫鉃椋鄠€病毒樣本文件可能感染同一類病毒;在建立病毒庫時,可針對一類病毒僅存儲一個或幾個hash序列,也即所述病毒庫中存儲的hash序列盡可能的包含所有類型的病毒文件特征(即病毒文件對應(yīng)的hash序列),這樣也盡可能的減少檢測時間。

在實際應(yīng)用中,可通過其他病毒引擎提供病毒樣本、或者終端上報的病毒樣本建立病毒庫。圖2為本發(fā)明實施例一中的病毒庫的建立示意圖;如圖2所示,作為一種實施方式,終端42可直接通過病毒引擎提供的病毒樣本建立病毒庫。作為另一種實施方式,服務(wù)器41可直接通過病毒引擎提供的病毒樣本建立病毒庫,建立的病毒庫可通過網(wǎng)絡(luò)傳輸至終端42。其中,病毒庫中的病毒樣本可具有多種來源:活躍病毒、新發(fā)現(xiàn)病毒等等。

基于此,本實施例步驟103中,分別計算所述第一序列與病毒庫中的多個 序列之間的相似度參數(shù);當(dāng)所述相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件。相應(yīng)的,當(dāng)所述相似度參數(shù)不小于所述預(yù)設(shè)閾值時,可確定所述第一文件不是病毒文件。

具體的,所述相似度參數(shù)具體可以為海明碼距離,即分別計算所述第一序列與所述病毒庫中的每個序列之間的海明碼距離。其中,兩個碼字的對應(yīng)比特位取值不同的比特數(shù)稱為這兩個碼字的海明碼距離。例如,第一個碼字為10101,第二個碼字為00110,相比之下,這兩個碼字的第一、第四和第五比特位的取值均不同,則這兩個碼字的海明碼距離為3?;诖?,本實施例中,可分別計算所述第一序列與病毒庫中每個序列之間的海明碼距離,判斷所述海明碼距離是否小于預(yù)設(shè)閾值;其中,所述預(yù)設(shè)閾值可根據(jù)人為經(jīng)驗預(yù)先設(shè)定;作為一種實施方式,所述預(yù)設(shè)閾值的取值可以在1至10之間;當(dāng)計算獲得的海明碼距離小于所述預(yù)設(shè)閾值時,表明所述第一文件與所述病毒庫中的序列對應(yīng)文件的相似度極大,也表明所述第一文件為病毒文件的可能性極大,由此可確定所述第一文件為病毒文件。相應(yīng)的,當(dāng)計算獲得的海明碼距離不小于所述預(yù)設(shè)閾值時,表明所述第一文件與所述病毒庫中的序列對應(yīng)文件的相似度極小,也表明所述第一文件為病毒文件的可能性較小,由此可確定所述第一文件不是病毒文件。

采用本發(fā)明實施例的技術(shù)方案,基于全量特征的病毒檢測方式,有效解決了現(xiàn)有技術(shù)中基于點特征的病毒檢測方式容易被繞過的問題,解決了病毒發(fā)生變種則無法檢測出的問題,以及對于某些小眾(流傳范圍小,不廣泛傳播)的病毒,本發(fā)明實施例的技術(shù)方案可通過全量特征的方式實現(xiàn)病毒檢測,大大提高了病毒檢測的準(zhǔn)確率。

實施例二

本發(fā)明實施例還提供了一種病毒程序檢測方法。圖3為本發(fā)明實施例二的病毒程序檢測方法的流程示意圖;如圖3所示,所述病毒程序檢測方法包括:

步驟201:獲得第一文件,提取所述第一文件的全量特征;所述全量特征支持唯一確定所述第一文件的所有組成部分。

步驟202:基于所述全量特征通過預(yù)設(shè)算法計算得到第一序列。

步驟203:將所述第一序列進行分段處理獲得n個分段序列;n為正整數(shù)。

步驟204:分別將每一個分段序列與病毒庫中的每個序列對應(yīng)的分段序列進行比較,基于比較結(jié)果確定所述第一文件是否是病毒文件;其中,所述病毒庫中的每個序列對應(yīng)一類病毒文件。

本發(fā)明實施例的病毒程序檢測方法主要用于檢測處于安卓系統(tǒng)的文件是否是病毒文件。則本實施例的病毒程序檢測方法可應(yīng)用于終端中,所述終端具體可以為手機、平板電腦等移動終端;所述終端也可以為個人計算機(PC)等終端。所述病毒程序檢測方法也可應(yīng)用在服務(wù)器中。在本發(fā)明實施例中,均已終端作為執(zhí)行主體進行描述。

本實施例步驟201中,終端獲得的第一文件具體可以為APK文件,當(dāng)然,所述第一文件也可以是終端支持的任何格式的文件。

本實施例中,提取所述第一文件的全量特征,所述全量特征支持唯一確定所述第一文件的所有組成部分。具體的,所述第一文件可包含多個組成部分,例如可包括多個子文件等等;提取到的所述第一文件的全量特征包括每個子文件的特征;所述每個子文件的特征具體可以包括每個子文件的標(biāo)識、大小、格式、所包含的字符串或代碼序列等等。

本實施例步驟202中,所述基于所述全量特征通過預(yù)設(shè)算法計算得到第一序列,包括:基于所述全量特征通過SIMHASH算法計算得到第一序列。其中,所述通過SIMHASH算法計算得到第一序列可參照現(xiàn)有技術(shù)中的SIMHASH算法的實現(xiàn)過程計算得到第一序列,例如首先通過hash算法將每個特征對應(yīng)生成hash值,將生成的hash值按照預(yù)設(shè)權(quán)重生成加權(quán)數(shù)字串;將各個特征對應(yīng)的序列值對應(yīng)位累加,生成一個序列串;對生成的序列串轉(zhuǎn)換為二進制,即僅包含有0和1,獲得第一序列。具體的計算過程本實施例中不做詳細描述。其中,所述第一序列具體可以為N位的字節(jié);N為正整數(shù);作為一種實施方式,所述第一序列具體可以為128位的字節(jié)。

本實施例中,將所述第一序列進行分段處理獲得n個分段序列;以所述第 一序列為128位字節(jié)為例,可以將所述第一序列分為n段,每個分段序列的位數(shù)為128/n。其中,基于實施例一中第一序列與病毒庫中的多個序列的比較方式,即基于計算所述第一序列與病毒庫中的多個序列之間的相似度參數(shù);當(dāng)所述相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件,本實施方式中,所述n等于所述預(yù)設(shè)閾值;作為一種實施方式,n的取值可以在1至10之間。

本實施例步驟204中,所述分別將每一個分段序列與病毒庫中的每個序列對應(yīng)的分段序列進行比較之前,所述方法還包括:提取每個病毒樣本文件的全量特征,基于所述全量特征通過預(yù)設(shè)算法計算得到序列,將每個序列進行分段處理獲得所述每個序列對應(yīng)的n個分段序列;n為正整數(shù);將所述n個分段序列和對應(yīng)的序列存儲在病毒庫中。

具體的,在檢測文件是否是病毒文件之前,首先建立病毒庫,所述病毒庫中包括已確定為病毒樣本文件對應(yīng)的hash序列以及hash序列所對應(yīng)的分段hash序列;所述hash序列和分段hash序列的獲得方式可參照步驟201至步驟203的第一序列的計算方式和n個分段序列的獲得方式,即對每個病毒樣本文件進行全量特征的提取,基于提取的全量特征按照預(yù)設(shè)算法(具體可以為SIMHASH算法)計算獲得對應(yīng)的hash序列,所述hash序列可以理解為通過SIMHASH算法計算獲得的hash值;進一步對獲得的hash序列進行分段處理獲得分段hash序列。其中,所述病毒庫中的每個hash序列(以及分段hash序列)對應(yīng)一類病毒文件。可以理解為,多個病毒樣本文件可能感染同一類病毒;在建立病毒庫時,可針對一類病毒僅存儲一個或幾個hash序列,也即所述病毒庫中存儲的hash序列盡可能的包含所有類型的病毒文件特征(即病毒文件對應(yīng)的hash序列),這樣也盡可能的減少檢測時間。

在實際應(yīng)用中,可通過其他病毒引擎提供病毒樣本、或者終端上報的病毒樣本建立病毒庫。圖4為本發(fā)明實施例二中的病毒庫的建立示意圖;如圖4所示,作為一種實施方式,終端42可直接通過病毒引擎提供的病毒樣本建立病毒庫。作為另一種實施方式,服務(wù)器41可直接通過病毒引擎提供的病毒樣本建立病毒庫,建立的病毒庫可通過網(wǎng)絡(luò)傳輸至終端42。其中,病毒庫中的病毒樣本 可具有多種來源:例如活躍病毒、新發(fā)現(xiàn)病毒等等。在本實施例中,獲得的病毒樣本進行分段處理后存入病毒庫,可以理解為,所述病毒庫中存儲有病毒樣本對應(yīng)的完整的hash值,以及所述完整的hash值分段處理后的每個分段hash值。

基于此,本實施例步驟204中,所述分別將每一個分段序列與病毒庫中的每個序列對應(yīng)的分段序列進行比較,基于比較結(jié)果判定所述第一文件是否是病毒文件,包括:將所述第一序列的每一個分段序列分別與所述病毒庫中的每個序列對應(yīng)的分段序列進行比較;當(dāng)所述第一序列的第一分段序列與所述病毒庫中的第二序列的第二分段序列相等時,計算所述第一分段序列與所述第二分段序列之間的第一相似度參數(shù);其中,所述第一分段序列為所述第一序列的任一分段序列;所述第二序列為所述病毒庫中的任一序列;所述第二分段序列為所述第二序列的任一分段序列;當(dāng)所述第一相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件。相應(yīng)的,當(dāng)所述第一序列的每一個分段序列與所述病毒庫中的每個序列對應(yīng)的分段序列均不相等時,確定所述第一文件不是病毒文件。

具體的,所述相似度參數(shù)具體可以為海明碼距離,即分別計算所述第一序列與所述病毒庫中的每個序列之間的海明碼距離。其中,兩個碼字的對應(yīng)比特位取值不同的比特數(shù)稱為這兩個碼字的海明碼距離。例如,第一個碼字為10101,第二個碼字為00110,相比之下,這兩個碼字的第一、第四和第五比特位的取值均不同,則這兩個碼字的海明碼距離為3。在基于實施例一所述的檢測方式中,發(fā)明人發(fā)現(xiàn)當(dāng)計算兩個文件的海明碼距離小于n時,檢出的樣本與命中的樣本屬于一個家族的準(zhǔn)確率大于99.9%。基于此,本實施例中只關(guān)注海明碼距離為n及以下的分段序列,于是將序列(即計算獲得的hash值)分為n段,每個分段序列的位數(shù)可以為128/n。兩個hash值的某段相等,其出于巧合的幾率是2的128/x次方,否則其hash值的海明碼距離必小于x?;诖耍緦嵤├?,首先,分別將所述第一序列的每一個分段序列與病毒庫中的所有分段序列進行匹配;當(dāng)檢測到所述第一序列的第一分段序列與所述病毒庫中的第 二序列的第二分段序列相等時,再計算所述第一分段序列與所述第二分段序列之間的第一相似度參數(shù)(即計算海明碼距離)。當(dāng)計算獲得的海明碼距離小于所述預(yù)設(shè)閾值時,表明所述第一文件與所述病毒庫中的序列對應(yīng)文件的相似度極大,也表明所述第一文件為病毒文件的可能性極大,由此可確定所述第一文件為病毒文件。相應(yīng)的,當(dāng)計算獲得的海明碼距離不小于所述預(yù)設(shè)閾值時,表明所述第一文件與所述病毒庫中的序列對應(yīng)文件的相似度極小,也表明所述第一文件為病毒文件的可能性較小,由此可確定所述第一文件不是病毒文件。實驗表明,在病毒庫中的數(shù)據(jù)量為10萬時,檢測一個文件的hash值的耗時,可從1100ms降為8ms左右,大大減少了文件檢測時間。

采用本發(fā)明實施例的技術(shù)方案,一方面,基于全量特征的病毒檢測方式,有效解決了現(xiàn)有技術(shù)中基于點特征的病毒檢測方式容易被繞過的問題,解決了病毒發(fā)生變種則無法檢測出的問題,以及對于某些小眾病毒實現(xiàn)了病毒檢測,大大提高了病毒檢測的準(zhǔn)確率。另一方面,通過改進的SIMHASH的海明碼距離檢測算法,對計算獲得的hash序列進行分段,并對分段進行匹配相同后再進行海明碼距離的計算,這種方式大大縮短了檢測的時間,提升用戶的體驗。

實施例三

本發(fā)明實施例還提供了一種病毒程序檢測方法。圖5為本發(fā)明實施例三的病毒程序檢測方法的流程示意圖;如圖5所示,所述病毒程序檢測方法包括:

步驟301:病毒庫的建立過程。

步驟302:待檢測文件的SIMHASH算法的處理過程。

步驟303:待檢測文件與病毒庫的匹配過程。

步驟301中,病毒庫中的病毒樣本可通過服務(wù)端的病毒引擎提供,也可以通過終端上報提供;病毒庫中的病毒樣本可具有多種來源:例如活躍病毒、新發(fā)現(xiàn)病毒等等。具體的,對已確定的病毒樣本進行全量特征的提取,基于提取的全量特征按照預(yù)設(shè)算法(具體可以為SIMHASH算法)計算獲得對應(yīng)的hash序列,對獲得的hash序列進行分段處理獲得分段hash序列。所述病毒庫中存儲所述分段hash序列以及對應(yīng)的完整的hash序列。中,所述病毒庫中的每個 hash序列(以及分段hash序列)對應(yīng)一類病毒文件??梢岳斫鉃?,多個病毒樣本文件可能感染同一類病毒;在建立病毒庫時,可針對一類病毒僅存儲一個或幾個hash序列,也即所述病毒庫中存儲的hash序列盡可能的包含所有類型的病毒文件特征(即病毒文件對應(yīng)的hash序列),這樣也盡可能的減少檢測時間。

步驟302中,在獲得待檢測的APK文件時,對所述APK文件進行全量特征的提取,基于提取的全量特征按照預(yù)設(shè)算法(具體可以為SIMHASH算法)計算獲得對應(yīng)的第一hash序列,對獲得的第一hash序列進行分段處理獲得分段hash序列,以基于改進的SIMHASH的海明碼距離的計算。其中,可通過服務(wù)器側(cè)或終端中的客戶端獲得待檢測的APK文件。

步驟303采用基于改進SIMHASH的海明碼距離計算方法。具體的,基于獲得的第一hash序列以及所述第一hash序列的分段hash序列,遍歷病毒庫,對病毒庫中的每一個病毒樣本,首先匹配分段hash序列,如果與一個病毒樣本的分段hash序列不相同,則匹配下一個樣本的分段hash序列,直至所述病毒庫中的所有病毒樣本的分段hash序列均匹配不相同,這是可確定所述待檢測文件不是病毒文件。當(dāng)所述第一hash序列中的任一分段hash序列(可記為第一分段hash序列)與病毒庫中的一hash序列(可記為第二hash序列)中的任一分段hash序列(可記為第二分段hash序列)相同時,計算所述第一分段hash序列與所述第二分段hash序列之間的海明碼距離;當(dāng)所述海明碼距離小于預(yù)設(shè)閾值時,可確定所述待檢測文件為病毒文件;當(dāng)所述海明碼距離不小于所述預(yù)設(shè)閾值時,進行下一個分段hash序列或者下一個病毒樣本的分段hash序列的匹配,直至所述病毒庫中的所有hash序列的分段hash序列均匹配完成。

最后輸出所述待檢測文件的狀態(tài)是病毒狀態(tài)或是安全狀態(tài),結(jié)束檢測流程。

實施例四

本發(fā)明實施例還提供了一種終端。圖6為本發(fā)明實施例的終端的組成結(jié)構(gòu)示意圖;如圖6所示,所述終端包括:所述終端包括:特征收集模塊41、病毒檢測模塊42和病毒維護模塊43;其中,

所述特征收集模塊41,用于獲得第一文件,提取所述第一文件的全量特征; 所述全量特征支持唯一確定所述第一文件的所有組成部分;

所述病毒檢測模塊42,用于基于所述特征收集模塊41提取的全量特征通過預(yù)設(shè)算法計算得到第一序列;還用于分別將計算所述第一序列與所述病毒維護模塊43中的多個序列之間的相似度參數(shù);當(dāng)所述相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件;

所述病毒維護模塊43,用于存儲多個序列;每個序列對應(yīng)一類病毒文件。

本實施例中,所述特征收集模塊41提取所述第一文件的全量特征,所述全量特征支持唯一確定所述第一文件的所有組成部分。具體的,所述第一文件可包含多個組成部分,例如可包括多個子文件等等;提取到的所述第一文件的全量特征包括每個子文件的特征;所述每個子文件的特征具體可以包括每個子文件的標(biāo)識、大小、格式、所包含的字符串或代碼序列等等。其中,所述第一文件具體可以為APK文件,當(dāng)然,所述第一文件也可以是終端支持的任何格式的文件。

本實施例中,所述病毒檢測模塊42基于所述全量特征通過SIMHASH算法計算得到第一序列。其中,所述通過SIMHASH算法計算得到第一序列可參照現(xiàn)有技術(shù)中的SIMHASH算法的實現(xiàn)過程計算得到第一序列,例如首先通過hash算法將每個特征對應(yīng)生成hash值,將生成的hash值按照預(yù)設(shè)權(quán)重生成加權(quán)數(shù)字串;將各個特征對應(yīng)的序列值對應(yīng)位累加,生成一個序列串;對生成的序列串轉(zhuǎn)換為二進制,即僅包含有0和1,獲得第一序列。具體的計算過程本實施例中不做詳細描述。其中,所述第一序列具體可以為N位的字節(jié);N為正整數(shù);作為一種實施方式,所述第一序列具體可以為128位的字節(jié)。

本實施例中,所述病毒維護模塊43,用于分別計算所述第一序列與病毒庫中的多個序列之間的相似度參數(shù)之前,采集多個病毒樣本文件;提取每個病毒樣本文件的全量特征,基于所述全量特征通過預(yù)設(shè)算法計算得到序列并存儲。

具體的,所述病毒檢測模塊42在檢測文件是否是病毒文件之前,首先通過病毒維護模塊43建立病毒庫,所述病毒庫中包括已確定為病毒樣本文件對應(yīng)的hash序列;所述hash序列的獲得方式可參照本實施例所述的第一序列的計算方 式,即對每個病毒樣本文件進行全量特征的提取,基于提取的全量特征按照預(yù)設(shè)算法(具體可以為SIMHASH算法)計算獲得對應(yīng)的序列。其中,所述病毒庫中的每個hash序列對應(yīng)一類病毒文件??梢岳斫鉃椋鄠€病毒樣本文件可能感染同一類病毒;在建立病毒庫時,可針對一類病毒僅存儲一個或幾個hash序列,也即所述病毒庫中存儲的hash序列盡可能的包含所有類型的病毒文件特征(即病毒文件對應(yīng)的hash序列),這樣也盡可能的減少檢測時間。在實際應(yīng)用中,可通過其他病毒引擎提供病毒樣本、或者終端上報的病毒樣本建立病毒庫。其中,病毒庫中的病毒樣本可具有多種來源:活躍病毒、新發(fā)現(xiàn)病毒等等。

本實施例中,所述病毒檢測模塊42分別計算所述第一序列與病毒庫中的多個序列之間的相似度參數(shù);當(dāng)所述相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件。相應(yīng)的,當(dāng)所述相似度參數(shù)不小于所述預(yù)設(shè)閾值時,可確定所述第一文件不是病毒文件。

具體的,所述相似度參數(shù)具體可以為海明碼距離,即分別計算所述第一序列與所述病毒庫中的每個序列之間的海明碼距離。其中,兩個碼字的對應(yīng)比特位取值不同的比特數(shù)稱為這兩個碼字的海明碼距離。例如,第一個碼字為10101,第二個碼字為00110,相比之下,這兩個碼字的第一、第四和第五比特位的取值均不同,則這兩個碼字的海明碼距離為3。基于此,本實施例中,所述病毒檢測模塊42可分別計算所述第一序列與病毒庫中每個序列之間的海明碼距離,判斷所述海明碼距離是否小于預(yù)設(shè)閾值;其中,所述預(yù)設(shè)閾值可根據(jù)人為經(jīng)驗預(yù)先設(shè)定;作為一種實施方式,所述預(yù)設(shè)閾值的取值可以在1至10之間;當(dāng)計算獲得的海明碼距離小于所述預(yù)設(shè)閾值時,表明所述第一文件與所述病毒庫中的序列對應(yīng)文件的相似度極大,也表明所述第一文件為病毒文件的可能性極大,由此可確定所述第一文件為病毒文件。相應(yīng)的,當(dāng)計算獲得的海明碼距離不小于所述預(yù)設(shè)閾值時,表明所述第一文件與所述病毒庫中的序列對應(yīng)文件的相似度極小,也表明所述第一文件為病毒文件的可能性較小,由此可確定所述第一文件不是病毒文件。

實施例五

本發(fā)明實施例還提供了一種終端。如圖6所示,所述終端包括:特征收集模塊41、病毒檢測模塊42和病毒維護模塊43;其中,

所述特征收集模塊41,用于獲得第一文件,提取所述第一文件的全量特征;所述全量特征支持唯一確定所述第一文件的所有組成部分;

所述病毒檢測模塊42,用于基于所述特征收集模塊41提取的全量特征通過預(yù)設(shè)算法計算得到第一序列;將所述第一序列進行分段處理獲得n個分段序列;n為正整數(shù);還用于分別將每一個分段序列與病毒庫中的每個序列對應(yīng)的分段序列進行比較,基于比較結(jié)果確定所述第一文件是否是病毒文件。

所述病毒維護模塊43,用于存儲多個序列;每個序列對應(yīng)一類病毒文件。

本實施例中,所述特征收集模塊41提取所述第一文件的全量特征,所述全量特征支持唯一確定所述第一文件的所有組成部分。具體的,所述第一文件可包含多個組成部分,例如可包括多個子文件等等;提取到的所述第一文件的全量特征包括每個子文件的特征;所述每個子文件的特征具體可以包括每個子文件的標(biāo)識、大小、格式、所包含的字符串或代碼序列等等。其中,所述第一文件具體可以為APK文件,當(dāng)然,所述第一文件也可以是終端支持的任何格式的文件。

本實施例中,所述病毒維護模塊43,用于所述病毒檢測模塊42分別將每一個分段序列與病毒庫中的每個序列對應(yīng)的分段序列進行比較之前,采集多個病毒樣本文件;提取每個病毒樣本文件的全量特征,基于所述全量特征通過預(yù)設(shè)算法計算得到序列,將每個序列進行分段處理獲得所述每個序列對應(yīng)的n個分段序列;n為正整數(shù);存儲所述n個分段序列和對應(yīng)的序列。

具體的,所述病毒檢測模塊42在檢測文件是否是病毒文件之前,首先通過病毒維護模塊43建立病毒庫,所述病毒庫中包括已確定為病毒樣本文件對應(yīng)的hash序列以及hash序列所對應(yīng)的分段hash序列;所述hash序列和分段hash序列的獲得方式可參照本實施例所述的第一序列的計算方式和n個分段序列的獲得方式,即對每個病毒樣本文件進行全量特征的提取,基于提取的全量特征按 照預(yù)設(shè)算法(具體可以為SIMHASH算法)計算獲得對應(yīng)的hash序列,所述hash序列可以理解為通過SIMHASH算法計算獲得的hash值;進一步對獲得的hash序列進行分段處理獲得分段hash序列。其中,所述病毒庫中的每個hash序列(以及分段hash序列)對應(yīng)一類病毒文件??梢岳斫鉃椋鄠€病毒樣本文件可能感染同一類病毒;在建立病毒庫時,可針對一類病毒僅存儲一個或幾個hash序列,也即所述病毒庫中存儲的hash序列盡可能的包含所有類型的病毒文件特征(即病毒文件對應(yīng)的hash序列),這樣也盡可能的減少檢測時間。在實際應(yīng)用中,可通過其他病毒引擎提供病毒樣本、或者終端上報的病毒樣本建立病毒庫。其中,病毒庫中的病毒樣本可具有多種來源:活躍病毒、新發(fā)現(xiàn)病毒等等。

圖7為本發(fā)明實施例中的病毒檢測模塊42的一種處理過程示意圖;如圖7所示,在獲取到所述特征收集模塊41的全量特征后,分別通過SIMHASH算法獲得hash序列(即第一序列)、對獲取到的hash序列進行分段處理、與病毒庫中的序列進行匹配過程,最終基于匹配結(jié)果輸出狀態(tài)。

具體的,本實施例中,所述病毒檢測模塊42基于所述全量特征通過SIMHASH算法計算得到第一序列。其中,所述通過SIMHASH算法計算得到第一序列可參照現(xiàn)有技術(shù)中的SIMHASH算法的實現(xiàn)過程計算得到第一序列,例如首先通過hash算法將每個特征對應(yīng)生成hash值,將生成的hash值按照預(yù)設(shè)權(quán)重生成加權(quán)數(shù)字串;將各個特征對應(yīng)的序列值對應(yīng)位累加,生成一個序列串;對生成的序列串轉(zhuǎn)換為二進制,即僅包含有0和1,獲得第一序列。具體的計算過程本實施例中不做詳細描述。其中,所述第一序列具體可以為N位的字節(jié);N為正整數(shù);作為一種實施方式,所述第一序列具體可以為128位的字節(jié)。

本實施例中,所述病毒檢測模塊42將所述第一序列進行分段處理獲得n個分段序列;以所述第一序列為128位字節(jié)為例,可以將所述第一序列分為n段,每個分段序列的位數(shù)為128/n。其中,基于實施例四中第一序列與病毒庫中的多個序列的比較方式,即基于計算所述第一序列與病毒庫中的多個序列之間的相似度參數(shù);當(dāng)所述相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒 文件,本實施方式中,所述n等于所述預(yù)設(shè)閾值;作為一種實施方式,n的取值可以在1至10之間。

本實施例中,所述病毒檢測模塊42,用于將所述第一序列的每一個分段序列分別與所述病毒庫中的每個序列對應(yīng)的分段序列進行比較;

當(dāng)所述第一序列的第一分段序列與所述病毒庫中的第二序列的第二分段序列相等時,計算所述第一分段序列與所述第二分段序列之間的第一相似度參數(shù);其中,所述第一分段序列為所述第一序列的任一分段序列;所述第二序列為所述病毒庫中的任一序列;所述第二分段序列為所述第二序列的任一分段序列;當(dāng)所述第一相似度參數(shù)小于預(yù)設(shè)閾值時,確定所述第一文件為病毒文件。

相應(yīng)的,所述病毒檢測模塊42,還用于當(dāng)所述第一序列的每一個分段序列與所述病毒庫中的每個序列對應(yīng)的分段序列均不相等時,確定所述第一文件不是病毒文件。

具體的,所述相似度參數(shù)具體可以為海明碼距離,即分別計算所述第一序列與所述病毒庫中的每個序列之間的海明碼距離。其中,兩個碼字的對應(yīng)比特位取值不同的比特數(shù)稱為這兩個碼字的海明碼距離。例如,第一個碼字為10101,第二個碼字為00110,相比之下,這兩個碼字的第一、第四和第五比特位的取值均不同,則這兩個碼字的海明碼距離為3。在基于實施例四所述的檢測方式中,發(fā)明人發(fā)現(xiàn)當(dāng)計算兩個文件的海明碼距離小于n時,檢出的樣本與命中的樣本屬于一個家族的準(zhǔn)確率大于99.9%。基于此,本實施例中只關(guān)注海明碼距離為n及以下的分段序列,于是將序列(即計算獲得的hash值)分為n段,每個分段序列的位數(shù)可以為128/n。兩個hash值的某段相等,其出于巧合的幾率是2的128/x次方,否則其hash值的海明碼距離必小于x?;诖耍緦嵤├?,首先,所述病毒檢測模塊42分別將所述第一序列的每一個分段序列與病毒庫中的所有分段序列進行匹配;當(dāng)檢測到所述第一序列的第一分段序列與所述病毒庫中的第二序列的第二分段序列相等時,再計算所述第一分段序列與所述第二分段序列之間的第一相似度參數(shù)(即計算海明碼距離)。當(dāng)計算獲得的海明碼距離小于所述預(yù)設(shè)閾值時,表明所述第一文件與所述病毒庫中的序列 對應(yīng)文件的相似度極大,也表明所述第一文件為病毒文件的可能性極大,由此可確定所述第一文件為病毒文件。相應(yīng)的,當(dāng)計算獲得的海明碼距離不小于所述預(yù)設(shè)閾值時,表明所述第一文件與所述病毒庫中的序列對應(yīng)文件的相似度極小,也表明所述第一文件為病毒文件的可能性較小,由此可確定所述第一文件不是病毒文件。實驗表明,在病毒庫中的數(shù)據(jù)量為10萬時,檢測一個文件的hash值的耗時,可從1100ms降為8ms左右,大大減少了文件檢測時間。

本發(fā)明實施例四和實施例五中,所述終端中的特征收集模塊41、病毒檢測模塊42和病毒維護模塊43,在實際應(yīng)用中均可由所述終端中的中央處理器(CPU,Central Processing Unit)、數(shù)字信號處理器(DSP,Digital Signal Processor)、微控制單元(MCU,Microcontroller Unit)或可編程門陣列(FPGA,F(xiàn)ield-Programmable Gate Array)實現(xiàn)。

圖8為本發(fā)明實施例的終端的一種應(yīng)用架構(gòu)示意圖;如圖8所示,包括終端81和第一服務(wù)器82;本應(yīng)用架構(gòu)適用于終端通過網(wǎng)絡(luò)下載文件的應(yīng)用場景;例如終端81通過應(yīng)用商店待下載一應(yīng)用文件;所述終端82通過網(wǎng)絡(luò)與該應(yīng)用文件對應(yīng)的第一服務(wù)器82建立連接,從所述第一服務(wù)器82中下載該應(yīng)用文件。所述終端81獲得所述應(yīng)用文件后,通過本發(fā)明實施例的技術(shù)方案檢測所述應(yīng)用文件是安全文件還是病毒文件。在檢測之前或者檢測過程中或者檢測完成后,所述終端還可與病毒庫對應(yīng)的第二服務(wù)器83建立網(wǎng)絡(luò)連接,以對所述終端81中的病毒庫進行維護,對病毒庫進行更新等等。

圖9a和圖9b為本發(fā)明實施例的終端的應(yīng)用示意圖;如圖9a所示,終端的檢測功能可對文件安全進行檢測,確定文件安全后,提示用戶該文件安全。如圖9b所示,終端的檢測功能可對文件安全進行檢測,確定文件有病毒后,提示用戶該文件有病毒,應(yīng)做刪除處理等等。

圖10為本發(fā)明實施例的終端的硬件結(jié)構(gòu)示意圖;所述終端作為硬件實體的一個示例如圖10所示。所述裝置包括處理器902、存儲介質(zhì)904以及至少一個外部通信接口901;所述處理器902、存儲介質(zhì)904以及外部通信接口901均通過總線903連接。

這里需要指出的是:以上涉及終端項的描述,與上述方法描述是類似的,同方法的有益效果描述,不做贅述。對于本發(fā)明服務(wù)器實施例中未披露的技術(shù)細節(jié),請參照本發(fā)明方法實施例的描述。

在本發(fā)明上述實施例的描述中,均已終端作為病毒程序檢測方法作為執(zhí)行主體進行描述的。在其他的實施方式中,所述病毒程序檢測方法也可應(yīng)用在服務(wù)器中,所述服務(wù)器中的各組成單元以及每個組成單元的功能可參照實施例四和實施例五的終端描述方式。圖11為本發(fā)明實施例中的特征收集模塊的一種處理過程示意圖;如圖11所示,在特征收集模塊提取全量特征時,一種實施方式是通過終端的客戶端進行特征采集;另一種實施方式時通過服務(wù)器側(cè)的后臺引擎進行特征采集;采集后獲得表征全量特征的特征序列。

在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的設(shè)備和方法,可以通過其它的方式實現(xiàn)。以上所描述的設(shè)備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,如:多個單元或組件可以結(jié)合,或可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦合、或通信連接可以是通過一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性的、機械的或其它形式的。

上述作為分離部件說明的單元可以是、或也可以不是物理上分開的,作為單元顯示的部件可以是、或也可以不是物理單元,即可以位于一個地方,也可以分布到多個網(wǎng)絡(luò)單元上;可以根據(jù)實際的需要選擇其中的部分或全部單元來實現(xiàn)本實施例方案的目的。

另外,在本發(fā)明各實施例中的各功能單元可以全部集成在一個處理單元中,也可以是各單元分別單獨作為一個單元,也可以兩個或兩個以上單元集成在一個單元中;上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。

本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存 儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:移動存儲設(shè)備、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

或者,本發(fā)明上述集成的單元如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明實施例的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分。而前述的存儲介質(zhì)包括:移動存儲設(shè)備、ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1