本申請(qǐng)涉及智能終端安全
技術(shù)領(lǐng)域:
:,尤其涉及一種提取樣本代碼特征的方法及裝置。
背景技術(shù):
::隨著科技發(fā)展,智能終端具有越來越多的功能。例如,人們的手機(jī)從傳統(tǒng)的GSM、TDMA數(shù)字手機(jī)轉(zhuǎn)向了擁有能夠處理多媒體資源、提供網(wǎng)頁瀏覽、電話會(huì)議、電子商務(wù)等多種信息服務(wù)的智能手機(jī)。然而,品種日益繁多的手機(jī)惡意代碼攻擊以及形勢日益嚴(yán)峻的個(gè)人數(shù)據(jù)安全問題也隨之而來,越來越多的手機(jī)病毒讓智能手機(jī)用戶飽受其苦。目前,對(duì)于各類智能終端的殺毒技術(shù)主要是基于應(yīng)用程序的虛擬機(jī)執(zhí)行文件的字符串進(jìn)行查殺,將提取的字符串特征與預(yù)先建立的病毒庫中的病毒特征進(jìn)行匹配,若匹配發(fā)現(xiàn)待檢測的應(yīng)用程序的虛擬機(jī)執(zhí)行文件的字符串包含病毒特征,則確定其為病毒代碼。然而,現(xiàn)有技術(shù)中,病毒庫中的病毒特征是通過人工對(duì)黑樣本(即病毒樣本)、白樣本(即非病毒樣本)進(jìn)行分析得到的,由于人工分析方式在一定程度上效率較低,導(dǎo)致最終得到的病毒庫中包含的病毒特征數(shù)量有限、并且準(zhǔn)確性不高,從而導(dǎo)致殺毒應(yīng)用的病毒查殺效果不佳。技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)實(shí)施例提供一種克服上述問題或者至少部分地解決上述問題的提取樣本代碼特征的方法及裝置。本申請(qǐng)實(shí)施例采用下述技術(shù)方案:一種提取樣本代碼特征的方法,包括:獲取樣本集合中包含的黑樣本、白樣本的虛擬機(jī)執(zhí)行文件;對(duì)黑、白樣本對(duì)應(yīng)的所述虛擬機(jī)執(zhí)行文件進(jìn)行反編譯,得到反編譯的函數(shù)信息結(jié)構(gòu);提取所述反編譯的函數(shù)信息結(jié)構(gòu)中的函數(shù)指令序列;逐一確定所述樣本集合中的黑樣本對(duì)應(yīng)的函數(shù)指令序列中包含的、且所述樣本集合中的白樣本對(duì)應(yīng)的函數(shù)指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;基于所述片段集合中包含的指令序列片段,確定至少一個(gè)最優(yōu)指令序列片段。優(yōu)選地,基于所述片段集合中包含的指令序列片段,確定至少一個(gè)最優(yōu)指令序列片段,包括:將所述片段集合中包含的指令序列片段按照出現(xiàn)次數(shù)從大到小進(jìn)行排序,并將排序靠前的至少一個(gè)指令序列片段確定為最優(yōu)指令序列片段;或,若所述片段集合中包含的指令序列片段的出現(xiàn)次數(shù)超過預(yù)設(shè)閾值,則將該指令序列片段確定為最優(yōu)指令序列片段。優(yōu)選地,逐一確定所述樣本集合中的黑樣本對(duì)應(yīng)的函數(shù)指令序列中包含的、且所述樣本集合中的白樣本對(duì)應(yīng)的函數(shù)指令序列中未包含的指令序列片段之后,還包括:判斷所述指令序列片段包含的字符數(shù)是否超過預(yù)設(shè)值,若是,則將其歸入片段集合中。優(yōu)選地,判斷所述指令序列片段包含的字符數(shù)是否超過預(yù)設(shè)值之前,還包括:確定所述預(yù)設(shè)值與所述函數(shù)指令序列的字符總數(shù)正相關(guān)。一種提取樣本代碼特征的方法,包括:獲取樣本集合中包含的黑樣本、白樣本的虛擬機(jī)執(zhí)行文件;對(duì)黑、白樣本對(duì)應(yīng)的所述虛擬機(jī)執(zhí)行文件進(jìn)行反編譯,得到反編譯的函數(shù) 信息結(jié)構(gòu);提取所述反編譯的函數(shù)信息結(jié)構(gòu)中的助記符序列;逐一確定所述樣本集合中的黑樣本對(duì)應(yīng)的助記符序列中包含的、且所述樣本集合中的白樣本對(duì)應(yīng)的助記符序列中未包含的助記符序列片段,得到包含上述助記符序列片段的片段集合;基于所述片段集合中包含的助記符序列片段,確定至少一個(gè)最優(yōu)助記符序列片段。一種提取樣本代碼特征的裝置,包括:獲取單元,用于獲取樣本集合中包含的黑樣本、白樣本的虛擬機(jī)執(zhí)行文件;反編譯單元,用于對(duì)黑、白樣本對(duì)應(yīng)的所述虛擬機(jī)執(zhí)行文件進(jìn)行反編譯,得到反編譯的函數(shù)信息結(jié)構(gòu);提取單元,用于提取所述反編譯的函數(shù)信息結(jié)構(gòu)中的函數(shù)指令序列;片段集合確定單元,用于逐一確定所述樣本集合中的黑樣本對(duì)應(yīng)的函數(shù)指令序列中包含的、且所述樣本集合中的白樣本對(duì)應(yīng)的函數(shù)指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;最優(yōu)指令序列確定單元,用于基于所述片段集合中包含的指令序列片段,確定至少一個(gè)最優(yōu)指令序列片段。優(yōu)選地,所述最優(yōu)指令序列確定單元用于:將所述片段集合中包含的指令序列片段按照出現(xiàn)次數(shù)從大到小進(jìn)行排序,并將排序靠前的至少一個(gè)指令序列片段確定為最優(yōu)指令序列片段;或,若所述片段集合中包含的指令序列片段的出現(xiàn)次數(shù)超過預(yù)設(shè)閾值,則將該指令序列片段確定為最優(yōu)指令序列片段。優(yōu)選地,所述裝置還包括:判斷單元,用于判斷所述指令序列片段包含的字符數(shù)是否超過預(yù)設(shè)值,若是,則將其歸入片段集合中。優(yōu)選地,所述裝置還包括:預(yù)設(shè)值確定單元,用于在判斷所述指令序列片段包含的字符數(shù)是否超過預(yù)設(shè)值之前,確定所述預(yù)設(shè)值與所述函數(shù)指令序列的字符總數(shù)正相關(guān)。一種提取樣本代碼特征的裝置,包括:獲取單元,用于獲取樣本集合中包含的黑樣本、白樣本的虛擬機(jī)執(zhí)行文件;反編譯單元,用于對(duì)黑、白樣本對(duì)應(yīng)的所述虛擬機(jī)執(zhí)行文件進(jìn)行反編譯,得到反編譯的函數(shù)信息結(jié)構(gòu);提取單元,用于提取所述反編譯的函數(shù)信息結(jié)構(gòu)中的助記符序列;片段集合確定單元,用于逐一確定所述樣本集合中的黑樣本對(duì)應(yīng)的助記符序列中包含的、且所述樣本集合中的白樣本對(duì)應(yīng)的助記符序列中未包含的助記符序列片段,得到包含上述助記符序列片段的片段集合;最優(yōu)指令序列確定單元,用于基于所述片段集合中包含的助記符序列片段,確定至少一個(gè)最優(yōu)助記符序列片段。本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:本申請(qǐng)實(shí)施例通過基于樣本集合中包含的黑樣本、白樣本進(jìn)行反編譯和分析,最終提取得到黑樣本包含的、且白樣本未包含的至少一個(gè)最優(yōu)指令序列片段(或最優(yōu)助記符序列片段),由于上述至少一個(gè)最優(yōu)指令序列片段是黑樣本普遍獨(dú)有的特征(即病毒特征),從而可以利用該最優(yōu)指令序列片段進(jìn)行病毒代碼的查殺。在上述過程中,相較于現(xiàn)有的通過人工分析黑、白樣本的方式得到病毒特征的技術(shù),其最終提取得到的最優(yōu)指令序列片段(即病毒特征)準(zhǔn)確性更高并且數(shù)量更多,這樣,使得最終建立病毒庫包含的病毒特征更加完善,進(jìn)而提升殺毒應(yīng)用的殺毒效果。附圖說明此處所說明的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不 當(dāng)限定。在附圖中:圖1為本申請(qǐng)一實(shí)施例中提供的提取樣本代碼特征的方法的流程圖;圖2為本申請(qǐng)實(shí)施例中對(duì)dex文件進(jìn)行反編譯得到的函數(shù)信息結(jié)構(gòu)的示例;圖3為本申請(qǐng)另一實(shí)施例中提供的提取樣本代碼特征的方法的流程圖;圖4為本申請(qǐng)一實(shí)施例中提供的提取樣本代碼特征的裝置的模塊圖。具體實(shí)施方式為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。以安卓(Android)操作系統(tǒng)為例,包括應(yīng)用程序?qū)?app層)和系統(tǒng)框架層(framework層),至于從功能劃分上有可能包括的其他層本申請(qǐng)則不作討論。其中,通常app層可以理解為上層,負(fù)責(zé)與用戶交互的界面,例如應(yīng)用程序維護(hù)、以及點(diǎn)擊頁面時(shí)識(shí)別不同種類的點(diǎn)擊內(nèi)容從而顯示不同的上下文菜單等。通常framework層作為中間層,這一層的主要職責(zé)是,將app層獲得的用戶請(qǐng)求,如啟動(dòng)用用程序、點(diǎn)擊鏈接、點(diǎn)擊保存圖片之類,轉(zhuǎn)發(fā)往下層去;將下層處理好的內(nèi)容,或者通過消息,或者通過中間代理類,來分發(fā)至上層,對(duì)用戶展現(xiàn)出來。Dalvik是用于Android平臺(tái)的Java虛擬機(jī)。Dalvik經(jīng)過優(yōu)化,允許在有限的內(nèi)存中同時(shí)運(yùn)行多個(gè)虛擬機(jī)的實(shí)例,并且每一個(gè)Dalvik應(yīng)用作為一個(gè)獨(dú)立的Linux進(jìn)程執(zhí)行。獨(dú)立的進(jìn)程可以防止在虛擬機(jī)崩潰的時(shí)候所有程序都被關(guān)閉。Dalvik虛擬機(jī)可以支持已轉(zhuǎn)換為dex(DalvikExecutable)格式的Java應(yīng)用程序的運(yùn)行,dex格式是專為Dalvik設(shè)計(jì)的一種壓縮格式,適合內(nèi)存和處理器速 度有限的系統(tǒng)??梢姡贏ndroid系統(tǒng)中,dex文件是可以直接在Dalvik虛擬機(jī)(DalvikVM)中加載運(yùn)行的虛擬機(jī)執(zhí)行文件。通過ADT(AndroidDevelopmentTools),經(jīng)過復(fù)雜的編譯,可以把java源代碼轉(zhuǎn)換為dex文件。dex文件是針對(duì)嵌入式系統(tǒng)優(yōu)化的結(jié)果,Dalvik虛擬機(jī)的指令碼并不是標(biāo)準(zhǔn)的Java虛擬機(jī)指令碼,而是使用了自己獨(dú)有的一套指令集。dex文件中共用了很多類名稱、常量字符串,使它的體積比較小,運(yùn)行效率也比較高。以下結(jié)合附圖,詳細(xì)說明本申請(qǐng)各實(shí)施例提供的技術(shù)方案。圖1為本申請(qǐng)一實(shí)施例中提供的提取樣本代碼特征的方法的流程,包括:S101:獲取樣本集合中包含的黑樣本、白樣本的虛擬機(jī)執(zhí)行文件。在數(shù)據(jù)庫中存儲(chǔ)有多個(gè)代碼的樣本,由這些樣本組成樣本集合。并且,根據(jù)各個(gè)代碼樣本的性質(zhì),可以為每個(gè)代碼樣本貼上黑樣本和白樣本的標(biāo)簽。其中,黑樣本表明該代碼樣本屬于病毒代碼(或惡意代碼),白樣本表明該代碼樣本屬于非病毒代碼(或非惡意代碼)。病毒代碼(Viruscode)是指通過存儲(chǔ)介質(zhì)或網(wǎng)絡(luò)進(jìn)行傳播,在未經(jīng)授權(quán)認(rèn)證的情況下破壞操作系統(tǒng)完整性、竊取系統(tǒng)中未公開秘密信息的程序或代碼。以手機(jī)為例,手機(jī)惡意代碼是指針對(duì)手機(jī)、PDA等手持設(shè)備的惡意代碼。手機(jī)惡意代碼可以簡單地劃分為復(fù)制型惡意代碼和非復(fù)制型惡意代碼。其中復(fù)制型惡意代碼主要包括病毒(Virus)、蠕蟲(Worm),非復(fù)制型惡意代碼主要包括特洛伊木馬后門程序(TrojanHorse)、流氓軟件(RogueSoftware)、惡意移動(dòng)代碼(MaliciousMobileCode)以及Rootkit程序等。值得一提的是,上述樣本集合中包含的樣本可以隨著業(yè)務(wù)發(fā)展,不斷地進(jìn)行添加和更新。上述虛擬機(jī)執(zhí)行文件例如是dex文件。如前所述,Android操作系統(tǒng)包括應(yīng)用程序?qū)?app層)和系統(tǒng)框架層(framework層),本申請(qǐng)重點(diǎn)在于對(duì)app層的研究和改進(jìn)。但是,本領(lǐng)域技術(shù)人員理解,當(dāng)Android啟動(dòng)時(shí),DalvikVM監(jiān)視所有的程序(APK文件)和框架,并且為它們創(chuàng)建一個(gè)依存關(guān)系樹。 DalvikVM通過這個(gè)依存關(guān)系樹來為每個(gè)程序優(yōu)化代碼并存儲(chǔ)在Dalvik緩存(dalvik-cache)中。這樣,所有程序在運(yùn)行時(shí)都會(huì)使用優(yōu)化過的代碼。當(dāng)一個(gè)程序(或者框架庫)發(fā)生變更,DalvikVM將會(huì)重新優(yōu)化代碼并且再次將其存在緩存中。在cache/dalvik-cache是存放system上的程序生成的dex文件,而data/dalvik-cache則是存放data/app生成的dex文件。也就是,本申請(qǐng)重點(diǎn)在于對(duì)data/app生成的dex文件進(jìn)行的分析和處理,但是應(yīng)該理解,對(duì)于system上的程序生成的dex文件,本申請(qǐng)的理論和操作同樣適用。關(guān)于獲取dex文件的方式,可以通過解析APK(AndroidPackage,Android安裝包)獲得。APK文件其實(shí)是zip格式的一個(gè)壓縮包,但后綴名被修改為apk,通過UnZip解壓后,就可以得到Dex文件。S102:對(duì)黑、白樣本對(duì)應(yīng)的所述虛擬機(jī)執(zhí)行文件進(jìn)行反編譯,得到反編譯的函數(shù)信息結(jié)構(gòu)。對(duì)dex文件進(jìn)行反編譯(或稱為:反匯編)有多種方式,這里示例性地給出兩種方式,本領(lǐng)域技術(shù)人員可以在此基礎(chǔ)上擴(kuò)展出其他方式,這些方式均在本申請(qǐng)的保護(hù)范圍之內(nèi):第一種方式:根據(jù)dex文件格式對(duì)dex文件進(jìn)行解析,得到每個(gè)類的函數(shù)信息結(jié)構(gòu)體;根據(jù)函數(shù)信息結(jié)構(gòu)體中的字段,確定dex文件的函數(shù)的位置及大小,得到反編譯的函數(shù)信息結(jié)構(gòu)。其中,通過解析函數(shù)信息結(jié)構(gòu)體,得到指示dex文件的函數(shù)位置的字節(jié)碼數(shù)組字段以及指示dex文件的函數(shù)大小的列表長度字段,從而確定dex文件的函數(shù)的位置及大小。第二種方式:利用dex文件反編譯工具,將dex文件反編譯為虛擬機(jī)字節(jié)碼。如前介紹的,Dalvik虛擬機(jī)運(yùn)行的是Dalvik字節(jié)碼,其以一個(gè)dex(DalvikExecutable)可執(zhí)行文件形式存在,Dalvik虛擬機(jī)通過解釋dex文件來執(zhí)行代碼。目前有一些工具,可將DEX文件反匯編成Dalvik匯編代碼。這類dex文件反編譯工具包括:baksmali、Dedexer1.26、dexdump、dexinspecto03-12-12r、 IDAPro、androguard、dex2jar、010Editor等。可見,通過對(duì)dex文件的反編譯,可以得到反編譯的所有函數(shù)信息結(jié)構(gòu)。其中,函數(shù)信息結(jié)構(gòu)包含函數(shù)執(zhí)行代碼,本申請(qǐng)實(shí)施例中,是由虛擬機(jī)指令序列和虛擬機(jī)助記符序列構(gòu)成的,如下面的例子,由DalvikVM的指令序列和DalvikVM的助記符序列構(gòu)成函數(shù)信息結(jié)構(gòu)。例如,圖2所示的是本申請(qǐng)實(shí)施例中對(duì)dex文件進(jìn)行反編譯得到的函數(shù)信息結(jié)構(gòu)的示例??梢?,dex文件被反編譯成DalvikVM的指令序列和DalvikVM的助記符序列。S103:解析所述反編譯的函數(shù)信息結(jié)構(gòu),提取所述反編譯的函數(shù)信息結(jié)構(gòu)中的函數(shù)指令序列。如上圖2的例子,在反編譯得到的函數(shù)信息結(jié)構(gòu)中,機(jī)器碼字段中的每一行的前2個(gè)數(shù)字是指令序列(上例子左側(cè)被圈部分),而指令序列對(duì)應(yīng)的部分為助記符(上例子右側(cè),部分被圈,未全部選擇)。助記符主要是為了方便用戶交流和代碼編寫。如上例子,dex文件經(jīng)過反編譯就可以得到函數(shù)的指令序列為:“125438710c6e0c6e0a3854546e0c6e546e0c6e0c38720a391238546e54710e012854136e”。助記符序列為:“const/4iget-objectif-eqzinvoke-staticmove-result-objectinvoke-virtualmove-result-objectinvoke-virtualmove-resultif-eqziget-objectiget-objectinvoke-virtualmove-result-objectinvoke-virtualiget-objectinvoke-virtualmove-result-objectinvoke-virtualmove-result-objectif-eqzinvoke-interfacemove-resultif-nezconst/4if-eqziget-objectinvoke-virtualiget-objectinvoke-staticreturn-voidmovegotoiget-objectconst/16invoke-virtual”。至此,可以得到上述樣本集合中每個(gè)樣本對(duì)應(yīng)的函數(shù)指令序列。S104:逐一確定所述樣本集合中的黑樣本對(duì)應(yīng)的函數(shù)指令序列中包含的、且所述樣本集合中的白樣本對(duì)應(yīng)的函數(shù)指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合?;诘玫降拿總€(gè)樣本對(duì)應(yīng)的函數(shù)指令序列,對(duì)應(yīng)任意一個(gè)白樣本和任意一個(gè)黑樣本,可以確定到該黑樣本的函數(shù)指令序列中包含的、但該白樣本的函數(shù)指令序列中未包含的指令序列片段。舉例而言,假設(shè)某白樣本的函數(shù)指令序列是:“125438710c6e0c6e0a3854546e0c6e546e0c6e0c38720a391238546e54710e012854136e”;某黑樣本的函數(shù)指令序列是:“125438710c6e0c6e0a3854546e0c6e307e5a590c38720a391238546e54710e012854136e”,從而可以確定上述黑樣本的函數(shù)指令序列包含的、但上述白樣本的函數(shù)指令序列未包含的指令序列片段為:“307e5a59”。通過上述方法可以依次找到任意一個(gè)黑樣本的函數(shù)指令序列中包含的、但任意一個(gè)白樣本的函數(shù)指令序列中沒有包含的指令序列片段(數(shù)量很多),從而得到包含上述確定的若干指令序列片段的片段集合。值得提及的是,基于任意一個(gè)黑樣本和任意一個(gè)白樣本,可以確定出一個(gè)或多個(gè)上述指令序列片段,但是在實(shí)際應(yīng)用過程中,若上述確定的序列片段若字符數(shù)(長度)太短,可能屬于非常常見的現(xiàn)象。為此,上述步驟S104之后,還包括:判斷所述指令序列片段包含的字符數(shù)是否超過預(yù)設(shè)值,若是,則將其歸入片段集合中。舉例來說,若上述預(yù)設(shè)值可以為6,則指令序列片段“307e5a59”符合要求,指令序列片段“307e”不符合要求。本申請(qǐng)實(shí)施例中,判斷所述指令序列片段包含的字符數(shù)是否超過預(yù)設(shè)值之前,上述方法還包括:確定所述預(yù)設(shè)值與所述函數(shù)指令序列的字符總數(shù)正相關(guān)。也就是,說上述預(yù)設(shè)值可以根據(jù)函數(shù)指令序列的字符總數(shù)來確定,字符總數(shù)越大,則該預(yù)設(shè)值可以相應(yīng)的增大。舉例來說,若確定的函數(shù)指令序列的字符總數(shù)是72,則可以設(shè)定預(yù)設(shè)值是72*0.1=7.2;若確定的函數(shù)指令序列的字符總數(shù)是100,則可以設(shè)定預(yù)設(shè)值是100*0.1=10。S105:基于上述片段集合中包含的指令序列片段,確定至少一個(gè)最優(yōu)指令序列片段。本申請(qǐng)一實(shí)施例中,上述步驟S105可以具體包括:將所述片段集合中包含的指令序列片段按照出現(xiàn)次數(shù)從大到小進(jìn)行排序,并將排序靠前的至少一個(gè)指令序列片段確定為最優(yōu)指令序列片段。舉例而言,通過統(tǒng)計(jì)上述片段集合中各個(gè)指令序列片段的出現(xiàn)次數(shù)(一般出現(xiàn)次數(shù)越多的指令序列片段,越有可能屬于病毒代碼所獨(dú)有的特征),并按照出現(xiàn)次數(shù)進(jìn)行從大到小的排序,可以最終將最終排序靠前的(比如前10位)的指令序列片段確定為最優(yōu)指令序列片段(病毒代碼獨(dú)有的指令序列片段)。例如:通過排序發(fā)現(xiàn):“38720a391238546e”的出現(xiàn)次數(shù)排名第一,可以確定為最優(yōu)指令序列片段。當(dāng)然,在本申請(qǐng)另一實(shí)施例中,上述步驟S105還可以具體包括:若所述片段集合中包含的指令序列片段的出現(xiàn)次數(shù)超過預(yù)設(shè)閾值,則將該指令序列片段確定為最優(yōu)指令序列片段。例如,上述預(yù)設(shè)閾值是100次,若某個(gè)指令序列片段出現(xiàn)次數(shù)超過100次,則將其確定為最優(yōu)指令序列片段。圖3為本申請(qǐng)另一實(shí)施例中提供的提取樣本代碼特征的方法的流程圖,在本申請(qǐng)?zhí)娲膶?shí)施例中,上述提取的函數(shù)指令序列可以被助記符序列替代,同樣可以實(shí)現(xiàn)本申請(qǐng)的技術(shù)方案。則,上述提取樣本代碼特征的方法包括如下步驟:S201:獲取樣本集合中包含的黑樣本、白樣本的虛擬機(jī)執(zhí)行文件;S202:對(duì)黑、白樣本對(duì)應(yīng)的所述虛擬機(jī)執(zhí)行文件進(jìn)行反編譯,得到反編譯的函數(shù)信息結(jié)構(gòu);S203:提取所述反編譯的函數(shù)信息結(jié)構(gòu)中的助記符序列;S204:逐一確定所述樣本集合中的黑樣本對(duì)應(yīng)的助記符序列中包含的、且所述樣本集合中的白樣本對(duì)應(yīng)的助記符序列中未包含的助記符序列片段,得到包含上述助記符序列片段的片段集合;S205:基于所述片段集合中包含的助記符序列片段,確定至少一個(gè)最優(yōu)助記符序列片段。本申請(qǐng)實(shí)施例的方法通過基于樣本集合中包含的黑樣本、白樣本進(jìn)行反編 譯和分析,最終提取得到黑樣本包含的、且白樣本未包含的至少一個(gè)最優(yōu)指令序列片段(或最優(yōu)助記符序列片段),由于上述至少一個(gè)最優(yōu)指令序列片段是黑樣本普遍獨(dú)有的特征(即病毒特征),從而可以利用該最優(yōu)指令序列片段進(jìn)行病毒代碼的查殺。在上述過程中,相較于現(xiàn)有的通過人工分析黑、白樣本的方式得到病毒特征的技術(shù),其最終提取得到的最優(yōu)指令序列片段(即病毒特征)準(zhǔn)確性更高并且數(shù)量更多,這樣,使得最終建立的病毒特征庫更加完善,進(jìn)而提升殺毒應(yīng)用的殺毒效果。圖4為本申請(qǐng)一實(shí)施例中提供的提取樣本代碼特征的裝置的模塊圖?;谏鲜龇椒ǖ膬?nèi)容,該判斷病毒代碼的裝置,包括:獲取單元401,用于獲取樣本集合中包含的黑樣本、白樣本的虛擬機(jī)執(zhí)行文件;反編譯單元402,用于對(duì)黑、白樣本對(duì)應(yīng)的所述虛擬機(jī)執(zhí)行文件進(jìn)行反編譯,得到反編譯的函數(shù)信息結(jié)構(gòu);提取單元403,用于提取所述反編譯的函數(shù)信息結(jié)構(gòu)中的函數(shù)指令序列;片段集合確定單元404,用于逐一確定所述樣本集合中的黑樣本對(duì)應(yīng)的函數(shù)指令序列中包含的、且所述樣本集合中的白樣本對(duì)應(yīng)的函數(shù)指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;最優(yōu)指令序列確定單元405,用于基于所述片段集合中包含的指令序列片段,確定至少一個(gè)最優(yōu)指令序列片段??梢酝ㄟ^多種方式來確定上述至少一個(gè)最優(yōu)指令序列片段,本申請(qǐng)實(shí)施例中列舉兩種方式。具體地,所述最優(yōu)指令序列確定單元405用于:將所述片段集合中包含的指令序列片段按照出現(xiàn)次數(shù)從大到小進(jìn)行排序,并將排序靠前的至少一個(gè)指令序列片段確定為最優(yōu)指令序列片段;或,若所述片段集合中包含的指令序列片段的出現(xiàn)次數(shù)超過預(yù)設(shè)閾值,則將該指令序列片段確定為最優(yōu)指令序列片段。本申請(qǐng)實(shí)施例中,所述裝置還包括:判斷單元,用于判斷所述指令序列片段包含的字符數(shù)是否超過預(yù)設(shè)值,若是,則將其歸入片段集合中。通過該判斷單元,可以將符合要求的指令序列片段歸入到片段集合中,而將不符合要求的指令序列片段進(jìn)行剔除。舉例來說,若上述預(yù)設(shè)值可以為6,則指令序列片段“307e5a59”符合要求,指令序列片段“307e”不符合要求。本申請(qǐng)實(shí)施例中,所述裝置還包括:預(yù)設(shè)值確定單元,用于在判斷所述指令序列片段包含的字符數(shù)是否超過預(yù)設(shè)值之前,確定所述預(yù)設(shè)值與所述函數(shù)指令序列的字符總數(shù)正相關(guān)。本申請(qǐng)實(shí)施例的裝置通過基于樣本集合中包含的黑樣本、白樣本進(jìn)行反編譯和分析,最終提取得到黑樣本包含的、且白樣本未包含的至少一個(gè)最優(yōu)指令序列片段(或最優(yōu)助記符序列片段),由于上述至少一個(gè)最優(yōu)指令序列片段是黑樣本普遍獨(dú)有的特征(即病毒特征),從而可以利用該最優(yōu)指令序列片段進(jìn)行病毒代碼的查殺。在上述過程中,相較于現(xiàn)有的通過人工分析黑、白樣本的方式得到病毒特征的技術(shù),其最終提取得到的最優(yōu)指令序列片段(即病毒特征)準(zhǔn)確性更高并且數(shù)量更多,這樣,使得最終建立的病毒特征庫更加完善,進(jìn)而提升殺毒應(yīng)用的殺毒效果。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入 式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flashRAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3