專利名稱::一種染毒文件的處理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)安全
技術(shù)領(lǐng)域:
,具體涉及一種染毒文件的處理方法和系統(tǒng)。
背景技術(shù):
:隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,目前無(wú)論在日常生活中還是在工作中,計(jì)算機(jī)都已經(jīng)成為人們不可或缺的伙伴,為人們的工作和生活帶來(lái)了很多的便利,但是在這之中有一個(gè)不和諧的因素,那就是計(jì)算機(jī)病毒。計(jì)算機(jī)病毒是指編制或者在計(jì)算機(jī)程序中插入的破壞計(jì)算機(jī)功能或者破壞數(shù)據(jù),影響計(jì)算機(jī)使用并且能夠自我復(fù)制的一組計(jì)算機(jī)指令或者程序代碼。一旦染上病毒,計(jì)算機(jī)通常表現(xiàn)為其文件被增加、刪除、改變名稱或?qū)傩浴⒁苿?dòng)到其它目錄下,病毒對(duì)計(jì)算機(jī)文·件的這些操作,可能會(huì)導(dǎo)致正常的程序無(wú)法運(yùn)行、計(jì)算機(jī)操作系統(tǒng)崩潰、計(jì)算機(jī)被遠(yuǎn)程控制、用戶信息被盜用等一系列的問(wèn)題。為了保證計(jì)算機(jī)的安全運(yùn)行,需要對(duì)計(jì)算機(jī)中感染病毒的文件進(jìn)行病毒查殺,以防止和清除病毒的破壞?,F(xiàn)有技術(shù)中的病毒,往往通過(guò)占用文件句柄、設(shè)置文件只讀屬性、使文件處于刪除狀態(tài)等手段給染毒文件加上了加鎖,采用常規(guī)手段無(wú)法破解加鎖?,F(xiàn)有技術(shù)一種殺毒方法,枚舉操作系統(tǒng)下所有的進(jìn)程,并枚舉各進(jìn)程打開(kāi)的文件句柄,通過(guò)查看文件句柄來(lái)找到加上獨(dú)占鎖的染毒文件;該方法能夠查殺出加上獨(dú)占鎖的染毒文件,但是進(jìn)程和文件句柄的枚舉比較耗時(shí),殺毒效率不高。現(xiàn)有技術(shù)另一種殺毒方法,使用一些未公開(kāi)方法查殺加上內(nèi)核鎖的染毒文件;但是,未公開(kāi)方法容易與操作系統(tǒng)中其它程序不兼容,引發(fā)操作系統(tǒng)出現(xiàn)藍(lán)屏等不穩(wěn)定的問(wèn)題,進(jìn)而影響殺毒效率??傊?,需要本領(lǐng)域技術(shù)人員迫切解決的一個(gè)技術(shù)問(wèn)題就是如何能夠提高殺毒效率。
發(fā)明內(nèi)容鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的一種染毒文件的處理方法和系統(tǒng)。依據(jù)本發(fā)明的一個(gè)方面,提供了一種染毒文件的處理方法,包括獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件;獲取所述待處理文件在磁盤上的簇分布信息;依據(jù)所述簇分布信息,從磁盤上讀取所述待處理文件的數(shù)據(jù);將讀取出的數(shù)據(jù)寫入臨時(shí)文件;分析所述臨時(shí)文件的安全性,若所述臨時(shí)文件不安全,則對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行清理操作;其中,所述獲取所述待處理文件在磁盤上的簇分布信息的步驟,包括以讀屬性打開(kāi)所述待處理文件,得到相應(yīng)的句柄;基于設(shè)備驅(qū)動(dòng)接口函數(shù)的磁盤驅(qū)動(dòng)控制碼功能,獲取與所述句柄相應(yīng)的所述待處理文件在磁盤上的簇分布信息??蛇x地,所述依據(jù)所述簇分布信息,從磁盤上讀取所述待處理文件的數(shù)據(jù)的步驟,包括依據(jù)所述待處理文件的路徑,獲取所述待處理文件對(duì)應(yīng)的磁盤分區(qū);依據(jù)所述簇分布信息,得到所述待處理文件在對(duì)應(yīng)的磁盤分區(qū)上的簇偏移;在所述待處理文件對(duì)應(yīng)的磁盤分區(qū)對(duì)應(yīng)位置上讀取與所述簇偏移相應(yīng)的數(shù)據(jù)??蛇x地,所述文件系統(tǒng)讀取失敗的文件包括ERR0R_SHARING_VI0LATI0N32對(duì)應(yīng)的文件和ERR0R_L0CK_VI0LATI0N33對(duì)應(yīng)的文件。可選地,所述獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件的步驟,包括·讀取文件后綴名,通過(guò)文件后綴名來(lái)判定所述文件是否為PE文件,若是,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件;或者,判定文件大小,若所述文件大于第一文件閾值,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件??蛇x地,所述分析所述臨時(shí)文件的安全性的步驟,包括計(jì)算所述臨時(shí)文件的特征值;根據(jù)白名單和所計(jì)算的所述臨時(shí)文件的特征值,監(jiān)測(cè)所述臨時(shí)文件是否可信任;所述白名單至少包括可信任文件的特征值;在監(jiān)測(cè)結(jié)果為肯定的情況下,確定所述臨時(shí)文件安全;在監(jiān)測(cè)結(jié)果為否定的情況下,利用殺毒引擎分析所述臨時(shí)文件是否安全??蛇x地,所述清理操作包括禁用所述臨時(shí)文件及對(duì)應(yīng)待處理文件的啟動(dòng)項(xiàng),或者,粉碎所述臨時(shí)文件及對(duì)應(yīng)待處理文件??蛇x地,所述粉碎所述臨時(shí)文件及對(duì)應(yīng)待處理文件的步驟,包括依據(jù)所述臨時(shí)文件及對(duì)應(yīng)待處理文件的路徑在對(duì)象管理器中查找對(duì)應(yīng)的文件對(duì)象解析例程;依據(jù)查找得到的文件對(duì)象解析例程生成I/O請(qǐng)求包,并發(fā)送至預(yù)置的文件系統(tǒng)下層設(shè)備的原始地址;由文件系統(tǒng)下層設(shè)備依據(jù)所述I/O請(qǐng)求包對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行粉碎操作。可選地,所述分析所述臨時(shí)文件的安全性的步驟,還包括在監(jiān)測(cè)結(jié)果為否定的情況下,判斷所述臨時(shí)文件的簽名是否有效;在所述臨時(shí)文件的簽名有效時(shí),確定所述臨時(shí)文件安全;在所述臨時(shí)文件的簽名無(wú)效時(shí),利用殺毒引擎分析所述臨時(shí)文件是否安全。根據(jù)本發(fā)明的另一方面,提供了一種染毒文件的處理系統(tǒng),包括待處理文件獲取模塊,用于獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件;簇分布獲取模塊,用于獲取所述待處理文件在磁盤上的簇分布信息;簇讀取模塊,用于依據(jù)所述簇分布信息,從磁盤上讀取所述待處理文件的數(shù)據(jù);臨時(shí)寫入模塊,用于將讀取出的數(shù)據(jù)寫入臨時(shí)文件;安全性分析模塊,用于分析所述臨時(shí)文件的安全性;清理模塊,用于在臨時(shí)文件不安全時(shí),對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行清理操作;其中,所述簇分布獲取模塊包括打開(kāi)子模塊,用于以讀屬性打開(kāi)所述待處理文件,得到相應(yīng)的句柄;控制碼功能獲取子模塊,用于基于設(shè)備驅(qū)動(dòng)接口函數(shù)的磁盤驅(qū)動(dòng)控制碼功能,獲取與所述句柄相應(yīng)的所述待處理文件在磁盤上的簇分布信息??蛇x地,所述簇讀取模塊包括磁盤分區(qū)獲取子模塊,用于依據(jù)所述待處理文件的路徑,獲取所述待處理文件對(duì)應(yīng)的磁盤分區(qū);簇偏移獲取子模塊,用于依據(jù)所述簇分布信息,得到所述待處理文件在對(duì)應(yīng)的磁盤分區(qū)上的簇偏移;簇偏移讀取子模塊,用于在所述待處理文件對(duì)應(yīng)的磁盤分區(qū)上讀取與所述簇偏移相應(yīng)的數(shù)據(jù)??蛇x地,所述文件系統(tǒng)讀取失敗的文件包括ERR0R_SHARING_VI0LATI0N32對(duì)應(yīng)的文件和ERR0R_L0CK_VI0LATI0N33對(duì)應(yīng)的文件??蛇x地,所述待處理文件獲取模塊包括后綴名獲取子模塊,用于讀取文件后綴名,通過(guò)文件后綴名來(lái)判定所述文件是否為PE文件,若是,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件;或者,大小獲取子模塊,用于判定文件大小,若所述文件大于第一文件閾值,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件??蛇x地,所述安全性分析模塊包括特征值計(jì)算子模塊,用于計(jì)算所述臨時(shí)文件的特征值;白名單檢測(cè)子模塊,用于根據(jù)白名單和所計(jì)算的所述臨時(shí)文件的特征值,監(jiān)測(cè)所述臨時(shí)文件是否可信任;所述白名單至少包括可信任文件的特征值;引擎分析子模塊,用于在監(jiān)測(cè)結(jié)果為否定的情況下,利用殺毒引擎分析所述臨時(shí)文件是否安全??蛇x地,所述清理操作模塊包括用于禁用所述臨時(shí)文件及對(duì)應(yīng)待處理文件的啟動(dòng)項(xiàng)的啟動(dòng)項(xiàng)摘除子模塊,或者,用于粉碎所述臨時(shí)文件及對(duì)應(yīng)待處理文件的粉碎子模塊??蛇x地,所述粉碎子模塊包括例程查找單元,用于依據(jù)所述臨時(shí)文件及對(duì)應(yīng)待處理文件的路徑在對(duì)象管理器中查找對(duì)應(yīng)的文件對(duì)象解析例程;請(qǐng)求包生成單元,用于依據(jù)查找得到的文件對(duì)象解析例程生成I/O請(qǐng)求包;請(qǐng)求包發(fā)送單元,用于將所述I/O請(qǐng)求包發(fā)送至預(yù)置的文件系統(tǒng)下層設(shè)備的原始地址;由文件系統(tǒng)下層設(shè)備依據(jù)所述I/o請(qǐng)求包對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行粉碎操作??蛇x地,所述安全性分析模塊還包括簽名效力判斷子模塊,用于在監(jiān)測(cè)結(jié)果為否定的情況下,判斷所述臨時(shí)文件的簽名是否有效;簽名有效處理子模塊,用于在所述臨時(shí)文件的簽名有效時(shí),確定所述臨時(shí)文件安全;簽名無(wú)效處理子模塊,用于在所述臨時(shí)文件的簽名無(wú)效時(shí),利用殺毒引擎分析所述臨時(shí)文件是否安全。本發(fā)明的一種染毒文件的處理方法和系統(tǒng)具有如下有益效果本發(fā)明針對(duì)文件系統(tǒng)讀取失敗的文件,依據(jù)其在磁盤上的簇分布信息,從磁盤上讀取相應(yīng)的數(shù)據(jù),分析所讀取數(shù)據(jù)的安全性,并對(duì)相應(yīng)不安全的染毒文件執(zhí)行清理操作;由于文件系統(tǒng)讀取失敗的文件中包括有獨(dú)占文件或加鎖文件等受文件保護(hù)機(jī)制保護(hù)的文件,而病毒大多采用獨(dú)占或鎖定的方式肆意運(yùn)行其染毒文件,故本發(fā)明對(duì)所讀取數(shù)據(jù)的安全性分析,能夠識(shí)別出與所讀取數(shù)據(jù)相應(yīng)的被病毒運(yùn)行的染毒文件,并對(duì)所述染毒文件執(zhí)行清理操作。本發(fā)明的方案使用的是公開(kāi)方法故能夠避免引起操作系統(tǒng)的不穩(wěn)定,并且,本發(fā)明無(wú)需進(jìn)行進(jìn)程和文件句柄的枚舉等耗時(shí)操作,因此,相對(duì)于現(xiàn)有技術(shù),能夠提高殺毒效率。上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中圖I示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種染毒文件的處理方法的流程圖;以及圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種染毒文件的處理系統(tǒng)的結(jié)構(gòu)圖。具體實(shí)施例方式下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。為了提高操作系統(tǒng)的可靠性和穩(wěn)定性,某些操作系統(tǒng)會(huì)提供一些文件保護(hù)機(jī)制。例如,Windows操作系統(tǒng)在一個(gè)線程在操作某個(gè)文件的時(shí)候,要求其他線程不能對(duì)該文件進(jìn)行讀或?qū)懖僮?,那么可以?duì)該文件進(jìn)行加鎖,或者,對(duì)該文件進(jìn)行獨(dú)占,也即一直打開(kāi)該文件直至操作完再關(guān)閉。上述加鎖或者獨(dú)占就是常見(jiàn)的文件保護(hù)機(jī)制。文件保護(hù)機(jī)制能夠提高操作系統(tǒng)的可靠性和穩(wěn)定性,但也有可能給病毒文件有機(jī)可乘。病毒可能采用獨(dú)占或鎖定的方式,肆意運(yùn)行其染毒文件。例如,木馬進(jìn)程為了躲避殺毒引擎,會(huì)建立專門的啟動(dòng)項(xiàng)目,而啟動(dòng)項(xiàng)目被操作系統(tǒng)運(yùn)行起來(lái)后,會(huì)把相應(yīng)的文件獨(dú)占或鎖定等等。這里的啟動(dòng)項(xiàng)目就是開(kāi)機(jī)的時(shí)候操作系統(tǒng)在前臺(tái)或者后臺(tái)運(yùn)行的程序。目前,木馬進(jìn)程建立專門的啟動(dòng)項(xiàng)目的途徑可以為在操作系統(tǒng)存在漏洞,或者,誘導(dǎo)用戶退出殺毒引擎的情況下,往啟動(dòng)文件夾C:\ProgramData\Microsoft\Windows\StartMenu\Programs\Startup寫入相應(yīng)的染毒文件,或者,在注冊(cè)表HKEY—LOCAL—MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下不斷寫入染毒文件的路徑坐坐寸寸O在操作系統(tǒng)的用戶層,現(xiàn)有技術(shù)通常利用文件系統(tǒng)讀取文件。以Windows操作系統(tǒng)為例,可以使用Windows標(biāo)準(zhǔn)API(應(yīng)用程序編程接口,ApplicationProgrammingInterface)ReadFile函數(shù)讀取目標(biāo)文件。但是,目前利用文件系統(tǒng)是無(wú)法讀取到獨(dú)占或者加鎖的文件的,否則將有悖于文件保護(hù)機(jī)制的初衷;并且,ReadFile函數(shù)會(huì)返回相應(yīng)的調(diào)用錯(cuò)誤碼;例如,獨(dú)占文件對(duì)應(yīng)的調(diào)用錯(cuò)誤碼為ERR0R_SHARING_VI0LATI0N32,加鎖文件對(duì)應(yīng)的調(diào)用錯(cuò)誤碼為ERR0R_L0CK_VI0LATI0N33等等。本發(fā)明實(shí)施例提供一種繞過(guò)文件系統(tǒng)讀取文件的方案,該方案針對(duì)文件系統(tǒng)讀取失敗的文件讀取數(shù)據(jù),并分析所讀取數(shù)據(jù)的安全性;由于文件系統(tǒng)讀取失敗的文件中包括有獨(dú)占文件或加鎖文件等受文件保護(hù)機(jī)制保護(hù)的文件,而病毒大多采用獨(dú)占或鎖定的方式肆意運(yùn)行其染毒文件;故本發(fā)明通過(guò)分析所讀取數(shù)據(jù)的安全性,能夠識(shí)別出與所讀取數(shù)據(jù)相應(yīng)的被病毒運(yùn)行的染毒文件。參照?qǐng)D1,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種染毒文件的處理方法的流程圖,具體可以包括步驟101、獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件;本發(fā)明實(shí)施例可以應(yīng)用于各種殺毒引擎的病毒查殺,在病毒查殺過(guò)程中,可以首先嘗試?yán)梦募到y(tǒng)讀取文件,如果出現(xiàn)讀取失敗則將相應(yīng)的文件作為待處理文件進(jìn)行后續(xù)處理??梢岳斫猓景l(fā)明的待處理文件具體可以包括獨(dú)占文件、加鎖文件等文件系統(tǒng)讀取失敗的文件。具體而言,可以根據(jù)文件系統(tǒng)讀取失敗的文件對(duì)應(yīng)的調(diào)用錯(cuò)誤碼獲取待處理文件,例如,調(diào)用錯(cuò)誤碼為ERR0R_SHARING_VI0LATI0N32則表示相應(yīng)的文件為獨(dú)占文件,調(diào)用錯(cuò)誤碼為ERR0R_L0CK_VI0LATI0N33則表示相應(yīng)的文件為加鎖文件,獨(dú)占文件和加鎖文件都在本發(fā)明待處理文件的處理范圍內(nèi)。PE是Windows下的一個(gè)32位的文件格式,其是病毒喜歡感染的類型,危害和一般病毒是一樣的;只不過(guò)病毒通過(guò)修改PE文件的代碼或者向PE文件中插入病毒代碼,導(dǎo)致PE文件運(yùn)行的時(shí)候執(zhí)行病毒文件。故在本發(fā)明的一種優(yōu)選實(shí)施例中,本發(fā)明可專門處理PE文件;PE文件通常指Windows操作系統(tǒng)上的程序文件,常見(jiàn)的PE文件具體可以包括EXE、DLL、OCX、SYS、COM等類型文件。相應(yīng)地,所述獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件的步驟,具體可以包括讀取文件后綴名,通過(guò)文件后綴名來(lái)判定所述文件是否為PE(可移植的執(zhí)行體,portableexecutable)文件,若是,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件。通常的病毒文件不會(huì)太小,例如一般的木馬文件會(huì)大于兩個(gè)扇區(qū)的大小,故在本發(fā)明的一種優(yōu)選實(shí)施例中,所述獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件的步驟,具體可以包括判定文件大小,若所述文件大于第一文件閾值,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件。所述第一文件閾值可由本領(lǐng)域技術(shù)人員依據(jù)文件系統(tǒng)和欲處理的病毒文件空間的最小值設(shè)定。例如,F(xiàn)AT(文件配置表,F(xiàn)ileAllocationTable)文件系統(tǒng)可以將任意大小的文件放至文件簇中,故FAT文件系統(tǒng)對(duì)應(yīng)的第一文件閾值可僅僅依據(jù)欲處理的病毒文件空間的最小值設(shè)定,如上述木馬文件對(duì)應(yīng)的兩個(gè)扇區(qū)的大小等等。又如,NTFS(NewTechnologyFileSystem)通常將不超過(guò)文件簇閾值的文件放至MFT(主文件表,MasterFileTable)中,超過(guò)4KB的文件才會(huì)放至文件簇中,故文件系統(tǒng)對(duì)應(yīng)的第一文件閾值應(yīng)依據(jù)文件系統(tǒng)和欲處理的病毒文件空間的最小值設(shè)定,例如,在文件簇閾值和欲處理的病毒文件空間的最小值兩者中取較大值,等等。本發(fā)明的兩個(gè)扇區(qū)的大小可依據(jù)具體的磁盤確定,本發(fā)明的文件簇閾值可依據(jù)具體的NTFS系統(tǒng)確定,本發(fā)明對(duì)具體的兩個(gè)扇區(qū)的大小和文件簇閾值不加以限制。步驟102、獲取所述待處理文件在磁盤上的簇分布信息;在開(kāi)發(fā)最初的個(gè)人計(jì)算機(jī)時(shí),為了組織存儲(chǔ)設(shè)備上數(shù)據(jù),最初的DOS系統(tǒng)開(kāi)發(fā)者設(shè)計(jì)一個(gè)表來(lái)指示哪個(gè)扇區(qū)屬于哪些文件,以及哪些扇區(qū)空閑,這樣操作系統(tǒng)可以最大限度地利用這些磁盤空間,使文件可以存儲(chǔ)在不連續(xù)的扇區(qū)上,文件數(shù)據(jù)可以分散有組織地存儲(chǔ)在磁盤的不同扇區(qū),這稱為文件分割?!び捎谶@個(gè)表需要做得足夠大,才能標(biāo)識(shí)每個(gè)扇區(qū),并預(yù)留一些空間以備未來(lái)采用更大存儲(chǔ)空間的磁盤。但要從這么長(zhǎng)的表中得到需要的信息將花太長(zhǎng)時(shí)間,因此,引入了簇(cluster)的概念,這使設(shè)備的最小存儲(chǔ)單元從單個(gè)扇區(qū)增加到固定數(shù)量扇區(qū),這些固定數(shù)量扇區(qū)稱為簇。簇是在物理上連續(xù)的一段存儲(chǔ)空間,也是文件系統(tǒng)中基本的儲(chǔ)存單位,每個(gè)文件由一個(gè)或多個(gè)簇組成,這些簇在物理上是連續(xù)的或不連續(xù)的。通常,磁盤對(duì)應(yīng)文件系統(tǒng)包括若干個(gè)簇,這些簇具有對(duì)應(yīng)的標(biāo)識(shí)(如編號(hào)),本發(fā)明要獲取待處理文件在磁盤上的簇分布信息就是待處理文件鎖對(duì)應(yīng)簇在磁盤上的標(biāo)識(shí)。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述獲取所述待處理文件在磁盤上的簇分布信息的步驟,具體可以包括步驟S101、以讀屬性打開(kāi)所述待處理文件,得到相應(yīng)的句柄;在文件處理領(lǐng)域,只有得到文件句柄,才能獲取相應(yīng)的文件屬性。故在實(shí)際應(yīng)用中,可以使用Windows標(biāo)準(zhǔn)APICreateFile函數(shù)打開(kāi)所述待處理文件,以得到所述待處理文件的句柄。CreateFile函數(shù)的相關(guān)參數(shù)說(shuō)明如下,在具體實(shí)現(xiàn)中,訪問(wèn)模式可以指定FILE_READ_ATTRIBUTES,這樣,CreateFile函數(shù)返回的是可以訪問(wèn)所示待處理文件的句柄。HANDLECreateFile(LPCTSTRIpFiieName,//指向文件名的指針DWORDdwDesiredAccess,//訪問(wèn)模式(寫/讀)DWORDdwShareMode,//共享模式LPSECURΠ—ATTRiBUTESIpSecurityAttributes,Il指向安全屬性的指針DWORDdwCreationDisposition,I/如何創(chuàng)建DWORDdwFlagsAndAttributes,/7文件屬性HANDLEHTemplateFile//用于復(fù)制文件句柄);步驟S102、基于設(shè)備驅(qū)動(dòng)接口函數(shù)的磁盤驅(qū)動(dòng)控制碼功能,獲取與所述句柄相應(yīng)的所述待處理文件在磁盤上的簇分布信息。磁盤為硬件設(shè)備,而Windows操作系統(tǒng)中,應(yīng)用程序可以通過(guò)API函數(shù)DeviceIoControl來(lái)實(shí)現(xiàn)對(duì)硬件設(shè)備的訪問(wèn)一獲取信息,發(fā)送命令,交換數(shù)據(jù)等。本發(fā)明實(shí)施例利用DeviceIoControl這個(gè)接口函數(shù)向磁盤設(shè)備驅(qū)動(dòng)發(fā)送正確的驅(qū)動(dòng)碼及數(shù)據(jù),是為了達(dá)到獲取信息目的;這里的信息是指文件屬性中文件簇分布屬性。DeviceIoControl的函數(shù)原型為BOOLDeviceloControl(HANDLEhDevice,//設(shè)備句柄,用來(lái)標(biāo)識(shí)要訪問(wèn)的設(shè)備DWORDdwioControlCode,//控制碼LPVOIDIpInBuffer,Il輸入數(shù)據(jù)緩沖區(qū)指針DWORDnlnBufferSize,//輸入數(shù)據(jù)緩沖區(qū)長(zhǎng)度LPVOIDIpOutBuffer,//輸出數(shù)據(jù)緩沖區(qū)指針DWORDnOutBufferSize,//輸出數(shù)據(jù)緩沖區(qū)長(zhǎng)度LPDWORDIpBytesRetumed,//輸出數(shù)據(jù)實(shí)際長(zhǎng)度單元長(zhǎng)度LPOVERLAPPEDIpOverIapped//重疊操作結(jié)構(gòu)指針);具體到本發(fā)明實(shí)施例,則是將可以訪問(wèn)所示待處理文件的句柄作為設(shè)備句柄,利用該接口函數(shù)向磁盤驅(qū)動(dòng)發(fā)送磁盤驅(qū)動(dòng)控制碼,以獲取與所述句柄相應(yīng)的所述待處理文件在磁盤上的簇分布信息;其中,Windows操作系統(tǒng)中,磁盤驅(qū)動(dòng)控制碼為FSCTL_GET_RETRIEVAL_P0INTERSo本發(fā)明實(shí)施例中,簇分布信息用于表示文件分布在哪個(gè)簇上,從而可以讀取到簇上文件全部數(shù)據(jù)。在具體實(shí)現(xiàn)中,可以采用數(shù)組等數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)一個(gè)文件的簇分布信息對(duì)應(yīng)的簇編號(hào),這些簇編號(hào)可連續(xù)可不連續(xù)。步驟103、依據(jù)所述簇分布信息,從磁盤上讀取所述待處理文件的數(shù)據(jù);通常,簇分布信息記錄有哪個(gè)簇的標(biāo)識(shí),則根據(jù)所述標(biāo)識(shí)從對(duì)應(yīng)的簇上讀取數(shù)據(jù)即可。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述依據(jù)所述簇分布信息,從磁盤上讀取所述待處理文件的數(shù)據(jù)的步驟,具體可以包括步驟S201、依據(jù)所述待處理文件的路徑,獲取所述待處理文件對(duì)應(yīng)的磁盤分區(qū);·步驟S202、依據(jù)所述簇分布信息,得到所述待處理文件在對(duì)應(yīng)的磁盤分區(qū)上的簇偏移;步驟S203、在所述待處理文件對(duì)應(yīng)磁盤分區(qū)對(duì)應(yīng)位置上讀取與所述簇偏移相應(yīng)的數(shù)據(jù)。假設(shè)所述待處理文件對(duì)應(yīng)的磁盤分區(qū)為D,數(shù)組中記錄的簇分布信息為[4,5,6,7,10,12,15],則可以首先獲取首簇在D盤上的偏移4_0=4,也即,需要從D盤其實(shí)偏移4個(gè)簇,以讀取簇編號(hào)為4的數(shù)據(jù);接下來(lái),可以讀取簇編號(hào)為5,6,7,10,12,15的數(shù)據(jù)。步驟104、將讀取出的數(shù)據(jù)寫入臨時(shí)文件;在實(shí)際應(yīng)用中,可以創(chuàng)建一個(gè)臨時(shí)目錄存放臨時(shí)文件;由于所述待處理文件不能利用文件系統(tǒng)正常讀取,故本發(fā)明采用臨時(shí)文件存儲(chǔ)所述待處理文件的全部數(shù)據(jù),以方便接下來(lái)的安全性分析。步驟105、分析所述臨時(shí)文件的安全性,若所述臨時(shí)文件不安全,則對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行清理操作。在實(shí)際應(yīng)用中,直接利用殺毒引擎即可分析所述臨時(shí)文件是否安全,若不安全,則說(shuō)明所述臨時(shí)文件為染毒文件。例如,殺毒引擎可以將臨時(shí)文件的特征轉(zhuǎn)化為自身可識(shí)別的行為標(biāo)識(shí)符(包括靜態(tài)代碼等),然后與病毒庫(kù)中所存貯的行為信息進(jìn)行對(duì)應(yīng),并作出相應(yīng)處理?;蛘?,殺毒引擎還可以基于特征碼的靜態(tài)掃描技術(shù),即在文件中尋找特定十六進(jìn)制串,如果找到,就可判定文件感染了某種病毒?,F(xiàn)有技術(shù)中是直接對(duì)文件進(jìn)行分析,并在其不安全時(shí),對(duì)其執(zhí)行清理操作的;由于本發(fā)明的待處理文件為文件系統(tǒng)讀取失敗的文件,普通的殺毒引擎也利用文件系統(tǒng)讀取文件,所以是無(wú)法讀取到所述待讀取文件的內(nèi)容的,從而也無(wú)法直接分析所述待處理文件的安全性;因此,本發(fā)明采用臨時(shí)文件存儲(chǔ)所述待處理文件的數(shù)據(jù),以便普通的殺毒引擎能夠分析所述臨時(shí)文件的安全性。由于臨時(shí)文件存儲(chǔ)的是所述待處理文件的數(shù)據(jù),所以臨時(shí)文件的安全性與所述待處理文件的安全性是一致的;所以,在臨時(shí)文件不安全時(shí),相應(yīng)的待處理文件也是不安全的,需要對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件均執(zhí)行清理操作。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述分析所述臨時(shí)文件的安全性的步驟,具體可以包括步驟S301、計(jì)算所述臨時(shí)文件的特征值;文件的特征值是可以由文件(數(shù)據(jù))計(jì)算得到的唯一標(biāo)識(shí)該文件的值,其中,無(wú)法由該值逆向得到所述文件(數(shù)據(jù))。例如,所述特征值可以是根據(jù)HASH算法得到的HASH值。HASH算法例如包括MD2、MD4、MD5、HAVAL、SHA等。當(dāng)然,文件的特征值還可以是標(biāo)識(shí)文件的靜態(tài)特征串等等,本發(fā)明對(duì)具體的文件的特征值不加以限制。步驟S302、根據(jù)白名單和所計(jì)算的所述臨時(shí)文件的特征值,監(jiān)測(cè)所述臨時(shí)文件是否可信任;所述白名單至少可以包括可信任文件的特征值;所述白名單可由客戶端和/或服務(wù)器端建立。例如,當(dāng)計(jì)算機(jī)從外部接收到文件并且用戶判斷該文件是可信任文件時(shí),可以計(jì)算該文件的特征值,并將所計(jì)算的特征值存儲(chǔ)在用于存儲(chǔ)白名單的表中。例如,所述監(jiān)測(cè)所述臨時(shí)文件是否可信任的實(shí)現(xiàn)過(guò)程可以為將所述白名單中可信任文件的特征值與所計(jì)算的所述臨時(shí)文件的特征值進(jìn)行比較。如果相同,則可以認(rèn)為所述臨時(shí)文件是可信任的,并且輸出肯定的監(jiān)測(cè)結(jié)果;否則,如果所述不同,則可以認(rèn)為所述臨時(shí)文件是不可信任的,并且輸出否定的監(jiān)測(cè)結(jié)果。在本發(fā)明的其它實(shí)施例中,還可以將可信任文件的特征值連同文件名一同存儲(chǔ)至白名單中。此種情況下,所述白名單至少可以包括可信任文件的文件名和可信任文件的特征值;可以首先根據(jù)所述臨時(shí)文件及對(duì)應(yīng)待處理文件的文件名查找白名單,然后根據(jù)所查找的可信任文件的特征值和所計(jì)算的臨時(shí)文件的特征值進(jìn)行監(jiān)測(cè)。步驟S303、在監(jiān)測(cè)結(jié)果為肯定的情況下,確定所述臨時(shí)文件安全;步驟S304、在監(jiān)測(cè)結(jié)果為否定的情況下,利用殺毒引擎分析所述臨時(shí)文件是否安全。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述分析所述臨時(shí)文件的安全性的步驟,還可以包括在監(jiān)測(cè)結(jié)果為否定的情況下,判斷所述臨時(shí)文件的簽名是否有效;在所述臨時(shí)文件的簽名有效時(shí),確定所述臨時(shí)文件安全;在所述臨時(shí)文件的簽名無(wú)效時(shí),利用殺毒引擎分析所述臨時(shí)文件是否安全。文字簽名即文字的數(shù)字簽名。在本發(fā)明的一種應(yīng)用示例中,可以使用微軟標(biāo)準(zhǔn)函數(shù)WinVerifyTrust檢查一個(gè)臨時(shí)文件是不是一個(gè)有效的數(shù)字簽名;相應(yīng)的檢查過(guò)程為用CreateFile打開(kāi)臨時(shí)文件得到相應(yīng)的文件句柄,傳給WinVerifyTrust這個(gè)API函數(shù);WinVerifyTrust的返回值有多種,O表示數(shù)字簽名各項(xiàng)指標(biāo)都是有效的,其他一切值都表示簽名無(wú)效。當(dāng)然該示例并不作為本發(fā)明的應(yīng)用限制。本發(fā)明實(shí)施例中,優(yōu)選的是,所述清理操作具體可以包括禁用所述臨時(shí)文件及對(duì)應(yīng)待處理文件的啟動(dòng)項(xiàng),或者,粉碎所述臨時(shí)文件及對(duì)應(yīng)待處理文件。其中,可以在啟動(dòng)文件夾或者注冊(cè)表啟動(dòng)項(xiàng)中禁用所述臨時(shí)文件及對(duì)應(yīng)待處理文件的啟動(dòng)項(xiàng)。文件粉碎,顧名思義,就是把計(jì)算機(jī)上的文件徹底刪除,不留痕跡。本發(fā)明可以提供如下文件粉碎的技術(shù)方案文件粉碎方案I、調(diào)用操作系統(tǒng)應(yīng)用程序接口API刪除所述臨時(shí)文件及對(duì)應(yīng)待處理文件,具體可以包括如下子步驟步驟S401、調(diào)用位于用戶態(tài)的文件刪除例程的操作系統(tǒng)應(yīng)用程序接口APIDeleteFile;步驟S402、通過(guò)所述DeleteFile例程調(diào)用位于用戶態(tài)的文件刪除例程的操作系統(tǒng)原生應(yīng)用程序接口NativeAPIZwDeleteFile;步驟S403、通過(guò)所述用戶態(tài)的ZwDeleteFile例程調(diào)用位于內(nèi)核態(tài)的文件刪除例程ZwDeleteFile,通過(guò)所述內(nèi)核態(tài)的ZwDeleteFile例程刪除目標(biāo)文件。粉碎方案2、調(diào)用自定義的用于刪除文件的應(yīng)用程序接口刪除所述目標(biāo)文件,具體可以包括如下子步驟步驟S501、依據(jù)所述臨時(shí)文件及對(duì)應(yīng)待處理文件的路徑在對(duì)象管理器中查找對(duì)應(yīng)的文件對(duì)象解析例程;步驟S502、依據(jù)查找得到的文件對(duì)象解析例程生成I/O請(qǐng)求包,并發(fā)送至預(yù)置的文件系統(tǒng)下層設(shè)備的原始地址;·步驟S503、由文件系統(tǒng)下層設(shè)備依據(jù)所述I/O請(qǐng)求包對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行粉碎操作。在本發(fā)明的一種實(shí)施例中,所述步驟S501依據(jù)所述臨時(shí)文件及對(duì)應(yīng)待處理文件的路徑在對(duì)象管理器中查找對(duì)應(yīng)的文件對(duì)象解析例程的步驟具體包括以下子步驟;子步驟S511、判斷文件路徑是否已經(jīng)拆解完畢,若否,則執(zhí)行子步驟S222;若是,則執(zhí)行子步驟S224;子步驟S512、按照路徑分隔符拆解出文件路徑中下一個(gè)待拆解的路徑段;子步驟S513、采用當(dāng)前拆解出的路徑段在對(duì)象管理器中搜索,判斷是否存在對(duì)應(yīng)的文件對(duì)象例程;若是,則返回子步驟S221;若否,則執(zhí)行子步驟S225;子步驟514、獲得所述文件路徑對(duì)應(yīng)的文件對(duì)象解析例程;子步驟S515、返回未找到對(duì)應(yīng)文件對(duì)象解析例程的信息。在具體實(shí)現(xiàn)中,可以預(yù)先構(gòu)建對(duì)象管理器查詢的OpenPacket結(jié)構(gòu),基于路徑分隔符“\”循環(huán)拆解文件路徑,例如,文件路徑為c:\a\b.txt,則第一次拆解出的路徑段為c:,第二次拆解出的路徑段為c:\a,第三次拆解出的路徑段為c:\a\b.txt,即在本發(fā)明實(shí)施例,是基于遞歸調(diào)用的方式拆解文件路徑。對(duì)象管理器中維護(hù)有拉鏈?zhǔn)降膶?duì)象Hash表,基于每次拆解出的路徑段搜索對(duì)象管理器,若能查找到對(duì)應(yīng)的對(duì)象解析例程ParseProcedure,則繼續(xù)下一次的文件路徑拆解,并基于下一次拆解出的路徑段和之前已拆解出的路徑段搜索對(duì)象管理器,若當(dāng)前的文件路徑經(jīng)過(guò)循環(huán)解析被完全拆解完畢,則經(jīng)過(guò)搜索對(duì)象管理器找到的文件對(duì)象解析例程ParseRoutine為當(dāng)前文件路徑對(duì)應(yīng)的文件對(duì)象解析例程。參照?qǐng)D2,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種染毒文件的處理系統(tǒng)的結(jié)構(gòu)圖,具體可以包括待處理文件獲取模塊201,用于獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件;簇分布獲取模塊202,用于獲取所述待處理文件在磁盤上的簇分布信息;簇讀取模塊203,用于依據(jù)所述簇分布信息,從磁盤上讀取所述待處理文件的數(shù)據(jù);臨時(shí)寫入模塊204,用于將讀取出的數(shù)據(jù)寫入臨時(shí)文件;安全性分析模塊205,用于分析所述臨時(shí)文件的安全性;清理模塊206,用于在臨時(shí)文件不安全時(shí),對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行清理操作。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述簇分布獲取模塊202具體可以包括打開(kāi)子模塊,用于以讀屬性打開(kāi)所述待處理文件,得到相應(yīng)的句柄;控制碼功能獲取子模塊,用于基于設(shè)備驅(qū)動(dòng)接口函數(shù)的磁盤驅(qū)動(dòng)控制碼功能,獲取與所述句柄相應(yīng)的所述待處理文件在磁盤上的簇分布信息。在本發(fā)明的另一種優(yōu)選實(shí)施例中,所述簇讀取模塊203具體可以包括磁盤分區(qū)獲取子模塊,用于依據(jù)所述待處理文件的路徑,獲取所述待處理文件對(duì)應(yīng)的磁盤分區(qū);簇偏移獲取子模塊,用于依據(jù)所述簇分布信息,得到所述待處理文件在對(duì)應(yīng)的磁盤分區(qū)上的簇偏移;簇偏移讀取子模塊,用于在所述待處理文件對(duì)應(yīng)的磁盤分區(qū)上讀取與所述簇偏移相應(yīng)的數(shù)據(jù)。在本發(fā)明的再一種優(yōu)選實(shí)施例中,所述文件系統(tǒng)讀取失敗的文件具體可以包括ERR0R_SHARING_VI0LATI0N32對(duì)應(yīng)的文件和ERR0R_L0CK_VI0LATI0N33對(duì)應(yīng)的文件。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述待處理文件獲取模塊201具體可以包括后綴名獲取子模塊,用于讀取文件后綴名,通過(guò)文件后綴名來(lái)判定所述文件是否為PE文件,若是,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件;或者,大小獲取子模塊,用于判定文件大小,若所述文件大于第一文件閾值,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件。在本發(fā)明的另一種優(yōu)選實(shí)施例中,所述安全性分析模塊205可以進(jìn)一步包括特征值計(jì)算子模塊,用于計(jì)算所述臨時(shí)文件的特征值;白名單檢測(cè)子模塊,用于根據(jù)白名單和所計(jì)算的所述臨時(shí)文件的特征值,監(jiān)測(cè)所述臨時(shí)文件是否可信任;所述白名單至少包括可信任文件的特征值;第一確定子模塊,用于在監(jiān)測(cè)結(jié)果為肯定的情況下,確定所述臨時(shí)文件安全;引擎分析子模塊,用于在監(jiān)測(cè)結(jié)果為否定的情況下,利用殺毒引擎分析所述臨時(shí)文件是否安全。在本發(fā)明的再一種優(yōu)選實(shí)施例中,所述清理操作模塊具體可以包括用于禁用所述臨時(shí)文件及對(duì)應(yīng)待處理文件的啟動(dòng)項(xiàng)的啟動(dòng)項(xiàng)摘除子模塊,或者,用于粉碎所述臨時(shí)文件及對(duì)應(yīng)待處理文件的粉碎子模塊。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述粉碎子模塊可以進(jìn)一步包括例程查找單元,用于依據(jù)所述臨時(shí)文件及對(duì)應(yīng)待處理文件的路徑在對(duì)象管理器中查找對(duì)應(yīng)的文件對(duì)象解析例程;請(qǐng)求包生成單元,用于依據(jù)查找得到的文件對(duì)象解析例程生成I/O請(qǐng)求包;請(qǐng)求包發(fā)送單元,用于將所述I/O請(qǐng)求包發(fā)送至預(yù)置的文件系統(tǒng)下層設(shè)備的原始地址;由文件系統(tǒng)下層設(shè)備依據(jù)所述I/o請(qǐng)求包對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行粉碎操作。在本發(fā)明實(shí)施例中,優(yōu)選的是,所述安全性分析模塊還可以包括簽名效力判斷子模塊,用于在監(jiān)測(cè)結(jié)果為否定的情況下,判斷所述臨時(shí)文件的簽名是否有效;簽名有效處理子模塊,用于在所述臨時(shí)文件的簽名有效時(shí),確定所述臨時(shí)文件安全;簽名無(wú)效處理子模塊,用于在所述臨時(shí)文件的簽名無(wú)效時(shí),利用殺毒引擎分析所述臨時(shí)文件是否安全。在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱?!?quán)利要求1.一種染毒文件的處理方法,包括獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件;獲取所述待處理文件在磁盤上的簇分布信息;依據(jù)所述簇分布信息,從磁盤上讀取所述待處理文件的數(shù)據(jù);將讀取出的數(shù)據(jù)寫入臨時(shí)文件;分析所述臨時(shí)文件的安全性,若所述臨時(shí)文件不安全,則對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行清理操作;其中,所述獲取所述待處理文件在磁盤上的簇分布信息的步驟,包括以讀屬性打開(kāi)所述待處理文件,得到相應(yīng)的句柄;基于設(shè)備驅(qū)動(dòng)接口函數(shù)的磁盤驅(qū)動(dòng)控制碼功能,獲取與所述句柄相應(yīng)的所述待處理文件在磁盤上的簇分布信息。2.如權(quán)利要求I所述的方法,所述依據(jù)所述簇分布信息,從磁盤上讀取所述待處理文件的數(shù)據(jù)的步驟,包括依據(jù)所述待處理文件的路徑,獲取所述待處理文件對(duì)應(yīng)的磁盤分區(qū);依據(jù)所述簇分布信息,得到所述待處理文件在對(duì)應(yīng)的磁盤分區(qū)上的簇偏移;在所述待處理文件對(duì)應(yīng)的磁盤分區(qū)對(duì)應(yīng)位置上讀取與所述簇偏移相應(yīng)的數(shù)據(jù)。3.如權(quán)利要求I所述的方法,所述文件系統(tǒng)讀取失敗的文件包括ERR0R_SHARING_VI0LATI0N32對(duì)應(yīng)的文件和ERR0R_L0CK_VI0LATI0N33對(duì)應(yīng)的文件。4.如權(quán)利要求I所述的方法,所述獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件的步驟,包括讀取文件后綴名,通過(guò)文件后綴名來(lái)判定所述文件是否為PE文件,若是,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件;或者,判定文件大小,若所述文件大于第一文件閾值,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件。5.如權(quán)利要求I所述的方法,所述分析所述臨時(shí)文件的安全性的步驟,包括計(jì)算所述臨時(shí)文件的特征值;根據(jù)白名單和所計(jì)算的所述臨時(shí)文件的特征值,監(jiān)測(cè)所述臨時(shí)文件是否可信任;所述白名單至少包括可信任文件的特征值;在監(jiān)測(cè)結(jié)果為肯定的情況下,確定所述臨時(shí)文件安全;在監(jiān)測(cè)結(jié)果為否定的情況下,利用殺毒引擎分析所述臨時(shí)文件是否安全。6.如權(quán)利要求I所述的方法,所述清理操作包括禁用所述臨時(shí)文件及對(duì)應(yīng)待處理文件的啟動(dòng)項(xiàng),或者,粉碎所述臨時(shí)文件及對(duì)應(yīng)待處理文件。7.如權(quán)利要求6所述的方法,所述粉碎所述臨時(shí)文件及對(duì)應(yīng)待處理文件的步驟,包括:依據(jù)所述臨時(shí)文件及對(duì)應(yīng)待處理文件的路徑在對(duì)象管理器中查找對(duì)應(yīng)的文件對(duì)象解析例程;依據(jù)查找得到的文件對(duì)象解析例程生成I/O請(qǐng)求包,并發(fā)送至預(yù)置的文件系統(tǒng)下層設(shè)備的原始地址;由文件系統(tǒng)下層設(shè)備依據(jù)所述I/o請(qǐng)求包對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行粉碎操作。8.如權(quán)利要求5所述的方法,所述分析所述臨時(shí)文件的安全性的步驟,還包括在監(jiān)測(cè)結(jié)果為否定的情況下,判斷所述臨時(shí)文件的簽名是否有效;在所述臨時(shí)文件的簽名有效時(shí),確定所述臨時(shí)文件安全;在所述臨時(shí)文件的簽名無(wú)效時(shí),利用殺毒引擎分析所述臨時(shí)文件是否安全。9.一種處理系統(tǒng),包括待處理文件獲取模塊,用于獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件;簇分布獲取模塊,用于獲取所述待處理文件在磁盤上的簇分布信息;簇讀取模塊,用于依據(jù)所述簇分布信息,從磁盤上讀取所述待處理文件的數(shù)據(jù);臨時(shí)寫入模塊,用于將讀取出的數(shù)據(jù)寫入臨時(shí)文件;安全性分析模塊,用于分析所述臨時(shí)文件的安全性;清理模塊,用于在臨時(shí)文件不安全時(shí),對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行清理操作;其中,所述簇分布獲取模塊包括打開(kāi)子模塊,用于以讀屬性打開(kāi)所述待處理文件,得到相應(yīng)的句柄;控制碼功能獲取子模塊,用于基于設(shè)備驅(qū)動(dòng)接口函數(shù)的磁盤驅(qū)動(dòng)控制碼功能,獲取與所述句柄相應(yīng)的所述待處理文件在磁盤上的簇分布信息。10.如權(quán)利要求9所述的系統(tǒng),所述簇讀取模塊包括磁盤分區(qū)獲取子模塊,用于依據(jù)所述待處理文件的路徑,獲取所述待處理文件對(duì)應(yīng)的磁盤分區(qū);簇偏移獲取子模塊,用于依據(jù)所述簇分布信息,得到所述待處理文件在對(duì)應(yīng)的磁盤分區(qū)上的簇偏移;簇偏移讀取子模塊,用于在所述待處理文件對(duì)應(yīng)的磁盤分區(qū)上讀取與所述簇偏移相應(yīng)的數(shù)據(jù)。11.如權(quán)利要求9所述的系統(tǒng),所述文件系統(tǒng)讀取失敗的文件包括ERR0R_SHARING_VI0LATI0N32對(duì)應(yīng)的文件和ERR0R_L0CK_VI0LATI0N33對(duì)應(yīng)的文件。12.如權(quán)利要求9所述的系統(tǒng),所述待處理文件獲取模塊包括后綴名獲取子模塊,用于讀取文件后綴名,通過(guò)文件后綴名來(lái)判定所述文件是否為PE文件,若是,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件;或者,大小獲取子模塊,用于判定文件大小,若所述文件大于第一文件閾值,則使用文件系統(tǒng)讀取所述文件,若讀取失敗則將所述文件作為待處理文件。13.如權(quán)利要求9所述的系統(tǒng),所述安全性分析模塊包括特征值計(jì)算子模塊,用于計(jì)算所述臨時(shí)文件的特征值;白名單檢測(cè)子模塊,用于根據(jù)白名單和所計(jì)算的所述臨時(shí)文件的特征值,監(jiān)測(cè)所述臨時(shí)文件是否可信任;所述白名單至少包括可信任文件的特征值;第一確定子模塊,用于在監(jiān)測(cè)結(jié)果為肯定的情況下,確定所述臨時(shí)文件安全;引擎分析子模塊,用于在監(jiān)測(cè)結(jié)果為否定的情況下,利用殺毒引擎分析所述臨時(shí)文件是否安全。14.如權(quán)利要求9所述的系統(tǒng),所述清理操作模塊包括用于禁用所述臨時(shí)文件及對(duì)應(yīng)待處理文件的啟動(dòng)項(xiàng)的啟動(dòng)項(xiàng)摘除子模塊,或者,用于粉碎所述臨時(shí)文件及對(duì)應(yīng)待處理文件的粉碎子模塊。15.如權(quán)利要求14所述的系統(tǒng),所述粉碎子模塊包括例程查找單元,用于依據(jù)所述臨時(shí)文件及對(duì)應(yīng)待處理文件的路徑在對(duì)象管理器中查找對(duì)應(yīng)的文件對(duì)象解析例程;請(qǐng)求包生成單元,用于依據(jù)查找得到的文件對(duì)象解析例程生成I/O請(qǐng)求包;請(qǐng)求包發(fā)送單元,用于將所述I/O請(qǐng)求包發(fā)送至預(yù)置的文件系統(tǒng)下層設(shè)備的原始地址;由文件系統(tǒng)下層設(shè)備依據(jù)所述I/O請(qǐng)求包對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行粉碎操作。16.如權(quán)利要求13所述的系統(tǒng),所述安全性分析模塊還包括簽名效力判斷子模塊,用于在監(jiān)測(cè)結(jié)果為否定的情況下,判斷所述臨時(shí)文件的簽名是否有效;簽名有效處理子模塊,用于在所述臨時(shí)文件的簽名有效時(shí),確定所述臨時(shí)文件安全;簽名無(wú)效處理子模塊,用于在所述臨時(shí)文件的簽名無(wú)效時(shí),利用殺毒引擎分析所述臨時(shí)文件是否安全。全文摘要本發(fā)明公開(kāi)了一種染毒文件的處理方法和系統(tǒng),其中的方法具體包括獲取文件系統(tǒng)讀取失敗的文件,作為待處理文件;獲取所述待處理文件在磁盤上的簇分布信息;依據(jù)所述簇分布信息,從磁盤上讀取所述待處理文件的數(shù)據(jù);將讀取出的數(shù)據(jù)寫入臨時(shí)文件;分析所述臨時(shí)文件的安全性,若所述臨時(shí)文件不安全,則對(duì)所述臨時(shí)文件及對(duì)應(yīng)待處理文件執(zhí)行清理操作;其中,所述獲取所述待處理文件在磁盤上的簇分布信息的步驟,包括以讀屬性打開(kāi)所述待處理文件,得到相應(yīng)的句柄;基于設(shè)備驅(qū)動(dòng)接口函數(shù)的磁盤驅(qū)動(dòng)控制碼功能,獲取與所述句柄相應(yīng)的所述待處理文件在磁盤上的簇分布信息。本發(fā)明能夠提高殺毒效率。文檔編號(hào)G06F21/56GK102930208SQ20121038024公開(kāi)日2013年2月13日申請(qǐng)日期2012年9月29日優(yōu)先權(quán)日2012年9月29日發(fā)明者譚合力申請(qǐng)人:北京奇虎科技有限公司,奇智軟件(北京)有限公司