本發(fā)明涉及計算機
技術(shù)領(lǐng)域:
,特別涉及一種識別惡意軟件的方法和裝置。
背景技術(shù):
:隨著安卓終端的普及以及發(fā)展,各種各樣的惡意軟件應(yīng)運而生,并且據(jù)統(tǒng)計,在2015年的第一季度發(fā)現(xiàn)了40多萬種新的惡意軟件,也就是說,全球范圍內(nèi)每18秒就有一個新的惡意軟件被發(fā)現(xiàn),這些惡意軟件在用戶不知曉的情況下潛入到用戶的終端中,對用戶的信息和財產(chǎn)帶來了安全隱患。為了提高用戶的信息和財產(chǎn)的安全性,目前服務(wù)器可以通過以下方法識別終端正在安裝、已經(jīng)安裝或者尚未安裝的軟件是否為惡意軟件,具體為:計算待待檢測軟件的哈希值,確定哈希值集合中是否包含該哈希值,哈希值集合中包括惡意軟件的哈希值;如果哈希值集合中包含該哈希值,則確定該軟件是惡意軟件,否則,則確定該軟件不是惡意軟件。在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:基于軟件的哈希值識別該軟件是否為惡意軟件,很容易被病毒制造者繞開,導致識別準確率低;例如,在惡意軟件中添加新的資源或者修改原有代碼,使得該惡意軟件的哈希值發(fā)生改變,從而檢測出該惡意軟件不是惡意軟件,也即出現(xiàn)了誤判的情況,導致識別準確率低。技術(shù)實現(xiàn)要素:為了解決現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種識別惡意軟件的方法和裝置。技術(shù)方案如下:一種識別惡意軟件的方法,所述方法包括:根據(jù)待檢測的軟件的源代碼,獲取所述軟件的函數(shù)調(diào)用圖;根據(jù)所述函數(shù)調(diào)用圖,生成所述軟件的特征序列,所述特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),所述特征的特征值為所述函數(shù)被所述軟件調(diào)用的次數(shù);根據(jù)所述特征序列和隨機森林,識別所述軟件是否為惡意軟件,所述隨機森林包括至少一個決策樹,決策樹包括多個特征的基準特征值。一種識別惡意軟件的裝置,所述裝置包括:獲取模塊,用于根據(jù)待檢測的軟件的源代碼,獲取所述軟件的函數(shù)調(diào)用圖;生成模塊,用于根據(jù)所述函數(shù)調(diào)用圖,生成所述軟件的特征序列,所述特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),所述特征的特征值為所述函數(shù)被所述軟件調(diào)用的次數(shù);識別模塊,用于根據(jù)所述特征序列和隨機森林,識別所述軟件是否為惡意軟件,所述隨機森林包括至少一個決策樹,決策樹包括多個特征的基準特征值。在本發(fā)明實施例中,根據(jù)待檢測的軟件的源代碼,獲取該軟件的函數(shù)調(diào)用圖;根據(jù)該函數(shù)調(diào)用圖,生成該軟件的特征序列,該特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),特征的特征值為函數(shù)被該軟件調(diào)用的次數(shù);根據(jù)該特征序列和隨機森林,識別該軟件是否為惡意軟件,隨機森林包括至少一個決策樹,決策樹包括多個特征的基準特征值。本發(fā)明通過特征序列和隨機森林識別該軟件是否為惡意軟件,從而不受病毒制造者的影響,可以提高識別準確率。附圖說明圖1是本發(fā)明實施例1提供的一種識別惡意軟件的方法流程圖;圖2-1是本發(fā)明實施例2提供的一種識別惡意軟件的方法流程圖;圖2-2是本發(fā)明實施例2提供的一種該軟件的函數(shù)調(diào)用圖的示意圖;圖2-3是本發(fā)明實施例2提供的一種決策樹的示意圖;圖3-1是本發(fā)明實施例3提供的一種識別惡意軟件的裝置結(jié)構(gòu)示意圖;圖3-2是本發(fā)明實施例3提供的一種獲取模塊的裝置結(jié)構(gòu)示意圖;圖3-3是本發(fā)明實施例3提供的一種生成模塊的裝置結(jié)構(gòu)示意圖;圖3-4是本發(fā)明實施例3提供的另一種生成模塊的裝置結(jié)構(gòu)示意圖;圖3-5是本發(fā)明實施例3提供的一種識別模塊的裝置結(jié)構(gòu)示意圖;圖3-6是本發(fā)明實施例3提供的一種識別單元的裝置結(jié)構(gòu)示意圖;圖3-7是本發(fā)明實施例3提供的另一種識別惡意軟件的裝置結(jié)構(gòu)示意圖;圖4是本發(fā)明實施例4提供的一種服務(wù)器的結(jié)構(gòu)示意圖。具體實施方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。實施例1本發(fā)明實施例提供了一種識別惡意軟件的方法,該方法的執(zhí)行主體可以為服務(wù)器,參見圖1,其中,該方法包括:步驟101:根據(jù)待檢測的軟件的源代碼,獲取該軟件的函數(shù)調(diào)用圖。步驟102:根據(jù)函數(shù)調(diào)用圖,生成該軟件的特征序列,該特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),特征的特征值為函數(shù)被軟件調(diào)用的次數(shù)。步驟103:根據(jù)特征序列和隨機森林,識別該軟件是否為惡意軟件,隨機森林包括至少一個決策樹,決策樹包括多個特征的基準特征值。在本發(fā)明實施例中,根據(jù)待檢測的軟件的源代碼,獲取該軟件的函數(shù)調(diào)用圖;根據(jù)該函數(shù)調(diào)用圖,生成該軟件的特征序列,該特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),特征的特征值為函數(shù)被該軟件調(diào)用的次數(shù);根據(jù)該特征序列和隨機森林,識別該軟件是否為惡意軟件,隨機森林包括至少一個決策樹,決策樹包括多個特征的基準特征值。本發(fā)明通過特征序列和隨機森林識別該軟件是否為惡意軟件,從而不受病毒制造者的影響,可以提高識別準確率。實施例2本發(fā)明實施例提供了一種識別惡意軟件的方法,該方法的執(zhí)行主體可以為服務(wù)器,參見圖2-1,其中,該方法包括:步驟201:根據(jù)待檢測的軟件的源代碼,獲取該軟件的函數(shù)調(diào)用圖。待檢測的軟件可以為終端正在安裝的軟件、已經(jīng)安裝的軟件或者尚未安裝的軟件。函數(shù)調(diào)用圖是一種將源代碼中的函數(shù)調(diào)用關(guān)系用有向圖表示出來的靜態(tài)表達方式;該軟件的函數(shù)調(diào)用圖包括該軟件調(diào)用的函數(shù)以及各函數(shù)之間的關(guān)系。并且,函數(shù)調(diào)用圖中包括節(jié)點和有向線段,節(jié)點表示函數(shù),有向線段表示函數(shù)之間的調(diào)用關(guān)系,并且有向線段的方向是由調(diào)用函數(shù)指向被調(diào)用函數(shù)。本步驟可以通過如下步驟(1)和(2)實現(xiàn),包括:(1):對待檢測的軟件的源代碼進行反編譯,得到該軟件的反編譯代碼。開發(fā)人員在開發(fā)該軟件時可以生成一個APK(AndroidPackage,安卓應(yīng)用程序)文件,該APK文件是一個壓縮文件,服務(wù)器解壓該APK文件會得到一個classes.dex文件,該classes.dex文件中包括該軟件的源代碼?;蛘撸_發(fā)人員在開發(fā)該軟件時可以一個生成一個classes.elf文件,該classes.elf文件中包括該軟件的源代碼。在本步驟中,服務(wù)器對classes.dex文件中包括的源代碼進行反編譯,得到該軟件的反編譯代碼;或者,服務(wù)器對該classes.elf文件中包括的源代碼進行反編譯,得到該軟件的反編譯代碼。(2):解析該反編譯代碼,得到該軟件的函數(shù)調(diào)用圖。服務(wù)器解析該反編譯代碼,獲取該軟件調(diào)用的函數(shù)以及各函數(shù)之間的關(guān)系,將該軟件調(diào)用的函數(shù)以及各函數(shù)之間的關(guān)系用函數(shù)調(diào)用圖的方式展現(xiàn)出來,得到該軟件的函數(shù)調(diào)用圖。例如,該軟件調(diào)用的函數(shù)包括函數(shù)A、B、C、D、E和F,且函數(shù)A調(diào)用函數(shù)B,函數(shù)B調(diào)用函數(shù)C和函數(shù)D;函數(shù)C和函數(shù)D分別調(diào)用函數(shù)E和函數(shù)F,服務(wù)器得到該軟件的函數(shù)調(diào)用圖如圖2-2所示。步驟202:根據(jù)該函數(shù)調(diào)用圖,獲取預(yù)設(shè)函數(shù)庫中的每個函數(shù)被該軟件調(diào)用的調(diào)用次數(shù)。預(yù)設(shè)函數(shù)庫用于存儲軟件所可能需要的所有函數(shù)。則本步驟可以為:對于預(yù)設(shè)函數(shù)庫中的每個函數(shù),服務(wù)器根據(jù)該函數(shù)調(diào)用圖,獲取該函數(shù)在該函數(shù)調(diào)用圖中出現(xiàn)的次數(shù),將該次數(shù)確定為該函數(shù)被該軟件調(diào)用的調(diào)用次數(shù)。例如,預(yù)設(shè)函數(shù)庫中包括函數(shù)A、B、C、D、E、F、G和H共8個函數(shù),且函數(shù)A、B、C、D分別在該函數(shù)調(diào)用圖中出現(xiàn)了1次,則函數(shù)A、B、C、D的調(diào)用次數(shù)都是1;而函數(shù)E和F分別在該函數(shù)調(diào)用圖中出現(xiàn)了2次,則函數(shù)E和F的調(diào)用次數(shù)都是2;而函數(shù)G和H并沒有在該函數(shù)調(diào)用圖中出現(xiàn),則函數(shù)G和H的調(diào)用次數(shù)都是0。需要說明的是,為了增加識別準確率,可以結(jié)合步驟203中的該軟件請求訪問的權(quán)限生成該軟件的特征序列。步驟203:根據(jù)該軟件請求訪問的權(quán)限,獲取預(yù)設(shè)權(quán)限庫中被該軟件請求訪問的訪問權(quán)限和未被該軟件請求訪問的未訪問權(quán)限。預(yù)設(shè)權(quán)限庫中用于存儲軟件所可能訪問的所有權(quán)限,可以包括獲取設(shè)備信息、發(fā)送短信、自啟動、訪問地理位置和獲取通訊錄等。從該軟件的安裝包中獲取該軟件請求訪問的權(quán)限,該軟件請求訪問的權(quán)限即為訪問權(quán)限;預(yù)設(shè)權(quán)限庫中除訪問權(quán)限之外的權(quán)限即為未訪問權(quán)限。其中,該軟件的安裝包中包括AndroidManifest.xml文件,該AndroidManifest.xml文件中包括該軟件的權(quán)限請求消息,該權(quán)限請求消息中攜帶該軟件請求訪問的權(quán)限。因此,從該軟件的安裝包中獲取該軟件請求訪問的權(quán)限的步驟可以為:從該軟件的安裝包中獲取該軟件的AndroidManifest.xml文件,從該AndroidManifest.xml文件中獲取該軟件的權(quán)限請求消息,從該軟件的權(quán)限請求消息中獲取該軟件請求訪問的權(quán)限。例如,該軟件請求訪問的權(quán)限為發(fā)送短信和訪問地理位置,預(yù)設(shè)權(quán)限庫中包括的權(quán)限為取設(shè)備信息、發(fā)送短信、自啟動、訪問地理位置和獲取通訊錄。則預(yù)設(shè)權(quán)限庫中被該軟件請求訪問的訪問權(quán)限為發(fā)送短信和訪問地理位置;未被該軟件請求訪問的未訪問權(quán)限為:獲取設(shè)備信息、自啟動和獲取通訊錄。步驟204:將該訪問權(quán)限的特征值設(shè)置為第一數(shù)值,將該未訪問權(quán)限的特征值設(shè)置為第二數(shù)值。第一數(shù)值和第二數(shù)值不相等;且第一數(shù)值和第二數(shù)值都可以根據(jù)需要進行設(shè)置并更改,在本發(fā)明實施例中,對第一數(shù)值和第二數(shù)值都不做具體限定;例如,第一數(shù)值為1,第二數(shù)值為0。則本步驟可以為:將該訪問權(quán)限的特征值設(shè)置為1,將該未訪問權(quán)限的特征值設(shè)置為0。例如,將訪問權(quán)限:發(fā)送短信和訪問地理位置的特征值分別設(shè)置為1,將未訪問權(quán)限:獲取設(shè)備信息、自啟動和獲取通訊錄的特征值分別設(shè)置為0。需要說明的是,步驟203和步驟204是可選步驟,是為了提高識別準確率增加的步驟,也可以執(zhí)行完步驟202之后,直接執(zhí)行步驟205。步驟205:將每個函數(shù)的調(diào)用次數(shù)、預(yù)設(shè)權(quán)限庫中的每個權(quán)限的特征值組成該軟件的特征序列。其中,特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),或者特征為預(yù)設(shè)函數(shù)庫中的函數(shù)和預(yù)設(shè)權(quán)限庫中的權(quán)限的組合。當特征為預(yù)設(shè)函數(shù)庫中的函數(shù)時,該特征的特征值為該函數(shù)被該軟件調(diào)用的次數(shù);當特征為預(yù)設(shè)權(quán)限庫中的權(quán)限時,該特征的特征值用于表示該權(quán)限是否被該軟件訪問的特征值。例如,預(yù)設(shè)函數(shù)庫中包括函數(shù)A、B、C、D、E、F、G和H,且函數(shù)A、B、C、D、E、F、G和H的調(diào)用次數(shù)分別為1、1、1、1、2、2、0和0;預(yù)設(shè)權(quán)限庫中包括權(quán)限為取設(shè)備信息、發(fā)送短信、自啟動、訪問地理位置和獲取通訊錄,取設(shè)備信息、發(fā)送短信、自啟動、訪問地理位置和獲取通訊錄對應(yīng)的特征值分別為0、1、0、1、0。則該軟件的特征序列為[1、1、1、1、2、2、0、0、0、1、0、1、0]。需要說明的是,如果執(zhí)行完步驟202之后,不執(zhí)行步驟203和204,直接執(zhí)行步驟205,則步驟205可以為:將每個函數(shù)的調(diào)用次數(shù)組成該軟件的特征序列。例如,預(yù)設(shè)函數(shù)庫中包括函數(shù)A、B、C、D、E、F、G和H,且函數(shù)A、B、C、D、E、F、G和H的調(diào)用次數(shù)分別為1、1、1、1、2、2、0和0;則該軟件的特征序列為[1、1、1、1、2、2、0、0]。步驟206:根據(jù)隨機森林包括的每個決策樹和該特征序列,識別該軟件是否為惡意軟件,得到每個決策樹對應(yīng)的識別結(jié)果。隨機森林中包括至少一個決策樹,至少一個決策樹中的每個決策樹包括多個特征路徑,多個特征路徑中的每個特征路徑包括多個基準特征值,每個特征路徑對應(yīng)一個識別結(jié)果。識別結(jié)果包括該軟件為惡意軟件和該軟件為非惡意軟件。在本步驟之前,服務(wù)器需要先生成至少一個決策樹,至少一個決策樹組成隨機森林,其中,對于至少一個決策樹中的每個決策樹,服務(wù)器可以通過以下步驟(1)和(2)生成該決策樹,包括:(1):根據(jù)樣本特征序列集合,確定樣本特征序列集合中的部分特征中的每個特征在決策樹中的位置以及每個特征的基準特征值。樣本特征序列集合包括至少一個惡意軟件的樣本特征序列和至少一個非惡意軟件的樣本特征序列。本步驟具體可以通過以下步驟(1-1)至(1-4)實現(xiàn),包括:(1-1):從樣本特征序列集合中選擇第一位置對應(yīng)的預(yù)設(shè)特征集合。在本發(fā)明實施例中,該決策樹為二叉樹,也即每個節(jié)點只包括兩個子節(jié)點。服務(wù)器在生成決策樹時,先確定決策樹的根節(jié)點對應(yīng)的特征和基準特征值;然后再分別確定根節(jié)點包括的兩個一級內(nèi)部節(jié)點對應(yīng)的特征和基準特征值,然后再分別確定兩個一級內(nèi)部節(jié)點包括的兩個二級內(nèi)部節(jié)點對應(yīng)的特征和基準特征值,直到確定決策樹的葉子節(jié)點對應(yīng)的特征和基準特征值。第一位置為該決策樹中離根節(jié)點最近的且待確定特征和基準特征值的位置;例如,服務(wù)器還沒有確定決策樹的根節(jié)點的特征和基準特征值時,第一位置為根節(jié)點;當服務(wù)器已經(jīng)確定根節(jié)點的特征和基準特征值時,但未確定根節(jié)點包括的一級內(nèi)部節(jié)點的特征和基準特征值,則第一位置為根節(jié)點包括的一級內(nèi)部節(jié)點等。在本步驟中,以第一位置為根節(jié)點為例進行說明,本步驟可以為:對樣本特征序列集合中的特征序列進行采樣,得到根節(jié)點對應(yīng)的預(yù)設(shè)特征集合。如果樣本特征序列為惡意軟件的樣本特征序列,識別結(jié)果用1表示;如果樣本特征序列為非惡意軟件的樣本特征序列,識別結(jié)果用0表示。則樣本特征序列集合可以表示為:需要說明的是,特征序列集合中的特征的排序分別為函數(shù)A、B、C、D、E、F、G、H、取設(shè)備信息、發(fā)送短信、自啟動、訪問地理位置和獲取通訊錄。為了簡化操作,我們可以假設(shè)樣本特征序列集合為:將樣本特征序列集合表示為如下表1所示:表1ID特征1特征2特征3特征4識別結(jié)果1100302100203110214111315100306200307200208211219201111020110服務(wù)器對該樣本特征序列集合進行行列采樣,得到的根節(jié)點對應(yīng)的預(yù)設(shè)特征集合如下表2所示:表2ID特征1特征2特征3特征4識別結(jié)果5101308212211101309202114111312101203111211020210210120311121(2):計算預(yù)設(shè)特征集合包括的每個特征值的基尼系數(shù)。計算特征值的基尼系數(shù)的過程為現(xiàn)有技術(shù),在此不再詳細說明。例如,服務(wù)器計算表2中包括的每個特征值的基尼系數(shù)。首先,特征1的特征值為1的ID為5,1,4,2,3,2,3的樣本,共7個,在這7個樣本中,識別結(jié)果為0的ID為5,1,2,2,共4個;則特征1的特征值為1且識別結(jié)果為0的概率為4/7,特征1的特征值為1且識別結(jié)果為1的概率為3/7,特征1的特征值為2的ID為8,9,10,共3個,則特征1的特征值為2且識別結(jié)果為0的概率為2/3,特征1的特征值為2且識別結(jié)果為1的概率為1/3。則對表2中的每個特征的每個特征值計算基尼系數(shù),例如,每個特征的每個特征值的基尼系數(shù)如下所示:Gini(D,特征1=1)=0.5;Gini(D,特征1=2)=0.5;Gini(D,特征2=0)=0.4;Gini(D,特征2=1)=0.4;Gini(D,特征3=1)=0.5;Gini(D,特征3=2)=0.5;Gini(D,特征4=1)=0.2;Gini(D,特征4=2)=0.3;Gini(D,特征4=3)=0.4。(3):確定最小基尼系數(shù)對應(yīng)的特征值,以及最小基尼系數(shù)對應(yīng)的特征。服務(wù)器從預(yù)設(shè)特征集合包括的每個特征值的基尼系數(shù)中選擇最小基尼系數(shù);從預(yù)設(shè)特征集合中選擇最小基尼系數(shù)對應(yīng)的特征。例如,最小基尼系數(shù)為0.2,最小基尼系數(shù)對應(yīng)的特征值為1,最小基尼系數(shù)對應(yīng)的特征為特征4。(4):將第一位置作為該確定出的特征的位置,將該確定出的特征值作為該確定出的特征的基準特征值。通過以上步驟(1)至(4)確定預(yù)設(shè)特征集合中的每個特征在決策樹中的位置以及每個特征的基準特征值。例如,將第一位置作為特征4的位置,將特征值為1作為特征4的基準特征值。則進一步地,根據(jù)特征4=1,將預(yù)設(shè)特征集合劃分為兩部分,分別為特征4的特征值小于或等于1的一部分,如下表3所示,以及特征4的特征值大于1的一部分,如下表4所示。表3ID特征1特征2特征3特征4識別結(jié)果9202111020210表4ID特征1特征2特征3特征4識別結(jié)果510130821221110130411131210120311121210120311121進一步地,選擇第一位置為根節(jié)點包括的兩個一級內(nèi)部節(jié)點,分別稱為第一一級內(nèi)部節(jié)點和第二一級內(nèi)部節(jié)點,則第一一級內(nèi)部節(jié)點對應(yīng)的預(yù)設(shè)特征集合為表3所示;第二一級內(nèi)部節(jié)點對應(yīng)的預(yù)設(shè)特征集合為表4所示,按照以上方法確定第一一級內(nèi)部節(jié)點的特征以及基準特征值,第二一級內(nèi)部節(jié)點的特征以及基準特征值,直到確定決策樹的葉子節(jié)點的特征和基準特征值,此時生成了一個決策樹,參見圖2-3所示。(2):根據(jù)每個特征在決策樹中的位置,將每個特征的基準特征值組成決策樹。根據(jù)每個特征在決策樹中的位置和每個特征對應(yīng)的基準特征值,生成多條特征路徑,將多條特征路徑組成決策樹。對于隨機森林中的任一決策樹,為了便于描述,將該任一決策樹稱為第一決策樹,則服務(wù)器可以通過以下步驟(A)和(B)獲取第一決策樹識別該軟件是否為惡意軟件的識別結(jié)果,包括:(A):根據(jù)該特征序列,從第一決策樹包括的多個特征路徑中獲取與該特征序列匹配的特征路徑。第一決策樹包括的多個特征路徑中的每個特征路徑包括特征和基準特征值,根據(jù)該特征和該基準特征值,以及該特征序列,多個特征路徑中獲取與該特征序列匹配的特征路徑。例如,該特征序列包括特征1=1,特征2=2,特征3=0,特征4=2,則從圖2-3中的第一決策樹中選擇與該特征序列相匹配的特征路徑為(B):將選擇的特征路徑對應(yīng)的識別結(jié)果作為第一決策樹的識別結(jié)果。每個特征路徑對應(yīng)一個識別結(jié)果,選擇的特征路徑對應(yīng)的識別結(jié)果即是第一決策樹的識別結(jié)果。例如,選擇的特征路徑為該選擇的特征路徑對應(yīng)的識別結(jié)果為該軟件為非惡意軟件,則第一決策樹的識別結(jié)果為該軟件為非惡意軟件。通過以上步驟(A)和(B)得到每個決策樹的識別結(jié)果,然后執(zhí)行步驟207。步驟207:根據(jù)每個決策樹的識別結(jié)果,統(tǒng)計識別結(jié)果為該軟件為惡意軟件的第一結(jié)果數(shù)目和該軟件為非惡意軟件的第二結(jié)果數(shù)目。步驟208:根據(jù)第一結(jié)果數(shù)目和第二結(jié)果數(shù)目,確定該軟件是否為惡意軟件。如果第一結(jié)果數(shù)目大于第二結(jié)果數(shù)目,確定該軟件為惡意軟件。如果第一結(jié)果數(shù)目不大于第二結(jié)果數(shù)目,確定該軟件為非惡意軟件。進一步地,服務(wù)器得到該軟件的識別結(jié)果之后,可以將該識別結(jié)果存儲到該軟件的安裝包中,從而終端在安裝該軟件時,可以從該軟件的安裝包中獲取該軟件的識別結(jié)果,如果該軟件的識別結(jié)果為該軟件為惡意軟件時,終端可以拒絕安裝該軟件。進一步地,服務(wù)器還可以建立該軟件的版本號和該軟件的識別結(jié)果的對應(yīng)關(guān)系,以供終端或者服務(wù)器根據(jù)該軟件的版本號查詢該軟件的識別結(jié)果。并且,服務(wù)器建立該軟件的版本號和該軟件的識別結(jié)果的對應(yīng)關(guān)系之后,當服務(wù)器接收端待檢測的軟件時,根據(jù)待檢測的軟件的版本號,確定是否已識別該軟件,如果已識別,直接根據(jù)待檢測的軟件的版本號,獲取該軟件的識別結(jié)果,不用重復(fù)識別。在本發(fā)明實施例中,根據(jù)待檢測的軟件的源代碼,獲取該軟件的函數(shù)調(diào)用圖;根據(jù)該函數(shù)調(diào)用圖,生成該軟件的特征序列,該特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),特征的特征值為函數(shù)被該軟件調(diào)用的次數(shù);根據(jù)該特征序列和隨機森林,識別該軟件是否為惡意軟件,隨機森林包括至少一個決策樹,決策樹包括多個特征的基準特征值。本發(fā)明通過特征序列和隨機森林識別該軟件是否為惡意軟件,從而不受病毒制造者的影響,可以提高識別準確率。實施例3本發(fā)明實施例提供了一種識別惡意軟件的裝置,該裝置可以用于執(zhí)行實施例1和2中的識別惡意軟件的方法,參見圖3-1,其中,該裝置包括:獲取模塊301,用于根據(jù)待檢測的軟件的源代碼,獲取該軟件的函數(shù)調(diào)用圖;生成模塊302,用于根據(jù)該函數(shù)調(diào)用圖,生成該軟件的特征序列,該特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),特征的特征值為函數(shù)被軟件調(diào)用的次數(shù);識別模塊303,用于根據(jù)該特征序列和隨機森林,識別該軟件是否為惡意軟件,隨機森林包括至少一個決策樹,決策樹包括多個特征的基準特征值??蛇x的,參見圖3-2,獲取模塊301,包括:反編譯單元3011,用于對待檢測的軟件的源代碼進行反編譯,得到該軟件的反編譯代碼;解析單元3012,用于解析反編譯代碼,得到該軟件的函數(shù)調(diào)用圖??蛇x的,參見圖3-3,生成模塊302,包括:第一獲取單元3021,用于根據(jù)該函數(shù)調(diào)用圖,獲取預(yù)設(shè)函數(shù)庫中的每個函數(shù)被軟件調(diào)用的調(diào)用次數(shù);組成單元3022,用于將每個函數(shù)的調(diào)用次數(shù)組成該軟件的特征序列??蛇x的,特征還包括預(yù)設(shè)權(quán)限庫中的權(quán)限,特征的特征值用于表示權(quán)限是否被軟件訪問的特征值;參見圖3-4,生成模塊302還包括:第二獲取單元3023,用于根據(jù)該軟件請求訪問的權(quán)限,獲取預(yù)設(shè)權(quán)限庫中被該軟件請求訪問的訪問權(quán)限和未被該軟件請求訪問的未訪問權(quán)限;設(shè)置單元3024,用于將訪問權(quán)限的特征值設(shè)置為第一數(shù)值,將未訪問權(quán)限的特征值設(shè)置為第二數(shù)值;組成單元3022,用于將每個函數(shù)的調(diào)用次數(shù)、預(yù)設(shè)權(quán)限庫中的每個權(quán)限的特征值組成軟件的特征序列。可選的,參見圖3-5,識別模塊303,包括:識別單元3031,用于根據(jù)隨機森林包括的每個決策樹和特征序列,識別該軟件是否為惡意軟件,得到每個決策樹對應(yīng)的識別結(jié)果;統(tǒng)計單元3032,用于根據(jù)每個決策樹的識別結(jié)果,統(tǒng)計識別結(jié)果為該軟件為惡意軟件的第一結(jié)果數(shù)目和該軟件為非惡意軟件的第二結(jié)果數(shù)目;第一確定單元3033,用于如果第一結(jié)果數(shù)目大于第二結(jié)果數(shù)目,確定該軟件為惡意軟件;第二確定單元3034,用于如果第一結(jié)果數(shù)目不大于第二結(jié)果數(shù)目,確定該軟件為非惡意軟件??蛇x的,隨機森林中的決策樹包括多個特征路徑,多個特征路徑中的每個特征路徑包括多個基準特征值,每個特征路徑對應(yīng)一個識別結(jié)果;參見圖3-6,識別單元3031,包括:獲取子單元30311,用于根據(jù)該特征序列,從第一決策樹包括的多個特征路徑中獲取與特征序列匹配的特征路徑,第一決策樹為隨機森林中的任一決策樹;作為子單元30312,用于將選擇的特征路徑對應(yīng)的識別結(jié)果作為第一決策樹的識別結(jié)果??蛇x的,參見圖3-7,該裝置還包括:確定模塊304,用于根據(jù)樣本特征序列集合,確定樣本特征序列集合中的部分特征中的每個特征在決策樹中的位置以及每個特征的基準特征值,樣本特征序列集合包括至少一個惡意軟件的樣本特征序列和至少一個非惡意軟件的樣本特征序列;組成模塊305,用于根據(jù)每個特征在決策樹中的位置,將每個特征的基準特征值組成決策樹。在本發(fā)明實施例中,根據(jù)待檢測的軟件的源代碼,獲取該軟件的函數(shù)調(diào)用圖;根據(jù)該函數(shù)調(diào)用圖,生成該軟件的特征序列,該特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),特征的特征值為函數(shù)被該軟件調(diào)用的次數(shù);根據(jù)該特征序列和隨機森林,識別該軟件是否為惡意軟件,隨機森林包括至少一個決策樹,決策樹包括多個特征的基準特征值。本發(fā)明通過特征序列和隨機森林識別該軟件是否為惡意軟件,從而不受病毒制造者的影響,可以提高識別準確率。實施例4圖4是本發(fā)明實施例提供的服務(wù)器的結(jié)構(gòu)示意圖,該服務(wù)器為上述信息平臺提供硬件運行環(huán)境。服務(wù)器1900可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上中央處理器(centralprocessingunits,CPU)1922(例如,一個或一個以上處理器)和存儲器1932,一個或一個以上存儲應(yīng)用程序1942或數(shù)據(jù)1944的存儲介質(zhì)1930(例如一個或一個以上海量存儲設(shè)備)。其中,存儲器1932和存儲介質(zhì)1930可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)1930的程序可以包括一個或一個以上模塊(圖示沒標出),每個模塊可以包括對服務(wù)器中的一系列指令操作。更進一步地,中央處理器1922可以設(shè)置為與存儲介質(zhì)1930通信,在服務(wù)器1900上執(zhí)行存儲介質(zhì)1930中的一系列指令操作。服務(wù)器1900還可以包括一個或一個以上電源1926,一個或一個以上有線或無線網(wǎng)絡(luò)接口1950,一個或一個以上輸入輸出接口1958,一個或一個以上鍵盤1956,和/或,一個或一個以上操作系統(tǒng)1941,例如WindowsServerTM,MacOSXTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM等等。服務(wù)器1900可以包括有存儲器,以及一個或者一個以上的程序,其中一個或者一個以上程序存儲于存儲器中,且經(jīng)配置以由一個或者一個以上處理器執(zhí)行所述一個或者一個以上程序包含用于進行以下操作的指令:根據(jù)待檢測的軟件的源代碼,獲取所述軟件的函數(shù)調(diào)用圖;根據(jù)所述函數(shù)調(diào)用圖,生成所述軟件的特征序列,所述特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),所述特征的特征值為所述函數(shù)被所述軟件調(diào)用的次數(shù);根據(jù)所述特征序列和隨機森林,識別所述軟件是否為惡意軟件,所述隨機森林包括至少一個決策樹,決策樹包括多個特征的基準特征值??蛇x的,所述根據(jù)待檢測的軟件的源代碼,獲取所述軟件的函數(shù)調(diào)用圖,包括:對待檢測的軟件的源代碼進行反編譯,得到所述軟件的反編譯代碼;解析所述反編譯代碼,得到所述軟件的函數(shù)調(diào)用圖。可選的,所述根據(jù)所述函數(shù)調(diào)用圖,生成所述軟件的特征序列,包括:根據(jù)所述函數(shù)調(diào)用圖,獲取預(yù)設(shè)函數(shù)庫中的每個函數(shù)被所述軟件調(diào)用的調(diào)用次數(shù);將所述每個函數(shù)的調(diào)用次數(shù)組成所述軟件的特征序列。可選的,所述特征還包括預(yù)設(shè)權(quán)限庫中的權(quán)限,所述特征的特征值用于表示所述權(quán)限是否被所述軟件訪問的特征值;所述將所述每個函數(shù)的調(diào)用次數(shù)組成所述軟件的特征序列之前,還包括:根據(jù)所述軟件請求訪問的權(quán)限,獲取預(yù)設(shè)權(quán)限庫中被所述軟件請求訪問的訪問權(quán)限和未被所述軟件請求訪問的未訪問權(quán)限;將所述訪問權(quán)限的特征值設(shè)置為第一數(shù)值,將所述未訪問權(quán)限的特征值設(shè)置為第二數(shù)值;所述將所述每個函數(shù)的調(diào)用次數(shù)組成所述軟件的特征序列,包括:將所述每個函數(shù)的調(diào)用次數(shù)、所述預(yù)設(shè)權(quán)限庫中的每個權(quán)限的特征值組成所述軟件的特征序列??蛇x的,所述根據(jù)所述特征序列和隨機森林,識別所述軟件是否為惡意軟件,包括:根據(jù)隨機森林包括的每個決策樹和所述特征序列,識別所述軟件是否為惡意軟件,得到所述每個決策樹對應(yīng)的識別結(jié)果;根據(jù)所述每個決策樹的識別結(jié)果,統(tǒng)計識別結(jié)果為所述軟件為惡意軟件的第一結(jié)果數(shù)目和所述軟件為非惡意軟件的第二結(jié)果數(shù)目;如果所述第一結(jié)果數(shù)目大于所述第二結(jié)果數(shù)目,確定所述軟件為惡意軟件;如果所述第一結(jié)果數(shù)目不大于所述第二結(jié)果數(shù)目,確定所述軟件為非惡意軟件??蛇x的,所述隨機森林中的決策樹包括多個特征路徑,所述多個特征路徑中的每個特征路徑包括多個基準特征值,所述每個特征路徑對應(yīng)一個識別結(jié)果;所述根據(jù)隨機森林包括的每個決策樹和所述特征序列,識別所述軟件是否為惡意軟件,得到所述每個決策樹的識別結(jié)果,包括:根據(jù)所述特征序列,從第一決策樹包括的多個特征路徑中獲取與所述特征序列匹配的特征路徑,所述第一決策樹為所述隨機森林中的任一決策樹;將所述選擇的特征路徑對應(yīng)的識別結(jié)果作為所述第一決策樹的識別結(jié)果??蛇x的,所述方法還包括:根據(jù)樣本特征序列集合,確定所述樣本特征序列集合中的部分特征中的每個特征在決策樹中的位置以及所述每個特征的基準特征值,所述樣本特征序列集合包括至少一個惡意軟件的樣本特征序列和至少一個非惡意軟件的樣本特征序列;根據(jù)所述每個特征在決策樹中的位置,將所述每個特征的基準特征值組成決策樹。在本發(fā)明實施例中,根據(jù)待檢測的軟件的源代碼,獲取該軟件的函數(shù)調(diào)用圖;根據(jù)該函數(shù)調(diào)用圖,生成該軟件的特征序列,該特征序列包括至少一個特征的特征值,特征為預(yù)設(shè)函數(shù)庫中的函數(shù),特征的特征值為函數(shù)被該軟件調(diào)用的次數(shù);根據(jù)該特征序列和隨機森林,識別該軟件是否為惡意軟件,隨機森林包括至少一個決策樹,決策樹包括多個特征的基準特征值。本發(fā)明通過特征序列和隨機森林識別該軟件是否為惡意軟件,從而不受病毒制造者的影響,可以提高識別準確率。需要說明的是:上述實施例提供的識別惡意軟件的裝置在識別惡意軟件時,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的識別惡意軟件的裝置與識別惡意軟件的方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。當前第1頁1 2 3