本發(fā)明涉及數(shù)據(jù)安全技術(shù)領(lǐng)域,特別是涉及一種病毒查殺的方法及裝置。
背景技術(shù):
flash是交互式矢量圖和web動畫的標(biāo)準(zhǔn),人們可以使用flash制作出各式各樣的、具有奇特效果的動畫作品,并將其應(yīng)用于網(wǎng)頁或者office(如word)當(dāng)中。因此,使用flash制作頁面的設(shè)計者越來越多。
但也因為flash的普及,使得越來越多的黑客利用flash軟件現(xiàn)存的漏洞在其中插入破壞計算機功能或者毀壞數(shù)據(jù)的病毒,從而使得用戶利益受損。因此,如何對flash病毒進行查殺是亟待解決的。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明提供的病毒查殺的方法及裝置,能夠?qū)g覽器、office等應(yīng)用程序中的flash病毒進行查殺,從而保證應(yīng)用程序甚至整個終端設(shè)備的安全。
本發(fā)明的目的是采用以下技術(shù)方案來實現(xiàn)的:
一方面,本發(fā)明提供了一種病毒查殺的方法,所述方法包括:
為應(yīng)用程序的特定函數(shù)掛接鉤子,所述特定函數(shù)用于獲取flash文件;
利用所述鉤子截獲通過所述特定函數(shù)獲得的flash文件;
獲取對所述flash文件進行病毒掃描的掃描結(jié)果;
若所述掃描結(jié)果為所述flash文件中沒有病毒,則將所述flash文件發(fā)送給flash組件進行渲染。
可選的,所述為應(yīng)用程序的特定函數(shù)掛接鉤子包括:
當(dāng)所述應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子;
當(dāng)所述應(yīng)用程序為office時,為所述office中用于讀取flash文件的函數(shù)掛接所述鉤子;其中,所述office中嵌入有flash組件。
可選的,所述當(dāng)所述應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子包括:
當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序也為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子;
當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為office,且所述office中嵌入有用于獲取flash文件的URL時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子。
可選的,當(dāng)所述應(yīng)用程序為office時,所述利用所述鉤子截獲通過所述特定函數(shù)獲得的flash文件包括:
利用所述鉤子監(jiān)控所述office是否調(diào)用所述用于讀取flash文件的函數(shù)來讀取flash數(shù)據(jù);
當(dāng)所述用于讀取flash文件的函數(shù)讀取flash數(shù)據(jù)時,將讀取的flash數(shù)據(jù)進行緩存,直至調(diào)用結(jié)束獲得flash文件。
可選的,所述方法還包括:
若所述掃描結(jié)果為所述flash文件中含有病毒,則不將所述flash文件發(fā)送給所述flash組件進行渲染,并輸出數(shù)據(jù)攔截提示信息。
可選的,所述方法還包括:
若所述掃描結(jié)果為所述flash文件中含有病毒和/或可疑數(shù)據(jù),則獲取所述flash文件的URL;
根據(jù)所述flash文件的URL,記錄所述flash文件的基本屬性信息,所述基本屬性信息包括所述flash文件的URL中的參數(shù)和所述參數(shù)對應(yīng)的參數(shù)值;
將所述基本屬性信息發(fā)送給云服務(wù)器。
可選的,所述獲取所述flash文件的URL包括:
獲取當(dāng)前線程所在進程的瀏覽器的窗口句柄;
獲取所述窗口句柄對應(yīng)的網(wǎng)頁的源代碼;
從所述源代碼中獲取滿足flash地址格式的URL;
將所述滿足flash地址格式的URL確定為所述flash文件的URL。
可選的,所述獲取對所述flash文件進行病毒掃描的掃描結(jié)果包括:
獲取緩存中保存的已掃描flash文件的掃描結(jié)果,所述掃描結(jié)果包括已掃描flash文件的文件屬性信息以及確定所述flash文件中是否包括病毒和/或可疑數(shù)據(jù)的病毒確定結(jié)果,所述文件屬性信息包括文件大小、文件修改時間和文件路徑;
將待掃描flash文件的文件屬性信息與所述緩存中存儲的文件屬性信息進行匹配;
若匹配成功,則將匹配成功的文件屬性信息對應(yīng)的病毒確定結(jié)果確定為所述待掃描flash文件的掃描結(jié)果;
若匹配失敗,則將所述待掃描flash文件發(fā)送給云服務(wù)器進行病毒掃描,并接收所述云服務(wù)器反饋的掃描結(jié)果。
另一方面,本發(fā)明提供了一種病毒查殺的裝置,所述裝置包括:
掛接單元,用于為應(yīng)用程序的特定函數(shù)掛接鉤子,所述特定函數(shù)用于獲取flash文件;
截獲單元,用于利用所述掛接單元掛接的所述鉤子截獲通過所述特定函數(shù)獲得的flash文件;
獲取單元,用于獲取對所述截獲單元獲得的所述flash文件進行病毒掃描的掃描結(jié)果;
發(fā)送單元,用于當(dāng)所述獲取單元獲取的所述掃描結(jié)果為所述flash文件中沒有病毒時,將所述flash文件發(fā)送給flash組件進行渲染。
可選的,所述掛接單元包括:
第一掛接模塊,用于當(dāng)所述應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子;
第二掛接模塊,用于當(dāng)所述應(yīng)用程序為office時,為所述office中用于讀取flash文件的函數(shù)掛接所述鉤子;其中,所述office中嵌入有flash組件。
可選的,所述第一掛接模塊用于當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子;當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為office,且所述office中嵌入有用于獲取flash文件的URL時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子。
可選的,所述截獲單元用于當(dāng)所述應(yīng)用程序為office時,利用所述鉤子監(jiān)控所述office是否調(diào)用所述用于讀取flash文件的函數(shù)來讀取flash數(shù)據(jù);當(dāng)所述用于讀取flash文件的函數(shù)讀取flash數(shù)據(jù)時,將讀取的flash數(shù)據(jù)進行緩存,直至調(diào)用結(jié)束獲得flash文件。
可選的,所述裝置還包括:
攔截單元,用于當(dāng)所述掃描結(jié)果為所述flash文件中含有病毒時,不將所述flash文件發(fā)送給所述flash組件進行渲染;
輸出單元,用于輸出數(shù)據(jù)攔截提示信息。
可選的,所述獲取單元還用于當(dāng)所述掃描結(jié)果為所述flash文件中含有病毒和/或可疑數(shù)據(jù)時,獲取所述flash文件的URL;
所述裝置還包括:
記錄單元,用于根據(jù)所述獲取單元獲取的所述flash文件的URL,記錄所述flash文件的基本屬性信息,所述基本屬性信息包括所述flash文件的URL中的參數(shù)和所述參數(shù)對應(yīng)的參數(shù)值;
所述發(fā)送單元還用于將所述基本屬性信息發(fā)送給云服務(wù)器。
可選的,所述獲取單元包括:
第一獲取模塊,用于獲取當(dāng)前線程所在進程的瀏覽器的窗口句柄;
所述第一獲取模塊還用于獲取所述窗口句柄對應(yīng)的網(wǎng)頁的源代碼;
所述第一獲取模塊還用于從所述源代碼中獲取滿足flash地址格式的URL;
第一確定模塊,用于將所述第一獲取模塊獲取的所述滿足flash地址格式的URL確定為所述flash文件的URL。
可選的,所述獲取單元包括:
第二獲取模塊,用于獲取緩存中保存的已掃描flash文件的掃描結(jié)果,所述掃描結(jié)果包括已掃描flash文件的文件屬性信息以及確定所述flash文件中是否包括病毒和/或可疑數(shù)據(jù)的病毒確定結(jié)果,所述文件屬性信息包括文件大小、文件修改時間和文件路徑;
匹配模塊,用于將待掃描flash文件的文件屬性信息與所述緩存中存儲的文件屬性信息進行匹配;
第二確定模塊,用于當(dāng)匹配成功時,將匹配成功的文件屬性信息對應(yīng)的病毒確定結(jié)果確定為所述待掃描flash文件的掃描結(jié)果;
發(fā)送模塊,用于當(dāng)匹配失敗時,將所述待掃描flash文件發(fā)送給云服務(wù)器進行病毒掃描;
接收模塊,用于接收所述云服務(wù)器反饋的掃描結(jié)果。
借由上述技術(shù)方案,本發(fā)明提供的病毒查殺的方法及裝置,能夠在將flash文件發(fā)送給flash組件進行渲染之前,先通過在應(yīng)用程序(如瀏覽器或者office)的特定函數(shù)處掛接的鉤子提前截獲這些flash文件,并對這些flash文件進行病毒掃描,當(dāng)確定安全無毒時,才將flash文件發(fā)送給flash組件進行渲染,并基于瀏覽器或者office進行輸出顯示,從而保證了瀏覽器、office甚至整個終端設(shè)備的安全。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了本發(fā)明實施例提供的一種病毒查殺的方法的流程圖;
圖2示出了本發(fā)明實施例提供的另一種病毒查殺的方法的流程圖;
圖3示出了本發(fā)明實施例提供的一種病毒查殺的裝置的組成框圖;
圖4示出了本發(fā)明實施例提供的另一種病毒查殺的裝置的組成框圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
在實際應(yīng)用中,往往會通過一些方式使得用戶的終端設(shè)備本地獲取一些可執(zhí)行文件(例如后綴為.exe的文件)、flash文件等,例如該文件可能通過即時通信工具傳輸給用戶所在的終端設(shè)備,也可能通過下載或分享的方式誘導(dǎo)用戶下載到其所在的終端設(shè)備,也可能通過掛木馬或病毒傳播等非法方式傳播到用戶所在的終端設(shè)備,也可能在拷貝移動存儲設(shè)備中的文件時傳輸?shù)接脩羲诘慕K端設(shè)備。然而獲取的這些文件可能為安全的文件,也可能是危險的文件。尤其當(dāng)用戶使用瀏覽器等應(yīng)用程序進行在線支付的過程中,很可能會接收到惡意第三方傳輸過來的攜帶病毒的危險文件。因此,為了及時對病毒進行查殺,從而保證終端設(shè)備的安全,本發(fā)明實施例提供了一種病毒查殺的方法,如圖1所示,該方法主要包括:
101、為應(yīng)用程序的特定函數(shù)掛接鉤子。
其中,所述特定函數(shù)用于獲取flash文件,flash文件可以為swf(shock wave flash)格式的文件,也可以為fla等其他格式的文件,在此不做限定。在為應(yīng)用程序的特定函數(shù)掛接鉤子后,鉤子可以對該特定函產(chǎn)生的數(shù)據(jù)進行監(jiān)控,從而在將產(chǎn)生的flash文件反饋給flash組件進行渲染之前,可以先截獲這些flash文件,并執(zhí)行步驟103-104。
在實際應(yīng)用中,當(dāng)需要使用瀏覽器下載flash文件時,需要為瀏覽器掛接鉤子;當(dāng)需要使用office讀取flash文件時,需要為office掛接鉤子。
具體的,對于需要使用瀏覽器下載flash文件主要涉及以下兩種情況:
(1)當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子。
具體的,可以先為urlmon.dll的導(dǎo)出函數(shù)RegisterBindStatusCallback掛接鉤子,通過該鉤子監(jiān)控flash*.ocx是否向urlmon.dll注冊回調(diào)對象,當(dāng)檢測到flash*.ocx向urlmon.dll注冊回調(diào)對象時,再為IBindStatusCallback接口的onDataAvailable函數(shù)(即數(shù)據(jù)下載回調(diào)函數(shù))掛接鉤子,從而通過監(jiān)控onDataAvailable函數(shù),等待flash文件(如swf文件)的下載。
需要補充的是,在實際應(yīng)用中,不同版本的瀏覽器中的urlmon.dll的數(shù)據(jù)結(jié)構(gòu)可能存在差異,從而使得掛鉤的具體函數(shù)發(fā)生變化。但是,最終所掛接的函數(shù)的功能一定是用于下載flash文件的函數(shù)。
(2)當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為office,且所述office中嵌入有用于獲取flash文件的URL(Uniform Resource Locator,統(tǒng)一資源定位符)時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子。
此外,對于需要使用office讀取flash文件主要涉及以下內(nèi)容:
若是在office中嵌入flash組件的情況下,需要使用office輸出渲染后的flash文件,則為了監(jiān)控flash文件的讀取,需要為office中用于讀取flash文件的函數(shù)掛接鉤子;然后利用所述鉤子監(jiān)控所述office是否調(diào)用所述用于讀取flash文件的函數(shù);當(dāng)所述用于讀取flash文件的函數(shù)讀取flash數(shù)據(jù)時,將讀取的flash數(shù)據(jù)進行緩存,直至調(diào)用結(jié)束獲得整個flash文件。
具體的,可以先為flash*.ocx的工廠類對象的IClassFactory-GreateInstance函數(shù)掛接鉤子,以便通過該鉤子監(jiān)控flash對象的創(chuàng)建;當(dāng)有flash對象創(chuàng)建時,再為IPersistStreamInit接口的load函數(shù)掛接鉤子,以便通過該鉤子監(jiān)控load函數(shù)實現(xiàn)中,是否存在flash對象加載內(nèi)嵌的flash文件;當(dāng)flash對象加載內(nèi)嵌的flash文件時,再為IPersistStream接口的read函數(shù)掛接鉤子,以便通過該鉤子監(jiān)控read函數(shù)對flash數(shù)據(jù)的讀取。
102、利用所述鉤子截獲通過所述特定函數(shù)獲得的flash文件。
在實際應(yīng)用中,客戶端可以通過預(yù)設(shè)的進程列表對登錄過程或支付過程中的危險進程進行監(jiān)控;或者通過預(yù)設(shè)的安全的文件列表對登錄過程或支付過程中傳輸?shù)奈募M行監(jiān)控;或者對登錄過程或支付過程中的瀏覽器調(diào)用行為進行監(jiān)控;或者對登錄過程或支付過程中的鍵盤輸入內(nèi)容的調(diào)用進行監(jiān)控;或者對登錄過程或支付過程中客戶端傳輸?shù)臄?shù)據(jù)對象進行監(jiān)控,例如,當(dāng)監(jiān)控到客戶端向與登錄過程或支付過程無關(guān)的對象傳輸與登錄或支付相關(guān)的數(shù)據(jù)時,則應(yīng)當(dāng)攔截所傳輸?shù)臄?shù)據(jù)對象;或者對登錄過程或支付過程中所開啟的網(wǎng)頁進行監(jiān)控,例如,在登錄過程或支付過程中,用戶可能開啟的支付網(wǎng)頁為惡意第三方偽造的與真實支付網(wǎng)頁類似的網(wǎng)頁,因此需要對所開啟的網(wǎng)頁進行監(jiān)控。其中,在監(jiān)控可執(zhí)行文件等文件時,不僅可以監(jiān)控到文件的實時下載情況,還可以監(jiān)控文件被啟動時以及被啟動后的實時運行情況。
在為瀏覽器中的urlmon.dll的數(shù)據(jù)下載回調(diào)函數(shù)掛接鉤子后,可以通過該鉤子監(jiān)控數(shù)據(jù)下載,并通過下載文件的文件名后綴等信息來確定當(dāng)前下載的文件是否為flash文件,當(dāng)確定當(dāng)前下載的文件是flash文件時,對下載的文件截獲。
在為office中的用于讀取flash文件的函數(shù)掛接鉤子后,可以通過該鉤子監(jiān)控數(shù)據(jù)的讀取,當(dāng)確定讀取flash文件時,對讀取的flash文件進行截獲。
103、獲取對所述flash文件進行病毒掃描的掃描結(jié)果。
其中,在對病毒進行掃描時,可以利用客戶端進行本地掃描,也可以將flash文件發(fā)送給云服務(wù)器進行掃描。并且在進行掃描時,所使用的病毒掃描引擎可以為腳本掃描引擎,也可以為其他引擎。
在實際應(yīng)用中,flash文件與腳本文件類似,且flash文件中也可以包含一些腳本語句。因此,在對flash文件進行掃描時,可以使用腳本掃描引擎進行掃描,以便對flash文件的靜態(tài)特征進行分析,判斷其中是否含有病毒。
其中,腳本掃描引擎的數(shù)量可以為多個,且每個腳本掃描引擎對應(yīng)至少一個腳本類型,用于根據(jù)預(yù)設(shè)的至少一個腳本類型對應(yīng)的病毒樣本特征來檢測屬于該至少一個腳本類型的待檢測腳本中是否攜帶病毒。
通常情況下,腳本類型與腳本掃描引擎是一一對應(yīng)的關(guān)系,即:一個類型的腳本對應(yīng)一個腳本掃描引擎。例如,JS(JavaScript,爪哇腳本)類型的腳本對應(yīng)JS腳本掃描引擎,VBS(Microsoft Visual Basic Script Editon,微軟公司可視化BASIC腳本版)類型的腳本對應(yīng)VBS腳本掃描引擎,HTML(HyperText Markup Language,超文本標(biāo)記語言)類型的腳本對應(yīng)HTML腳本掃描引擎等。其中,flash文件與JS類型的腳本類似,因此可以使用JS腳本掃描引擎來掃描flash文件。
104、若所述掃描結(jié)果為所述flash文件中沒有病毒,則將所述flash文件發(fā)送給flash組件進行渲染。
當(dāng)確定flash文件中沒有病毒時,可以確定該flash文件是安全文件,從而可以將flash文件發(fā)送給flash組件進行渲染,并在瀏覽器或者office中進行輸出顯示;當(dāng)確定flash文件中含有病毒時,為了避免瀏覽器、office甚至整個終端設(shè)備造成危害,可以直接攔截該flash文件,而不將其發(fā)送給flash組件進行渲染,并輸出數(shù)據(jù)攔截提示信息,提示用戶數(shù)據(jù)已被攔截,無法顯示。
需要說明的是,本發(fā)明實施例既可以應(yīng)用于開源的瀏覽器中,又可以用于非開源的瀏覽器中,對于實現(xiàn)該技術(shù)方案的開發(fā)者來說,其所面對的瀏覽器的權(quán)限不受限定。
本發(fā)明實施例提供的病毒查殺的方法,能夠在將flash文件發(fā)送給flash組件進行渲染之前,先通過在應(yīng)用程序(如瀏覽器或者office)的特定函數(shù)處掛接的鉤子提前截獲這些flash文件,并利用flash掃描引擎對這些flash文件進行病毒掃描,當(dāng)確定安全無毒時,才將flash文件發(fā)送給flash組件進行渲染,并基于瀏覽器或者office進行輸出顯示,從而保證了瀏覽器、office甚至整個終端設(shè)備的安全。
進一步的,依據(jù)圖1所示的實施例,本發(fā)明的另一個實施例還提供了一種病毒查殺的方法,如圖2所示,該方法主要包括:
201、為應(yīng)用程序的特定函數(shù)掛接鉤子。
該步驟中相關(guān)的介紹請參考圖1對應(yīng)的步驟101中的相關(guān)描述,本步驟不再贅述。
202、利用所述鉤子截獲通過所述特定函數(shù)獲得的flash文件。
該步驟中相關(guān)的介紹請參考圖1對應(yīng)的步驟102中的相關(guān)描述,本步驟不再贅述。
203、獲取對所述flash文件進行病毒掃描的掃描結(jié)果。
在上述步驟103中提及,在對flash進行病毒掃描時,可以由客戶端掃描,也可以將flash文件發(fā)送給云服務(wù)器掃描。在實際應(yīng)用中,關(guān)于客戶端和云服務(wù)器掃描的策略可以有多種:
策略一:在獲得flash文件后,先判斷所述flash文件的大小是否小于或者等于預(yù)設(shè)閾值;若所述flash文件的大小小于或者等于所述預(yù)設(shè)閾值,則對所述flash文件進行病毒掃描;若所述flash文件的大小大于所述預(yù)設(shè)閾值,則將所述flash文件發(fā)送給云服務(wù)器進行掃描,以獲得所述云服務(wù)器對所述flash文件的掃描結(jié)果。其中,預(yù)設(shè)閾值為根據(jù)實際經(jīng)驗獲得的經(jīng)驗值,例如可以為300KB。
當(dāng)flash文件的數(shù)據(jù)量較大時,通過將flash文件發(fā)送給云服務(wù)器進行掃描,不僅可以減輕終端設(shè)備的壓力,還可以在云服務(wù)器掃描完成后,若確定含有病毒,則可以直接對病毒的基本屬性信息進行記錄,并及時對網(wǎng)絡(luò)中的其他終端進行病毒掃描。
策略二:由于在實際應(yīng)用中,預(yù)設(shè)時間段內(nèi)往往會下載相同的flash文件,所以為了提高掃描效率,可以采用如下方案:
獲取緩存中保存的已掃描flash文件的掃描結(jié)果,所述掃描結(jié)果包括已掃描flash文件的文件屬性信息以及確定所述flash文件中是否包括病毒和/或可疑數(shù)據(jù)的病毒確定結(jié)果,所述文件屬性信息包括文件大小、文件修改時間和文件路徑;將待掃描flash文件的文件屬性信息與所述緩存中存儲的文件屬性信息進行匹配;若匹配成功,則將匹配成功的文件屬性信息對應(yīng)的病毒確定結(jié)果確定為所述待掃描flash文件的掃描結(jié)果;若匹配失敗,則將所述待掃描flash文件發(fā)送給云服務(wù)器進行病毒掃描,并接收所述云服務(wù)器反饋的掃描結(jié)果。
其中,匹配成功是指待掃描flash文件的文件屬性信息與緩存中的文件屬性信息完全相同,如文件大小、文件修改時間和文件路徑都相同。
204、若所述掃描結(jié)果為所述flash文件中沒有病毒,則將所述flash文件發(fā)送給flash組件進行渲染;若所述掃描結(jié)果為所述flash文件中含有病毒,則不將所述flash文件發(fā)送給所述flash組件進行渲染,并輸出數(shù)據(jù)攔截提示信息。
該步驟中相關(guān)的介紹請參考圖1對應(yīng)的步驟104中的相關(guān)描述,本步驟不再贅述。
205、若所述掃描結(jié)果為所述flash文件中含有病毒和/或可疑數(shù)據(jù),則獲取所述flash文件的URL。
在確定flash文件中含有病毒和/或可疑數(shù)據(jù)后,為了防止其他終端受病毒侵害以及為了進一步確定可疑數(shù)據(jù)是否為病毒,可以將flash文件的基本屬性信息發(fā)送給云服務(wù)器,以便云服務(wù)器根據(jù)基本屬性信息對其他終端中的病毒進行查殺,以及繼續(xù)根據(jù)基本屬性信息對flash文件的URL進行掃描,以便確定該URL是否為惡意URL,從而可疑數(shù)據(jù)進行二次鑒定。其中,flash文件的基本屬性信息包括flash文件的URL中的參數(shù)和所述參數(shù)對應(yīng)的參數(shù)值。例如涉及的參數(shù)主要包括:操作系統(tǒng)版本、應(yīng)用名稱、flash版本、flash類型、flash的MD5(Message Digest Algorithm 5,信息摘要算法5)以及病毒名稱等。
在獲取flash文件的基本屬性信息的過程中,需要先獲取flash文件的URL,然后根據(jù)該URL獲取flash文件的基本屬性信息。其中,獲取flash文件的URL的具體實現(xiàn)方式可以分為以下幾種:
(a)若基于瀏覽器輸出顯示渲染后的flash文件,則需要先獲取當(dāng)前線程所在進程的瀏覽器的窗口句柄;然后獲取所述窗口句柄對應(yīng)的網(wǎng)頁的源代碼;并從所述源代碼中獲取滿足flash地址格式的URL;最后將所述滿足flash地址格式的URL確定為所述flash文件的URL。
其中,flash地址格式為:(1)URL以flash文件的后綴為結(jié)尾,例如以.swf為結(jié)尾;或者(2)本地保存的文件的文件名以flash文件的后綴為結(jié)尾,例如含有.swf為后綴的文件名。
(b)若是在office中嵌入用于獲取flash文件的URL的情況下,基于office輸出渲染后的flash文件,則可以直接將office中嵌入的URL確定為flash文件的URL。
(c)若是在office中嵌入flash組件的情況下,基于office輸出渲染后的flash文件,則可以將讀取flash文件的本地路徑確定為flash文件的URL。
206、根據(jù)所述flash文件的URL,記錄所述flash文件的基本屬性信息。
在獲取flash文件的URL后,可以對該URL進行分析,從中獲取各個參數(shù)以及對應(yīng)的參數(shù)值,并進行記錄。
207、將所述基本屬性信息發(fā)送給云服務(wù)器。
在確定flash文件的基本屬性信息后,可以將該基本屬性信息發(fā)送給云服務(wù)器;云服務(wù)器接收到這些信息后,能夠根據(jù)基本屬性信息進一步對可疑數(shù)據(jù)進行分析,以確定其是否為病毒,還可以基于該基本屬性信息為網(wǎng)絡(luò)中的其他終端查殺病毒,從而保證全網(wǎng)的安全。
需要補充的是,當(dāng)flash文件中只有可疑數(shù)據(jù),而沒有病毒時,若將flash文件的基本屬性信息發(fā)送給云服務(wù)器進行二次鑒定,則當(dāng)云服務(wù)器根據(jù)該基本屬性信息確定該flash文件的URL為安全網(wǎng)址時,可以向客戶端發(fā)送數(shù)據(jù)安全指示;當(dāng)云服務(wù)器根據(jù)基本屬性信息確定該flash文件的URL為惡意URL(也就是說,可疑數(shù)據(jù)為病毒)時,可以向客戶端發(fā)送數(shù)據(jù)危險指示以及病毒查殺指示。
此外,云服務(wù)器端可以預(yù)先保存文件特征值和安全等級信息的對應(yīng)關(guān)系。其中,云服務(wù)器端確定的安全等級信息可以自定義,例如可以采用“安全、未知、可疑、高度可疑、惡意”的等級劃分方式進行劃分,也可以采用“一級、二級、三級、四級”的等級劃分方式進行劃分,其具體劃分方式不限定。
示例性的,等級設(shè)置可以如下:當(dāng)文件特征值為(10,20)時,為安全等級;當(dāng)文件特征值為[20,40]時,為未知等級;當(dāng)文件特征值為(40,50)時,為可疑等級;當(dāng)文件特征值為[50,60]時,為高度可疑等級;當(dāng)文件特征值大于60時,為惡意等級。
本發(fā)明實施例提供的病毒查殺的方法,不僅能夠保證flash組件渲染的flash文件是安全數(shù)據(jù),還能夠在確定掃描的flash文件中含有病毒或者可疑數(shù)據(jù)時,能夠記錄其基本屬性信息,并將基本屬性信息反饋給云服務(wù)器,以便云服務(wù)器根據(jù)基本屬性信息對可疑數(shù)據(jù)做進一步分析,以及根據(jù)基本屬性信息對網(wǎng)絡(luò)中的其他終端進行病毒查殺操作,保證網(wǎng)絡(luò)安全。
進一步的,依據(jù)上述方法實施例,本發(fā)明的另一個實施例還提供了一種病毒查殺的裝置,如圖3所示,所述裝置主要包括:掛接單元31、截獲單元32、獲取單元33以及發(fā)送單元34。其中,
掛接單元31,用于為應(yīng)用程序的特定函數(shù)掛接鉤子,所述特定函數(shù)用于獲取flash文件;
截獲單元32,用于利用所述掛接單元31掛接的所述鉤子截獲通過所述特定函數(shù)獲得的flash文件;
獲取單元33,用于獲取對所述截獲單元32獲得的所述flash文件進行病毒掃描的掃描結(jié)果;
發(fā)送單元34,用于當(dāng)獲取單元33獲取的所述掃描結(jié)果為所述flash文件中沒有病毒時,將所述flash文件發(fā)送給flash組件進行渲染。
進一步的,如圖4所示,所述掛接單元31包括:
第一掛接模塊311,用于當(dāng)所述應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子;
第二掛接模塊312,用于當(dāng)所述應(yīng)用程序為office時,為所述office中用于讀取flash文件的函數(shù)掛接所述鉤子;其中,所述office中嵌入有flash組件。
進一步的,所述第一掛接模塊311用于當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子;當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為office,且所述office中嵌入有用于獲取flash文件的URL時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子。
進一步的,所述截獲單元32用于當(dāng)所述應(yīng)用程序為office時,利用所述鉤子監(jiān)控所述office是否調(diào)用所述用于讀取flash文件的函數(shù)來讀取flash數(shù)據(jù);當(dāng)所述用于讀取flash文件的函數(shù)讀取flash數(shù)據(jù)時,將讀取的flash數(shù)據(jù)進行緩存,直至調(diào)用結(jié)束獲得flash文件。
進一步的,如圖4所示,所述裝置還包括:
攔截單元35,用于當(dāng)所述掃描結(jié)果為所述flash文件中含有病毒時,不將所述flash文件發(fā)送給所述flash組件進行渲染;
輸出單元36,用于輸出數(shù)據(jù)攔截提示信息。
進一步的,如圖4所示,所述獲取單元33還用于當(dāng)所述掃描結(jié)果為所述flash文件中含有病毒和/或可疑數(shù)據(jù)時,獲取所述flash文件的URL;
所述裝置還包括:
記錄單元37,用于根據(jù)所述獲取單元33獲取的所述flash文件的URL,記錄所述flash文件的基本屬性信息,所述基本屬性信息包括所述flash文件的URL中的參數(shù)和所述參數(shù)對應(yīng)的參數(shù)值;
所述發(fā)送單元34還用于將所述基本屬性信息發(fā)送給云服務(wù)器。
進一步的,如圖4所示,所述獲取單元33包括:
第一獲取模塊331,用于獲取當(dāng)前線程所在進程的瀏覽器的窗口句柄;
所述第一獲取模塊331還用于獲取所述窗口句柄對應(yīng)的網(wǎng)頁的源代碼;
所述第一獲取模塊331還用于從所述源代碼中獲取滿足flash地址格式的URL;
第一確定模塊332,用于將所述獲取模塊331獲取的所述滿足flash地址格式的URL確定為所述flash文件的URL。
進一步的,如圖4所示,所述獲取單元33包括:
第二獲取模塊333,用于獲取緩存中保存的已掃描flash文件的掃描結(jié)果,所述掃描結(jié)果包括已掃描flash文件的文件屬性信息以及確定所述flash文件中是否包括病毒和/或可疑數(shù)據(jù)的病毒確定結(jié)果,所述文件屬性信息包括文件大小、文件修改時間和文件路徑;
匹配模塊334,用于將待掃描flash文件的文件屬性信息與所述緩存中存儲的文件屬性信息進行匹配;
第二確定模塊335,用于當(dāng)匹配成功時,將匹配成功的文件屬性信息對應(yīng)的病毒確定結(jié)果確定為所述待掃描flash文件的掃描結(jié)果;
發(fā)送模塊336,用于當(dāng)匹配失敗時,將所述待掃描flash文件發(fā)送給云服務(wù)器進行病毒掃描;
接收模塊337,用于接收所述云服務(wù)器反饋的掃描結(jié)果。
本發(fā)明實施例提供的病毒查殺的裝置,能夠在將flash文件發(fā)送給flash組件進行渲染之前,先通過在應(yīng)用程序(如瀏覽器或者office)的特定函數(shù)處掛接的鉤子提前截獲這些flash文件,并利用flash掃描引擎對這些flash文件進行病毒掃描,當(dāng)確定安全無毒時,才將flash文件發(fā)送給flash組件進行渲染,并基于瀏覽器或者office進行輸出顯示,從而保證了瀏覽器、office甚至整個終端設(shè)備的安全。
本發(fā)明實施例還提供了如下方案:
A1、一種病毒查殺的方法,所述方法包括:
為應(yīng)用程序的特定函數(shù)掛接鉤子,所述特定函數(shù)用于獲取flash文件;
利用所述鉤子截獲通過所述特定函數(shù)獲得的flash文件;
獲取對所述flash文件進行病毒掃描的掃描結(jié)果;
若所述掃描結(jié)果為所述flash文件中沒有病毒,則將所述flash文件發(fā)送給flash組件進行渲染。
A2、根據(jù)A1所述的方法,所述為應(yīng)用程序的特定函數(shù)掛接鉤子包括:
當(dāng)所述應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子;
當(dāng)所述應(yīng)用程序為office時,為所述office中用于讀取flash文件的函數(shù)掛接所述鉤子;其中,所述office中嵌入有flash組件。
A3、根據(jù)A2所述的方法,所述當(dāng)所述應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子包括:
當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子;
當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為office,且所述office中嵌入有用于獲取flash文件的URL時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子。
A4、根據(jù)A2所述的方法,當(dāng)所述應(yīng)用程序為office時,所述利用所述鉤子截獲通過所述特定函數(shù)獲得的flash文件包括:
利用所述鉤子監(jiān)控所述office是否調(diào)用所述用于讀取flash文件的函數(shù)來讀取flash數(shù)據(jù);
當(dāng)所述用于讀取flash文件的函數(shù)讀取flash數(shù)據(jù)時,將讀取的flash數(shù)據(jù)進行緩存,直至調(diào)用結(jié)束獲得flash文件。
A5、根據(jù)A1所述的方法,所述方法還包括:
若所述掃描結(jié)果為所述flash文件中含有病毒,則不將所述flash文件發(fā)送給所述flash組件進行渲染,并輸出數(shù)據(jù)攔截提示信息。
A6、根據(jù)A1所述的方法,所述方法還包括:
若所述掃描結(jié)果為所述flash文件中含有病毒和/或可疑數(shù)據(jù),則獲取所述flash文件的URL;
根據(jù)所述flash文件的URL,記錄所述flash文件的基本屬性信息,所述基本屬性信息包括所述flash文件的URL中的參數(shù)和所述參數(shù)對應(yīng)的參數(shù)值;
將所述基本屬性信息發(fā)送給云服務(wù)器。
A7、根據(jù)A6所述的方法,所述獲取所述flash文件的URL包括:
獲取當(dāng)前線程所在進程的瀏覽器的窗口句柄;
獲取所述窗口句柄對應(yīng)的網(wǎng)頁的源代碼;
從所述源代碼中獲取滿足flash地址格式的URL;
將所述滿足flash地址格式的URL確定為所述flash文件的URL。
A8、根據(jù)A1至A7中任一項所述的方法,所述獲取對所述flash文件進行病毒掃描的掃描結(jié)果包括:
獲取緩存中保存的已掃描flash文件的掃描結(jié)果,所述掃描結(jié)果包括已掃描flash文件的文件屬性信息以及確定所述flash文件中是否包括病毒和/或可疑數(shù)據(jù)的病毒確定結(jié)果,所述文件屬性信息包括文件大小、文件修改時間和文件路徑;
將待掃描flash文件的文件屬性信息與所述緩存中存儲的文件屬性信息進行匹配;
若匹配成功,則將匹配成功的文件屬性信息對應(yīng)的病毒確定結(jié)果確定為所述待掃描flash文件的掃描結(jié)果;
若匹配失敗,則將所述待掃描flash文件發(fā)送給云服務(wù)器進行病毒掃描,并接收所述云服務(wù)器反饋的掃描結(jié)果。
B9、一種病毒查殺的裝置,所述裝置包括:
掛接單元,用于為應(yīng)用程序的特定函數(shù)掛接鉤子,所述特定函數(shù)用于獲取flash文件;
截獲單元,用于利用所述掛接單元掛接的所述鉤子截獲通過所述特定函數(shù)獲得的flash文件;
獲取單元,用于獲取對所述截獲單元獲得的所述flash文件進行病毒掃描的掃描結(jié)果;
發(fā)送單元,用于當(dāng)所述獲取單元獲取的所述掃描結(jié)果為所述flash文件中沒有病毒時,將所述flash文件發(fā)送給flash組件進行渲染。
B10、根據(jù)B9所述的裝置,所述掛接單元包括:
第一掛接模塊,用于當(dāng)所述應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子;
第二掛接模塊,用于當(dāng)所述應(yīng)用程序為office時,為所述office中用于讀取flash文件的函數(shù)掛接所述鉤子;其中,所述office中嵌入有flash組件。
B11、根據(jù)B10所述的裝置,所述第一掛接模塊用于當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為瀏覽器時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子;當(dāng)輸出顯示渲染后的flash文件的應(yīng)用程序為office,且所述office中嵌入有用于獲取flash文件的URL時,為所述瀏覽器中用于下載flash文件的數(shù)據(jù)下載回調(diào)函數(shù)掛接所述鉤子。
B12、根據(jù)B10所述的裝置,所述截獲單元用于當(dāng)所述應(yīng)用程序為office時,利用所述鉤子監(jiān)控所述office是否調(diào)用所述用于讀取flash文件的函數(shù)來讀取flash數(shù)據(jù);當(dāng)所述用于讀取flash文件的函數(shù)讀取flash數(shù)據(jù)時,將讀取的flash數(shù)據(jù)進行緩存,直至調(diào)用結(jié)束獲得flash文件。
B13、根據(jù)B9所述的裝置,所述裝置還包括:
攔截單元,用于當(dāng)所述掃描結(jié)果為所述flash文件中含有病毒時,不將所述flash文件發(fā)送給所述flash組件進行渲染;
輸出單元,用于輸出數(shù)據(jù)攔截提示信息。
B14、根據(jù)B9所述的裝置,所述獲取單元還用于當(dāng)所述掃描結(jié)果為所述flash文件中含有病毒和/或可疑數(shù)據(jù)時,獲取所述flash文件的URL;
所述裝置還包括:
記錄單元,用于根據(jù)所述獲取單元獲取的所述flash文件的URL,記錄所述flash文件的基本屬性信息,所述基本屬性信息包括所述flash文件的URL中的參數(shù)和所述參數(shù)對應(yīng)的參數(shù)值;
所述發(fā)送單元還用于將所述基本屬性信息發(fā)送給云服務(wù)器。
B15、根據(jù)B14所述的裝置,所述獲取單元包括:
第一獲取模塊,用于獲取當(dāng)前線程所在進程的瀏覽器的窗口句柄;
所述第一獲取模塊還用于獲取所述窗口句柄對應(yīng)的網(wǎng)頁的源代碼;
所述第一獲取模塊還用于從所述源代碼中獲取滿足flash地址格式的URL;
第一確定模塊,用于將所述第一獲取模塊獲取的所述滿足flash地址格式的URL確定為所述flash文件的URL。
B16、根據(jù)B9至B15中任一項所述的裝置,所述獲取單元包括:
第二獲取模塊,用于獲取緩存中保存的已掃描flash文件的掃描結(jié)果,所述掃描結(jié)果包括已掃描flash文件的文件屬性信息以及確定所述flash文件中是否包括病毒和/或可疑數(shù)據(jù)的病毒確定結(jié)果,所述文件屬性信息包括文件大小、文件修改時間和文件路徑;
匹配模塊,用于將待掃描flash文件的文件屬性信息與所述緩存中存儲的文件屬性信息進行匹配;
第二確定模塊,用于當(dāng)匹配成功時,將匹配成功的文件屬性信息對應(yīng)的病毒確定結(jié)果確定為所述待掃描flash文件的掃描結(jié)果;
發(fā)送模塊,用于當(dāng)匹配失敗時,將所述待掃描flash文件發(fā)送給云服務(wù)器進行病毒掃描;
接收模塊,用于接收所述云服務(wù)器反饋的掃描結(jié)果。
在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
可以理解的是,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實施例中的“第一”、“第二”等是用于區(qū)分各實施例,而并不代表各實施例的優(yōu)劣。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的病毒查殺的方法及裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。