專利名稱:聚集反病毒軟件應(yīng)用程序的知識(shí)庫(kù)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)設(shè)備,尤其涉及保護(hù)計(jì)算機(jī)設(shè)備以免受到惡意軟件的危害。
背景技術(shù):
隨著越來(lái)越多的計(jì)算機(jī)和其他計(jì)算設(shè)備通過(guò)諸如因特網(wǎng)等各種網(wǎng)絡(luò)互相連接,計(jì) 算機(jī)的安全性變得愈加重要,尤其是來(lái)自在網(wǎng)絡(luò)和信息流上傳遞的入侵和攻擊。本領(lǐng)域的 技術(shù)人員會(huì)認(rèn)識(shí)到這些攻擊以許多不同的形式出現(xiàn),包括但當(dāng)然不限于計(jì)算機(jī)病毒、計(jì)算 機(jī)蠕蟲(chóng)、計(jì)算機(jī)組件更換、拒絕服務(wù)攻擊、甚至是誤用/濫用合法的計(jì)算機(jī)系統(tǒng)特征,所有 這些都為了非法目的利用一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)的弱點(diǎn)。雖然本領(lǐng)域的技術(shù)人員會(huì)認(rèn)識(shí)到 各種計(jì)算機(jī)攻擊在技術(shù)上互不相同,但為了本發(fā)明和描述簡(jiǎn)單起見(jiàn),在諸如因特網(wǎng)等計(jì)算 機(jī)網(wǎng)絡(luò)上傳播的惡意計(jì)算機(jī)程序在下文中一般會(huì)被稱為計(jì)算機(jī)惡意軟件或簡(jiǎn)稱為惡意軟 件。當(dāng)計(jì)算機(jī)系統(tǒng)被計(jì)算機(jī)惡意軟件攻擊或“感染”時(shí),有害的結(jié)果各不相同,包括禁 用系統(tǒng)設(shè)備;擦除或破壞固件、應(yīng)用程序或數(shù)據(jù)文件;將潛在的敏感數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上的 另一位置;關(guān)閉計(jì)算機(jī)系統(tǒng);或造成計(jì)算機(jī)系統(tǒng)癱瘓。然而許多(雖然不是全部)計(jì)算機(jī)惡 意軟件的另一個(gè)有害的方面是被感染的計(jì)算機(jī)系統(tǒng)被用于感染其他系統(tǒng)。對(duì)計(jì)算機(jī)惡意軟件,尤其是對(duì)計(jì)算機(jī)病毒和蠕蟲(chóng)的傳統(tǒng)防護(hù)是市場(chǎng)上可購(gòu)買(mǎi)的反 病毒軟件應(yīng)用程序。一般而言,反病毒軟件應(yīng)用程序掃描數(shù)據(jù)、查找與計(jì)算機(jī)惡意軟件相關(guān) 聯(lián)的可標(biāo)識(shí)模式。在檢測(cè)與計(jì)算機(jī)惡意軟件相關(guān)聯(lián)的模式時(shí),反病毒軟件應(yīng)用程序會(huì)通過(guò) 隔離惡意軟件或刪除惡意軟件來(lái)響應(yīng)。遺憾的是,反病毒軟件應(yīng)用程序一般對(duì)已知的、可標(biāo) 識(shí)的計(jì)算機(jī)惡意軟件有效。這通常是通過(guò)將數(shù)據(jù)中的模式與所謂的惡意軟件的“簽名”匹 配來(lái)完成的。通常,由現(xiàn)有反病毒軟件應(yīng)用程序執(zhí)行的大部分操作是在操作系統(tǒng)處于“用戶模 式”時(shí)發(fā)生的。如本領(lǐng)域和其他領(lǐng)域的技術(shù)人員所公知的,諸如反病毒軟件應(yīng)用程序等計(jì)算 機(jī)應(yīng)用程序可以在“內(nèi)核模式”或“用戶模式”中執(zhí)行?!皟?nèi)核模式”是指在操作系統(tǒng)的最高 特權(quán)和保護(hù)級(jí)別處出現(xiàn)的處理。內(nèi)核模式程序一直駐留在被保護(hù)的存儲(chǔ)器中,并提供基本 的操作系統(tǒng)服務(wù)?!坝脩裟J健笔侵冈趹?yīng)用程序?qū)映霈F(xiàn)的處理,在所述的應(yīng)用程序?qū)又胁荒?訪問(wèn)內(nèi)核模式數(shù)據(jù)。先前,需要訪問(wèn)可從內(nèi)核模式獲得的信息和特征的反病毒軟件應(yīng)用程 序的供應(yīng)商需要建立與操作系統(tǒng)交互的內(nèi)核模式過(guò)濾器。遺憾的是,要求每個(gè)反病毒軟件 供應(yīng)商開(kāi)發(fā)唯一的過(guò)濾器來(lái)訪問(wèn)從內(nèi)核模式可用的特征,諸如被調(diào)度發(fā)生在計(jì)算機(jī)設(shè)備上 的輸入/輸出(下文中被成為“I/O”)。此外,如果每個(gè)反病毒軟件應(yīng)用程序具有相應(yīng)的內(nèi) 核模式過(guò)濾器來(lái)執(zhí)行本質(zhì)上相同的任務(wù),計(jì)算設(shè)備承受具有在幾個(gè)全異過(guò)濾器中執(zhí)行的重 復(fù)代碼的性能負(fù)擔(dān),所述幾個(gè)全異的過(guò)濾器都是在內(nèi)核中載入的?,F(xiàn)有技術(shù)的另一個(gè)缺點(diǎn)是用戶模式界面是不一致的、不統(tǒng)一的并易于出錯(cuò)。因此,需要一種機(jī)制,其中被調(diào)度為在 計(jì)算設(shè)備上發(fā)生的I/O對(duì)反病毒軟件應(yīng)用程序可用,而無(wú)需反病毒軟件供應(yīng)商執(zhí)行內(nèi)核模 式過(guò)濾器。許多軟件供應(yīng)商供應(yīng)反病毒軟件應(yīng)用程序并維護(hù)日益增長(zhǎng)的惡意軟件簽名數(shù)據(jù) 庫(kù)。實(shí)際上,反病毒軟件供應(yīng)商最重要的資產(chǎn)之一是從已知惡意軟件收集的簽名的知識(shí)庫(kù)。 然而,商業(yè)上可用的反病毒軟件應(yīng)用程序不總是互相兼容的。例如,在某些情況下,當(dāng)有兩 種不同的反病毒軟件安裝在計(jì)算設(shè)備上,大家知道會(huì)發(fā)生數(shù)據(jù)沖突。結(jié)果是用戶不能在計(jì) 算設(shè)備上安裝多個(gè)反病毒軟件應(yīng)用程序并從每個(gè)應(yīng)用程序的知識(shí)庫(kù)得益。因此,需要一種 機(jī)制,用于聚集安裝在相同計(jì)算設(shè)備上的多個(gè)反病毒軟件應(yīng)用程序的知識(shí)庫(kù)。
發(fā)明內(nèi)容
本發(fā)明針對(duì)上述示出的需求,提供了聚集多個(gè)反病毒軟件應(yīng)用程序的知識(shí)庫(kù)以確 定與一計(jì)算設(shè)備相關(guān)聯(lián)的數(shù)據(jù)是否是惡意軟件的機(jī)制。本發(fā)明的一方面是通過(guò)通用信息模 型允許反病毒軟件應(yīng)用程序訪問(wèn)與I/O請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)的方法。通用信息模型免除了反 病毒軟件供應(yīng)商通過(guò)提供一般可以從內(nèi)核模式過(guò)濾器獲取的特征來(lái)創(chuàng)建內(nèi)核模式過(guò)濾器 的需求。接著通用信息模式可以使反病毒軟件應(yīng)用程序掃描與計(jì)算設(shè)備相關(guān)聯(lián)的數(shù)據(jù)以便 確定該數(shù)據(jù)是否是惡意軟件。當(dāng)檢測(cè)到惡意軟件,就防止任何讀取、存儲(chǔ)或執(zhí)行惡意軟件的 嘗試O本發(fā)明的另一方面是確定與計(jì)算設(shè)備相關(guān)聯(lián)的文件先前是否被標(biāo)識(shí)為惡意軟件 或先前是否被確定為安全的方法。本發(fā)明的這個(gè)方面包括當(dāng)一個(gè)或多個(gè)反病毒軟件應(yīng)用程 序掃描文件時(shí)將一變量與該文件相關(guān)聯(lián)。該變量指示該文件是否是惡意軟件并可以在隨后 的時(shí)間被調(diào)用。例如,當(dāng)用戶試圖執(zhí)行該文件時(shí)可以調(diào)用該變量。如果該變量指示該文件 為惡意軟件,則用戶執(zhí)行該文件的任何嘗試會(huì)失敗。相反,如果該變量指示該文件不是惡意 軟件,則執(zhí)行文件的嘗試會(huì)成功而無(wú)需反病毒軟件應(yīng)用程序?qū)ξ募?zhí)行重復(fù)的掃描。本發(fā)明的另一方面是允許反病毒軟件應(yīng)用程序訪問(wèn)文件數(shù)據(jù)的高效方法。本發(fā)明 的這個(gè)方面包括創(chuàng)建文件映射部分對(duì)象,它用于由一個(gè)或多個(gè)反病毒軟件應(yīng)用程序執(zhí)行掃 描。接著提供與反病毒應(yīng)用程序交互的用戶模式應(yīng)用程序以及用于訪問(wèn)文件映射部分對(duì)象 的數(shù)據(jù)。最后,生成反病毒軟件應(yīng)用程序可訪問(wèn)的文件視圖。本發(fā)明的這個(gè)方面向反病毒 軟件應(yīng)用程序提供了一組基本的文件系統(tǒng)操作,用于提高執(zhí)行掃描的速度。本發(fā)明的又一個(gè)方面提供了聚集多個(gè)反病毒軟件應(yīng)用程序的知識(shí)庫(kù)的計(jì)算設(shè)備。 該計(jì)算設(shè)備包括安全服務(wù)應(yīng)用程序、一個(gè)或多個(gè)反病毒軟件應(yīng)用程序以及包含掃描高速緩 存和數(shù)據(jù)映射模塊的通用安全過(guò)濾器。通用安全過(guò)濾器和安全服務(wù)應(yīng)用程序共同工作以便 向反病毒軟件應(yīng)用程序提供通用信息模型。通用信息模型允許反病毒軟件應(yīng)用程序訪問(wèn)被 調(diào)度發(fā)生在計(jì)算設(shè)備上的I/O請(qǐng)求。當(dāng)截取I/O請(qǐng)求時(shí),反病毒軟件應(yīng)用程序會(huì)與通用信 息模型交互以便調(diào)度掃描。當(dāng)掃描發(fā)生時(shí),安全服務(wù)應(yīng)用程序知道有不同的反病毒軟件應(yīng) 用程序被安裝在計(jì)算設(shè)備上,并且能夠防止數(shù)據(jù)沖突。在另一個(gè)實(shí)施例中,提供了計(jì)算機(jī)可讀介質(zhì),其內(nèi)容例如使得計(jì)算設(shè)備依照這里 所述的方法運(yùn)作的程序。
結(jié)合附圖參考以下詳細(xì)描述,本發(fā)明的上述方面和許多附帶有點(diǎn)將變得顯而易見(jiàn) 并變得容易理解,附圖中圖1是示出依照現(xiàn)有技術(shù)的計(jì)算設(shè)備的層次結(jié)構(gòu)的框圖;圖2是依照現(xiàn)有技術(shù)包括適于掃描惡意軟件的反病毒軟件應(yīng)用程序的計(jì)算設(shè)備 的組件的框圖;圖3是依照本發(fā)明包括適于標(biāo)識(shí)惡意軟件的反病毒軟件應(yīng)用程序的計(jì)算設(shè)備的 組件的框圖;圖4是示出依照本發(fā)明的聚集多個(gè)反病毒軟件應(yīng)用程序的知識(shí)庫(kù)的方法的一個(gè) 示例性實(shí)施例;圖5是結(jié)合圖4中所描述的方法適于存儲(chǔ)和調(diào)用數(shù)據(jù)的掃描高速緩存的圖示;以 及圖6是示出依照本發(fā)明會(huì)與圖4中所描述的方法結(jié)合使用以向反病毒軟件應(yīng)用程 序提供對(duì)文件數(shù)據(jù)的訪問(wèn)的訪問(wèn)方法的一個(gè)示例性實(shí)施例的流程圖。
具體實(shí)施例方式依照本發(fā)明,提供了聚集多個(gè)反病毒軟件應(yīng)用程序的知識(shí)庫(kù)的系統(tǒng)、方法和計(jì)算 機(jī)可讀介質(zhì)。向諸如反病毒軟件應(yīng)用程序等用戶模式應(yīng)用程序提供了通過(guò)通用信息模型對(duì) 諸如I/O請(qǐng)求等文件系統(tǒng)操作的訪問(wèn),這免除了反病毒軟件應(yīng)用程序創(chuàng)建內(nèi)核模式過(guò)濾器 的需求。當(dāng)截取I/O請(qǐng)求時(shí),本發(fā)明使安裝在計(jì)算設(shè)備上的每個(gè)反病毒軟件應(yīng)用程序執(zhí)行 掃描以便確定與請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)是否是惡意軟件。雖然會(huì)在反病毒軟件應(yīng)用程序的環(huán)境 中描述本發(fā)明,但相關(guān)領(lǐng)域和其他領(lǐng)域的技術(shù)人員會(huì)理解,本發(fā)明也可用于軟件開(kāi)發(fā)的其 他領(lǐng)域。因此,所述的本發(fā)明的實(shí)施例應(yīng)該在實(shí)質(zhì)上被構(gòu)建成說(shuō)明性的而非限制性的。圖1是依照現(xiàn)有技術(shù)配置的計(jì)算設(shè)備100的框圖。計(jì)算設(shè)備100可以是多種設(shè)備 中的任意一種,這多種設(shè)備包括但不限于個(gè)人計(jì)算設(shè)備、基于服務(wù)器的計(jì)算設(shè)備、個(gè)人數(shù)字 助理、蜂窩電話、具有某些類型的存儲(chǔ)器的其他電子設(shè)備等等。為了易于說(shuō)明且因?yàn)樗麄儗?duì) 理解本發(fā)明并不重要,圖1沒(méi)有示出許多計(jì)算設(shè)備的典型組件,諸如鍵盤(pán)、鼠標(biāo)、打印機(jī)和 其他I/O設(shè)備、顯示器等等。圖1所示的計(jì)算設(shè)備100包括硬件平臺(tái)102、操作系統(tǒng)104和應(yīng)用程序平臺(tái)106。為 了易于說(shuō)明且因?yàn)樗麄儗?duì)理解本發(fā)明并不重要,圖1沒(méi)有示出典型地包含在硬件平臺(tái)102 中的組件,諸如中央處理單元、存儲(chǔ)器、硬盤(pán)驅(qū)動(dòng)器等等。同樣地,因?yàn)橄嗨频睦碛?,圖1沒(méi) 有示出操作系統(tǒng)104或應(yīng)用程序平臺(tái)106的任何組件。如圖1所示,計(jì)算設(shè)備100的組件由位于底層的硬件平臺(tái)102和位于頂層的應(yīng)用 程序平臺(tái)106分層。圖1的分層說(shuō)明本發(fā)明更適宜在分級(jí)環(huán)境中實(shí)現(xiàn)。包含在計(jì)算設(shè)備 100中的每個(gè)層次依賴于較低層中的系統(tǒng)。更具體地,應(yīng)用程序平臺(tái)105在操作系統(tǒng)104之 上運(yùn)行且不能直接訪問(wèn)硬件平臺(tái)102的組件。相反,應(yīng)用程序平臺(tái)106對(duì)硬件平臺(tái)102的 任何訪問(wèn)由操作系統(tǒng)104管理。如本領(lǐng)域和其他領(lǐng)域的技術(shù)人員所公知的,操作系統(tǒng)104 向應(yīng)用程序平臺(tái)106提供了應(yīng)用程序編程接口( “API”),用于定義應(yīng)用程序106可用的服 務(wù)。
圖2是適于說(shuō)明向反病毒軟件應(yīng)用程序提供對(duì)與I/O請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)的訪問(wèn) 的現(xiàn)有技術(shù)過(guò)程的框圖。如本領(lǐng)域和其他領(lǐng)域的技術(shù)人員公知的,計(jì)算機(jī)用戶具有將數(shù) 據(jù)讀出和寫(xiě)入存儲(chǔ)設(shè)備的持續(xù)需求,這些存儲(chǔ)設(shè)備諸如硬盤(pán)、軟盤(pán)、隨機(jī)存取存儲(chǔ)器、光盤(pán) (“CD”)等。例如,多數(shù)軟件應(yīng)用程序提供的通用操作是打開(kāi)存儲(chǔ)在存儲(chǔ)設(shè)備上的文件并 在計(jì)算機(jī)顯示器上顯示文件內(nèi)容。然而,由于打開(kāi)文件會(huì)造成執(zhí)行與文件相關(guān)聯(lián)的惡意軟 件,因此反病毒軟件應(yīng)用程序一般會(huì)在滿足打開(kāi)操作前執(zhí)行文件的掃描或其他分析。如果 檢測(cè)到惡意軟件,則執(zhí)行掃描的反病毒軟件應(yīng)用程序會(huì)例如通過(guò)使打開(kāi)操作失敗來(lái)防止執(zhí) 行惡意軟件。同樣,反病毒軟件應(yīng)用程序會(huì)向計(jì)算機(jī)用戶示出選項(xiàng)刪除惡意軟件或?qū)阂?軟件置于“隔離區(qū)”。如本領(lǐng)域和其他領(lǐng)域的技術(shù)人員所公知的,在計(jì)算設(shè)備中作出的I/O請(qǐng)求是由稱 為I/O系統(tǒng)的操作系統(tǒng)104(圖1)的組件處理的。為了保護(hù)計(jì)算設(shè)備以免受到惡意軟件的 危害,當(dāng)接收到I/O請(qǐng)求時(shí)會(huì)通知反病毒軟件應(yīng)用程序?,F(xiàn)在參見(jiàn)圖2,將描述向反病毒軟 件應(yīng)用程序提供對(duì)與I/O請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)的訪問(wèn)的公知過(guò)程。圖2所示的計(jì)算設(shè)備100 包括I/O系統(tǒng)200、本地或遠(yuǎn)程I/O設(shè)備202、用戶應(yīng)用程序204、反病毒過(guò)濾器206-210和 駐留在用戶或內(nèi)核模式中的反病毒軟件應(yīng)用程序/驅(qū)動(dòng)程序212-216。當(dāng)從諸如用戶應(yīng)用 程序204等用戶應(yīng)用程序生成執(zhí)行I/O的請(qǐng)求時(shí),I/O系統(tǒng)200接收到請(qǐng)求。如圖2所示, 用戶應(yīng)用程序在用戶模式中運(yùn)作并在內(nèi)核模式中生成由I/O系統(tǒng)200滿足的I/O請(qǐng)求。在 滿足請(qǐng)求之前,會(huì)通知反病毒過(guò)濾器206、208和210要調(diào)度滿足一 I/O請(qǐng)求。作為響應(yīng), 反病毒過(guò)濾器206、208和210中的每一個(gè)會(huì)通知其各自的反病毒軟件應(yīng)用程序/驅(qū)動(dòng)程序 212、214和216,應(yīng)該掃描與I/O請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)。如果與I/O請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)是惡意 軟件,則反病毒軟件應(yīng)用程序/驅(qū)動(dòng)程序會(huì)被配置成防止I/O請(qǐng)求被滿足。相反,如果I/O 請(qǐng)求不涉及惡意軟件,則I/O系統(tǒng)200會(huì)使得I/O請(qǐng)求被滿足。例如,I/O系統(tǒng)200會(huì)使數(shù) 據(jù)被寫(xiě)入到I/O設(shè)備202,在一些系統(tǒng)中,這些I/O設(shè)備202是諸如硬盤(pán)、軟盤(pán)、閃存、磁盤(pán)、 光盤(pán)(“CD”)等本地硬件設(shè)備?;蛘?,I/O設(shè)備202可以是通過(guò)網(wǎng)絡(luò)連接連接到計(jì)算設(shè)備 100的遠(yuǎn)程硬件設(shè)備。遺憾的是,圖2所示的向反病毒軟件應(yīng)用程序提供對(duì)與I/O請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)的 訪問(wèn)的現(xiàn)有技術(shù)過(guò)程具有要求反病毒軟軟件供應(yīng)商各自開(kāi)發(fā)內(nèi)核模式過(guò)濾器的缺陷。如圖 2所示,反病毒過(guò)濾器206、208和210只與特定的反病毒軟件應(yīng)用程序結(jié)合使用。此外,由 于每種反病毒軟件應(yīng)用程序維護(hù)一內(nèi)核模式過(guò)濾器以便執(zhí)行必要的相同任務(wù),計(jì)算機(jī)系統(tǒng) 遭受到重復(fù)的代碼同時(shí)載入到存儲(chǔ)器中的性能負(fù)擔(dān)。遺憾的是,圖2所示的向反病毒軟件應(yīng)用程序提供對(duì)與I/O請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)的 訪問(wèn)的現(xiàn)有技術(shù)過(guò)程具有潛在地阻礙從計(jì)算設(shè)備刪除惡意軟件的缺陷。當(dāng)在相同的計(jì)算設(shè) 備上安裝兩個(gè)或多個(gè)反病毒軟件應(yīng)用程序時(shí),大家知道會(huì)發(fā)生數(shù)據(jù)沖突。例如,兩個(gè)反病毒 軟件應(yīng)用程序會(huì)確定存儲(chǔ)在計(jì)算設(shè)備上的文件感染了惡意軟件。第一反病毒軟件應(yīng)用程序 會(huì)試圖通過(guò)刪除文件數(shù)據(jù)來(lái)為文件“去除感染”。然而,當(dāng)?shù)谝环床《拒浖?yīng)用程序試圖刪 除文件數(shù)據(jù)時(shí),一般會(huì)通知第二病毒軟件應(yīng)用程序。在這種情況下,第二反病毒軟件應(yīng)用程 序會(huì)被配置成防止對(duì)受感染文件的任何訪問(wèn)。同樣地,第一反病毒軟件應(yīng)用程序會(huì)被配置 成防止諸如第二反病毒軟件應(yīng)用程序等其他應(yīng)用程序訪問(wèn)受感染的文件。顯然,在這種情 況下,第一反病毒軟件應(yīng)用程序或第二反病毒軟件應(yīng)用程序都不能刪除惡意軟件。
6
圖3是適于說(shuō)明依照本發(fā)明向反病毒軟件應(yīng)用程序提供對(duì)與I/O請(qǐng)求相關(guān)聯(lián)的數(shù) 據(jù)的訪問(wèn)的過(guò)程的框圖。以下旨在提供可以實(shí)現(xiàn)本發(fā)明的一個(gè)合適的計(jì)算設(shè)備300的示例 性概述。圖3所示的計(jì)算設(shè)備300包括可以用與以上參考圖2描述的相同名稱的組件相似 方式操作的幾個(gè)組件。計(jì)算設(shè)備300包括I/O系統(tǒng)302、I/O設(shè)備304、用戶應(yīng)用程序306、 反病毒軟件應(yīng)用程序308、310和312、安全服務(wù)應(yīng)用程序314和包括掃描高速緩存318和數(shù) 據(jù)映射模塊320的通用安全過(guò)濾器316。本發(fā)明所實(shí)現(xiàn)的軟件實(shí)現(xiàn)例程包含在安全服務(wù)應(yīng) 用程序314和包括掃描高速緩存318和數(shù)據(jù)映射模塊320的通用安全過(guò)濾器316中。一般 而言,本發(fā)明實(shí)現(xiàn)的例程向諸如反病毒軟件應(yīng)用程序308、310和312等用戶模式應(yīng)用程序 提供了對(duì)與I/O請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)的訪問(wèn),該I/O請(qǐng)求被調(diào)度為由I/O系統(tǒng)302來(lái)滿足。如 圖3所示,反病毒軟件應(yīng)用程序308、310和312可以不使用內(nèi)核模式過(guò)濾器運(yùn)行。同樣,計(jì) 算設(shè)備300可以用于聚集多個(gè)反病毒軟件應(yīng)用程序的知識(shí)庫(kù)來(lái)掃描數(shù)據(jù)并確定數(shù)據(jù)是否 被惡意軟件感染。雖然圖3和所附文字使用反病毒軟件應(yīng)用程序來(lái)描述本發(fā)明的實(shí)施例, 但本發(fā)明的軟件實(shí)現(xiàn)例程可以與其他類型的應(yīng)用程序結(jié)合使用。類似地,本發(fā)明的軟件實(shí) 現(xiàn)例程可與執(zhí)行特定功能的服務(wù)而非應(yīng)用程序通信。因此,圖3所示的計(jì)算設(shè)備300的組 件應(yīng)該被構(gòu)建為示例性的而非限制性的。如上所述,本發(fā)明的一些軟件實(shí)現(xiàn)例程位于通用安全過(guò)濾器316內(nèi)。概括地描述 本發(fā)明的一個(gè)實(shí)施例,通用安全過(guò)濾器316截取由諸如用戶應(yīng)用程序306等應(yīng)用程序作出 的I/O請(qǐng)求。作為響應(yīng),通用安全過(guò)濾器316執(zhí)行被設(shè)計(jì)成防止惡意軟件在計(jì)算設(shè)備30中 傳播或執(zhí)行的例程。更具體地,通用安全過(guò)濾器316與安全服務(wù)應(yīng)用程序314 (下述)通信, 使得反病毒軟件應(yīng)用程序分析與請(qǐng)求相關(guān)聯(lián)的文件并確定文件是否包含惡意軟件。如果檢 測(cè)到惡意軟件,通用安全過(guò)濾器315會(huì)與I/O系統(tǒng)302通信并防止?jié)M足請(qǐng)求。如圖3所示,通用安全過(guò)濾器316包括掃描高速緩存318,用于提高本發(fā)明分析從 I/O系統(tǒng)302截取的I/O請(qǐng)求的速度。例如,如本領(lǐng)域和其他領(lǐng)域的技術(shù)人員所公知的,用 戶應(yīng)用程序會(huì)經(jīng)常對(duì)相同的文件作出相繼的I/O請(qǐng)求。在這種情況下,本發(fā)明會(huì)截取第一 I/O請(qǐng)求并使得反病毒軟件應(yīng)用程序308、310和312掃描文件并驗(yàn)證該文件沒(méi)有被感染惡 意軟件。在文件沒(méi)有被感染的情況下,相繼的I/O請(qǐng)求不會(huì)觸發(fā)對(duì)文件的掃描。相反,掃描 高速緩存318對(duì)于文件是否被感染惡意軟件而跟蹤文件的狀態(tài),這樣使得不執(zhí)行不必要的 掃描。文件被分類為(1)已知惡意軟件,(2)已知安全或(3)未知。由于掃描文件是資源 密集型過(guò)程,因此防止不必要的掃描提高了本發(fā)明的速度。如下面將要詳細(xì)描述的,掃描高 速緩存318可以與除了被設(shè)計(jì)成防止惡意軟件的傳播和執(zhí)行的系統(tǒng)之外的其他跟蹤文件 狀態(tài)的系統(tǒng)結(jié)合使用。例如,一些軟件應(yīng)用程序允許用戶“備份”或?qū)?shù)據(jù)保存到第二硬件 設(shè)備。在這種情況下,軟件應(yīng)用程序?qū)τ诘诙布O(shè)備是否具有文件的最新版本而跟蹤計(jì) 算設(shè)備上每個(gè)文件的狀態(tài)。掃描高速緩存318可與這種類型的系統(tǒng)結(jié)合使用以便跟蹤計(jì)算 設(shè)備上的文件的狀態(tài)。通用安全過(guò)濾器316包括數(shù)據(jù)映射模塊320,它用于提高反病毒軟件應(yīng)用程序 308,310和312能夠掃描文件的可靠性和速度。一般而言,當(dāng)新型的反病毒軟件應(yīng)用程序截 取文件打開(kāi)操作,會(huì)打開(kāi)第二文件句柄以讀出文件數(shù)據(jù)。然而,如本領(lǐng)域和其他領(lǐng)域的技術(shù) 人員所公知的,會(huì)“鎖定”文件以防止多個(gè)應(yīng)用程序同時(shí)訪問(wèn)文件。反病毒軟件應(yīng)用程序在 另一個(gè)應(yīng)用程序“鎖定”文件的情況下不能讀出數(shù)據(jù)。此外,在現(xiàn)有技術(shù)中,打開(kāi)新的句柄會(huì)防止另一應(yīng)用程序打開(kāi)文件,這會(huì)造成應(yīng)用程序故障。然而,數(shù)據(jù)映射模塊320向諸如反病 毒軟件應(yīng)用程序308、310和312等應(yīng)用程序提供了對(duì)文件數(shù)據(jù)的訪問(wèn)而無(wú)需創(chuàng)建第二文件 句柄。然而,數(shù)據(jù)映射模塊320向應(yīng)用程序提供了對(duì)低層對(duì)象的訪問(wèn),文件數(shù)據(jù)可以從該低 層對(duì)象讀出。無(wú)論是否有另一個(gè)應(yīng)用程序“鎖定”了文件,都可以訪問(wèn)低層對(duì)象。同樣,創(chuàng)建 第二文件句柄需要相當(dāng)多的計(jì)算資源。因此,允許反病毒軟件應(yīng)用程序使用低層對(duì)象來(lái)讀 出文件數(shù)據(jù)提高了反病毒軟件應(yīng)用程序能夠執(zhí)行掃描以發(fā)現(xiàn)惡意軟件的速度。如下文將詳 細(xì)描述的,數(shù)據(jù)映射模塊320可與讀出文件數(shù)據(jù)的其他系統(tǒng)結(jié)合使用。例如,一些軟件應(yīng)用 程序在文件被存儲(chǔ)在硬件設(shè)備上之前加密文件,并且在從硬件設(shè)備恢復(fù)時(shí)解密文件。在這 種情況下,數(shù)據(jù)映射模塊320可用于提供加密應(yīng)用程序以訪問(wèn)文件中的數(shù)據(jù)的有效方法。如圖3所示,計(jì)算設(shè)備300包括安全服務(wù)應(yīng)用程序314,其中該安全服務(wù)應(yīng)用程序 314用作到安裝在計(jì)算設(shè)備300上的反病毒軟件應(yīng)用程序的接口。安全服務(wù)應(yīng)用程序314 允許反病毒軟件應(yīng)用程序注冊(cè)和創(chuàng)建掃描概況。掃描概況標(biāo)識(shí)出反病毒應(yīng)用程序發(fā)現(xiàn)“感 興趣的” I/O請(qǐng)求。例如,掃描概況會(huì)指示當(dāng)I/O請(qǐng)求是針對(duì)關(guān)于被惡意軟件感染處于“未 知”狀態(tài)的文件時(shí),反病毒軟件應(yīng)用程序會(huì)執(zhí)行掃描?;蛘?,會(huì)將掃描概況這樣定義,使得當(dāng) 生成某些類型的I/O請(qǐng)求時(shí),反病毒軟件應(yīng)用程序執(zhí)行掃描。在任一情況下,反病毒軟件應(yīng) 用程序向安全服務(wù)應(yīng)用程序314注冊(cè)并創(chuàng)建定義執(zhí)行掃描的環(huán)境的概況。安全服務(wù)應(yīng)用程 序314負(fù)責(zé)在不同的經(jīng)注冊(cè)的反病毒軟件應(yīng)用程序之間的調(diào)度掃描。本發(fā)明的實(shí)現(xiàn)不限于圖3所示的示例性計(jì)算設(shè)備。例如,圖3和所附文本描述了 在用戶模式中執(zhí)行的反病毒軟件應(yīng)用程序308、310和312。然而,本發(fā)明的軟件實(shí)現(xiàn)例程可 以被配置成與在內(nèi)核模式中執(zhí)行的反病毒軟件過(guò)濾器通信。同樣,示出了計(jì)算設(shè)備300從 用戶應(yīng)用程序306接收I/O請(qǐng)求。然而,如本領(lǐng)域和其他領(lǐng)域的技術(shù)人員所公知的,可從其 他源接收I/O請(qǐng)求,諸如用于遠(yuǎn)程計(jì)算設(shè)備之間通信的協(xié)議。此外,I/O設(shè)備304被示為作 為計(jì)算設(shè)備300的組件的硬件設(shè)備。然而I/O設(shè)備304可以是通過(guò)網(wǎng)絡(luò)連接連接到計(jì)算設(shè) 備300的遠(yuǎn)程硬件設(shè)備?;蛘?,I/O請(qǐng)求可以不是針對(duì)硬件設(shè)備的。而是,I/O請(qǐng)求可針對(duì) 能夠使用創(chuàng)建文件命令訪問(wèn)的對(duì)象,所述創(chuàng)建文件命令包含但不限于管道、通信資源、磁盤(pán) 設(shè)備、控制臺(tái)、郵件插槽(mail slot)等等。因此,圖3所示的計(jì)算設(shè)備300的組件應(yīng)該被 構(gòu)建為示例性的而非限制性的。圖4是被設(shè)計(jì)成聚集多個(gè)反病毒軟件應(yīng)用程序的知識(shí)庫(kù)的一個(gè)示例性方法400的 流程圖。概括而言,方法400通過(guò)通用信息模型使得反病毒軟件應(yīng)用程序接觸I/O請(qǐng)求。當(dāng) 生成I/O請(qǐng)求時(shí),方法400確定是否需要由安裝在計(jì)算設(shè)備上的一個(gè)或多個(gè)反病毒軟件應(yīng) 用程序掃描。當(dāng)需要掃描時(shí),方法400標(biāo)識(shí)出對(duì)所生成類型的I/O請(qǐng)求感興趣的反病毒軟 件應(yīng)用程序。一個(gè)或多個(gè)反病毒軟件應(yīng)用程序會(huì)通過(guò)通用信息模型執(zhí)行掃描以便確定惡意 軟件是否與I/O請(qǐng)求相關(guān)聯(lián)。繼續(xù)參考圖1-3和所附的描述,現(xiàn)在將描述圖4中所示的聚 集多個(gè)反病毒軟件應(yīng)用程序的知識(shí)庫(kù)的示例性方法400。在判決框402處,方法400保持空閑并等待一般由諸如I/O系統(tǒng)302 (圖3)等操 作系統(tǒng)的內(nèi)核模式組件接收到的I/O請(qǐng)求。如本領(lǐng)域的技術(shù)人員所理解的,會(huì)通過(guò)多種不 同的機(jī)制生成I/O請(qǐng)求。例如,文字處理程序的用戶會(huì)從下拉菜單或其他基于圖形的輸入 系統(tǒng)發(fā)出“打開(kāi)文件”命令。為了滿足“打開(kāi)文件”命令,文字處理程序會(huì)發(fā)出要求從存儲(chǔ)設(shè) 備獲取文件數(shù)據(jù)的API調(diào)用。作為另一例子,Web瀏覽器程序的用戶會(huì)發(fā)出從遠(yuǎn)程計(jì)算機(jī)下載文件的命令。為了滿足該命令,Web瀏覽器程序會(huì)發(fā)出將數(shù)據(jù)流存儲(chǔ)在諸如I/O設(shè)備 304(圖3)等硬件設(shè)備的API調(diào)用。當(dāng)生成I/O請(qǐng)求時(shí),I/O系統(tǒng)302與硬件設(shè)備交互以滿 足請(qǐng)求。然而,方法400在I/O系統(tǒng)302滿足I/O請(qǐng)求之前截取I/O請(qǐng)求,以防止對(duì)惡意軟 件的執(zhí)行和/或傳播。在判決框404處,方法400確定在框402處接收到的I/O請(qǐng)求是否是創(chuàng)建新文件 的命令??稍诳?02處截取的一種類型的I/O請(qǐng)求會(huì)創(chuàng)建新文件。這種類型的請(qǐng)求不能使 計(jì)算設(shè)備受到惡意軟件的影響。如以下在框422處所述,對(duì)創(chuàng)建新文件命令的請(qǐng)求的處理 不同于方法400接收到的其他I/O請(qǐng)求。創(chuàng)建新文件的請(qǐng)求會(huì)使用多個(gè)可以從新型操作系 統(tǒng)獲取的不同命令中的一個(gè)生成。例如,在Windows 操作系統(tǒng)的環(huán)境下,會(huì)使用被特別設(shè) 計(jì)成創(chuàng)建新文件的API來(lái)創(chuàng)建新文件,諸如“CreateFile”API?;蛘撸谀承┣闆r下會(huì)使用 諸如打開(kāi)、覆蓋和代替API等其他API來(lái)創(chuàng)建新文件。如果在框404處接收到的請(qǐng)求是創(chuàng) 建新文件的命令,那么方法400前進(jìn)到下述的框422?;蛘撸绻?qǐng)求不是創(chuàng)建新文件的命 令,那么方法400前進(jìn)到框406。在判決框406,方法400確定在框402處截取的I/O請(qǐng)求是否可能使得計(jì)算設(shè)備受 到惡意軟件的影響。如本領(lǐng)域和其他領(lǐng)域的技術(shù)人員所公知的,某些I/O請(qǐng)求不具有使得 計(jì)算設(shè)備受到惡意軟件的影響的可能性。例如,如果I/O請(qǐng)求是“打開(kāi)文件”命令且特定文 件不包含任何數(shù)據(jù),那么滿足該命令不會(huì)使得計(jì)算設(shè)備受到惡意軟件的影響。類似地,在框 402處接收到的I/O請(qǐng)求可以是打開(kāi)或關(guān)閉目錄的命令。在這種情況下,I/O請(qǐng)求不會(huì)將計(jì) 算設(shè)備受到惡意軟件的影響。本領(lǐng)域和其他領(lǐng)域的技術(shù)人員會(huì)理解,其他類型的I/O請(qǐng)求 不具有使得計(jì)算設(shè)備受到惡意軟件的影響的可能性。因此,上述例子應(yīng)該被構(gòu)建為示例性 的而非限制性的。如果在框402處接收到的請(qǐng)求不具有使得計(jì)算設(shè)備受到惡意軟件的影響 的可能性,那么方法400前進(jìn)到下述的框426?;蛘?,如果在框402處接收到的請(qǐng)求不具有 使得計(jì)算設(shè)備受到惡意軟件的影響的可能性,那么方法400前進(jìn)到框408。在框408處,方法400查詢數(shù)據(jù)庫(kù),諸如掃描高速緩存318,并且標(biāo)識(shí)出作為框402 處接收到的I/O請(qǐng)求的對(duì)象的文件狀態(tài)。如下面將詳細(xì)描述的,當(dāng)一個(gè)或多個(gè)反病毒軟件 應(yīng)用程序掃描文件以查找惡意軟件時(shí),一變量與文件相關(guān)聯(lián)。該變量表示三個(gè)可能的狀態(tài) 之一包括⑴已知惡意軟件,(2)已知好的或(3)未知。為了說(shuō)明起見(jiàn)且僅舉例而言,圖5示出了示例性掃描高速緩存318的內(nèi)容。如所 示的,掃描高速緩存318由三個(gè)列組成,每個(gè)包括多個(gè)條目。這些列被標(biāo)識(shí)為文件索引502、 第一比特504和第二比特506。文件索引502字段包含用于唯一地標(biāo)識(shí)文件的值。如本領(lǐng) 域和其他領(lǐng)域的技術(shù)人員所公知的,存儲(chǔ)設(shè)備一般被分為成為卷的邏輯單元。每個(gè)卷具有 一中央位置,有關(guān)卷上文件的信息被存儲(chǔ)在所述的中央位置中。例如,Windows NT文件系 統(tǒng)(“NTFS”)維護(hù)主文件表(“MFT”),該MFT對(duì)卷上的每個(gè)文件包含一記錄。當(dāng)創(chuàng)建文 件時(shí),文件的記錄存儲(chǔ)在MFT中,并且分配預(yù)定量的空間以存儲(chǔ)文件屬性。例如,向每個(gè)文 件分配唯一的文件索引以表示MFT中的文件位置。如下文將詳細(xì)描述的,當(dāng)一個(gè)或多個(gè)反 病毒軟件應(yīng)用程序依照本發(fā)明掃描文件時(shí),MFT中與文件相關(guān)聯(lián)的索引值被輸入到索引高 速緩存318的文件索引502字段中。第一比特504和第二比特506字段各自存儲(chǔ)一值,共 同地標(biāo)識(shí)文件的狀態(tài)。例如,第一比特504和第二比特506字段都含有為“0”或“1”的值。 在本發(fā)明的一個(gè)實(shí)施例中,如果第一比特504字段包含“1”而第二比特506字段包含“0”,那么文件的狀態(tài)是“已知惡意軟件”。或者,如果第一比特504字段包含“0”而第二比特506 字段包含“1”,那么文件的狀態(tài)是“已知好的”。同樣,如果第一比特504字段包含“0”而第 二比特506字段包含“0”,那么文件的狀態(tài)是“未知”。雖然圖5示出了具有特定屬性的掃 描高速緩存318,但本領(lǐng)域的技術(shù)人員會(huì)理解,掃描高速緩存318可以帶有多于或少于所有 所列屬性操作。跟蹤文件狀態(tài)的常規(guī)技術(shù)與掃描高速緩存318相比是易于出錯(cuò)且資源密集型的。 例如,跟蹤文件是否感染惡意軟件的一種公知技術(shù)使用散列表。當(dāng)截取I/O請(qǐng)求時(shí),會(huì)使用 基于字符串的文件名作為散列關(guān)鍵字來(lái)搜索散列表。然而,文件名稱不總是唯一地標(biāo)識(shí)文 件。例如,當(dāng)用戶創(chuàng)建“鏈接”以引用文件時(shí),文件會(huì)與一個(gè)或多個(gè)文件名相關(guān)聯(lián)。在這種 情況下,散列表對(duì)同一文件會(huì)包含多個(gè)條目。結(jié)果是,當(dāng)文件被兩個(gè)或多個(gè)文件名引用時(shí), 反病毒軟件應(yīng)用程序會(huì)執(zhí)行不必要的掃描。如上所述,掃描高速緩存318使用從MFT獲取 的唯一文件索引來(lái)標(biāo)識(shí)文件以防止發(fā)生重復(fù)的掃描。同樣,與從位圖查詢比特相比計(jì)算散 列關(guān)鍵字或搜索基于字符串的文件名是資源密集型的。例如,散列表一般消耗足夠的存儲(chǔ) 空間,使得散列表中的條目最終被刪除以容納新的文件。然而,掃描高速緩存318中的條目 需要十分少量的存儲(chǔ)空間,使得無(wú)需刪除條目來(lái)容納新的條目。如上所述,掃描高速緩存318會(huì)與其他系統(tǒng)結(jié)合使用以跟蹤一個(gè)或多個(gè)文件的狀 態(tài)。僅舉例而言,掃描高速緩存318可以與以下應(yīng)用程序結(jié)合來(lái)實(shí)現(xiàn)(1) “備份”應(yīng)用程 序,用于對(duì)于文件在第二硬件設(shè)備上的存儲(chǔ)而跟蹤文件的狀態(tài),(2)加密/解密應(yīng)用程序, 用于跟蹤文件是否被加密,(3)以及內(nèi)容過(guò)濾應(yīng)用程序,用于跟蹤文件是否包含不適當(dāng)?shù)膬?nèi) 容。如本領(lǐng)域和其他領(lǐng)域的技術(shù)人員所公知的,用于存儲(chǔ)附加數(shù)據(jù)的比特會(huì)被加到掃描高 速緩存318中,以便容納這些類型的系統(tǒng)的需求。返回到圖4,在判決框410處,方法400確定與文件相關(guān)聯(lián)的狀態(tài)是否是“已知好 的”或沒(méi)有感染惡意軟件。在本發(fā)明的示例性實(shí)施例中,對(duì)于文件是否為“已知好的”的確定 是通過(guò)分析包含在數(shù)據(jù)庫(kù)中的數(shù)據(jù)作出的,該數(shù)據(jù)諸如包含在掃描高速緩存318中的比特 信息。由于可使用本領(lǐng)域一般公知的技術(shù)來(lái)查詢數(shù)據(jù)庫(kù)和分析與文件索引相關(guān)聯(lián)的信息, 這里不提供本領(lǐng)域所使用的技術(shù)的描述。如果文件被標(biāo)識(shí)為“已知好的”,方法400前進(jìn)到 下述的框426?;蛘撸绻募c不同于“已知好的”的狀態(tài)相關(guān)聯(lián),那么方法400前進(jìn)到框 412。在判決框412處,方法400確定與文件相關(guān)聯(lián)的狀態(tài)是否為“已知惡意軟件”。類 似于文件被標(biāo)識(shí)為“已知好的”的情況,文件是否為“已知惡意軟件”的確定是通過(guò)分析包 含數(shù)據(jù)庫(kù)中的數(shù)據(jù),諸如包含在掃描高速緩存318中的比特信息來(lái)作出的。如果文件狀態(tài) 被標(biāo)識(shí)為“已知惡意軟件”,方法400前進(jìn)到下述的框428?;蛘?,如果文件與未知狀態(tài)相關(guān) 聯(lián),方法400前進(jìn)到框414。在框414處,方法400向在用戶模式中執(zhí)行的反病毒軟件應(yīng)用程序提供對(duì)文件數(shù) 據(jù)的訪問(wèn)。如果到達(dá)了框414,那么與文件相關(guān)聯(lián)的狀態(tài)是“未知”,且方法400會(huì)使得一個(gè) 或多個(gè)反病毒軟件應(yīng)用程序掃描作為在框402處截取的I/O請(qǐng)求的對(duì)象的文件。本發(fā)明向 反病毒軟件應(yīng)用程序提供了訪問(wèn)文件數(shù)據(jù)的有效方法,使得可以快速地執(zhí)行對(duì)惡意軟件的 掃描。以下參考圖6描述向反病毒軟件應(yīng)用程序提供對(duì)文件數(shù)據(jù)的訪問(wèn)的方法的一個(gè)實(shí)施 例。
在框416處,方法400選擇將對(duì)文件執(zhí)行掃描的反病毒軟件應(yīng)用程序,該文件是在 框402處截取的I/O請(qǐng)求的對(duì)象。如先前參考圖3所述,本發(fā)明的各方面允許反病毒軟件 應(yīng)用程序注冊(cè)和創(chuàng)建掃描概況。掃描概況定義反病毒軟件應(yīng)用程序“感興趣”的I/O請(qǐng)求。 方法400檢查安裝在計(jì)算設(shè)備上的反病毒軟件應(yīng)用程序的掃描概況,從而選擇對(duì)所截取的 I/O請(qǐng)求“感興趣”的反病毒軟件應(yīng)用程序。在框418處,方法400使得所選的反病毒軟件應(yīng)用程序掃描數(shù)據(jù)并確定作為在框 402處接收到的I/O請(qǐng)求的對(duì)象的文件否是被感染了惡意軟件。如上所述,當(dāng)確定是否存在 感染時(shí),反病毒軟件應(yīng)用程序一般將數(shù)據(jù)模式與惡意軟件“簽名”進(jìn)行匹配。然而,反病毒 軟件應(yīng)用程序越來(lái)越多地使用主動(dòng)的惡意軟件檢測(cè)技術(shù)。例如,一些反病毒應(yīng)用程序通過(guò) 使得數(shù)據(jù)在虛擬操作環(huán)境內(nèi)“執(zhí)行”來(lái)模擬程序動(dòng)作。如果檢測(cè)到在虛擬操作環(huán)境中誤用 /濫用資源,那么反病毒軟件應(yīng)用程序確定文件感染了惡意軟件。在任何情況下,在框418 處,所選反病毒軟件應(yīng)用程序獲取文件數(shù)據(jù)并執(zhí)行動(dòng)作以確定文件數(shù)據(jù)是否感染了惡意軟 件。如以下將參考圖6詳細(xì)描述的,會(huì)使用對(duì)經(jīng)注冊(cè)的反病毒軟件應(yīng)用程序可用的通用信 息模型來(lái)獲取文件數(shù)據(jù)。除了確定是否存在惡意軟件感染外,反病毒軟件應(yīng)用程序會(huì)在框418處執(zhí)行糾正 動(dòng)作。如本領(lǐng)域和其他領(lǐng)域的技術(shù)人員所公知的,新型的反病毒軟件應(yīng)用程序會(huì)能夠刪除 被標(biāo)識(shí)為惡意軟件的數(shù)據(jù)或糾正惡意軟件感染。在框418處刪除惡意軟件的情況下,接著 會(huì)允許所選的反病毒軟件應(yīng)用程序采取糾正措施。因?yàn)槊看螘r(shí)間只能選擇一種反病毒軟件 應(yīng)用程序,所以在框418處所采取的任何糾正動(dòng)作是在存在數(shù)據(jù)沖突的可能性的情況下執(zhí) 行的。換而言之,方法400調(diào)度由反病毒軟件應(yīng)用程序采取的糾正措施相繼發(fā)生,這意味著 數(shù)據(jù)視圖對(duì)于其他反病毒軟件應(yīng)用程序是一致的。在判決框420處,方法400確定是否會(huì)選擇任何其他的反病毒軟件應(yīng)用程序。如 先前所述,方法400可用于聚集多個(gè)反病毒軟件應(yīng)用程序的知識(shí)庫(kù)以便檢測(cè)惡意軟件的存 在。如果將不選擇其他反病毒軟件應(yīng)用程序,那么方法400前進(jìn)到下述的框422。相反,如 果將選擇其他反病毒軟件應(yīng)用程序,那么方法400返回到框416并在框416到420之間反 復(fù)直至所有對(duì)在框402處截取的I/O請(qǐng)求“感興趣”的反病毒軟件應(yīng)用程序能夠執(zhí)行掃描。在框422處,文件的狀態(tài)存儲(chǔ)在諸如掃描高速緩存318等數(shù)據(jù)庫(kù)中。如上所述,在 某些情況下,方法400會(huì)使得反病毒軟件應(yīng)用程序掃描文件并確定文件是否受到感染。在 本發(fā)明的一個(gè)示例性實(shí)施例中,如果一個(gè)或多個(gè)反病毒軟件應(yīng)用程序檢測(cè)到惡意軟件的存 在并不能糾正感染,那么文件在掃描高速緩存318中被標(biāo)記為“已知惡意軟件”。在這個(gè)實(shí) 施例中,如果反病毒軟件應(yīng)用程序毒沒(méi)有檢測(cè)到惡意軟件的存在,那么文件在掃描高速緩 存318中被標(biāo)記為“已知好的”。本領(lǐng)域和其他領(lǐng)域的技術(shù)人員會(huì)理解,存在用于確定文件 是否感染惡意軟件的其他可能的實(shí)施例。例如,在文件在掃描高速緩存318中被標(biāo)識(shí)為“已 知惡意軟件”時(shí),方法400會(huì)要求安裝在計(jì)算設(shè)備上的大部分反病毒軟件應(yīng)用程序檢測(cè)惡意 軟件。更一般地,方法400會(huì)被實(shí)現(xiàn)成為由反病毒軟件應(yīng)用程序生成的結(jié)果組計(jì)算加權(quán)值 的系統(tǒng)。在這種情況下,加權(quán)值超過(guò)了閾值,那么文件在掃描高速緩存318中被標(biāo)記為“已 知惡意軟件”。因?yàn)榛趶膽?yīng)用程序接收到的輸入計(jì)算加權(quán)值的系統(tǒng)一般在本領(lǐng)域是公知 的,這里不提供對(duì)這些系統(tǒng)的進(jìn)一步描述。如上所述在框404處,在框402處截取的I/O請(qǐng)求可以是創(chuàng)建新文件的命令。在這種情況下,可以滿足命令而不會(huì)使計(jì)算設(shè)備受到惡意軟件的影響。在框422處,作為命令 主題的文件狀態(tài)在掃描高速緩存318中被標(biāo)識(shí)為“已知好的”。如上所述在框408處,在本 發(fā)明的一個(gè)實(shí)施例中,從MFT獲取唯一的文件索引值,并用于在掃描高速緩存318中標(biāo)識(shí)文 件。然而,當(dāng)從計(jì)算設(shè)備刪除文件時(shí),MFT會(huì)將與所刪除的文件相關(guān)聯(lián)的文件索引值重新分 配給新的文件。當(dāng)文件被刪除時(shí),本發(fā)明不會(huì)改變記錄在掃描高速緩存318中的文件狀態(tài)。 而是,當(dāng)接收到創(chuàng)建新文件的命令時(shí),本方法簡(jiǎn)單地用作為命令對(duì)象的文件的狀態(tài)覆蓋已 刪除文件的狀態(tài)。如上所述,方法400使得文件的狀態(tài)存儲(chǔ)在諸如掃描高速緩存318等數(shù)據(jù)庫(kù)中。在 某些情況下,會(huì)在框422處執(zhí)行其他管理程序以使得掃描高速緩存318能夠適應(yīng)文件系統(tǒng) 中的增長(zhǎng)。例如,在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)I/O請(qǐng)求針對(duì)沒(méi)有在掃描高速緩存318中維 護(hù)條目的先前未標(biāo)識(shí)的文件,就創(chuàng)建較大的掃描高速緩存。較小的掃描高速緩存318的內(nèi) 容與先前未標(biāo)識(shí)的文件的狀態(tài)一起被復(fù)制到較大掃描高速緩存。這個(gè)實(shí)施例的優(yōu)化使得分 配給掃描高速緩存318的存儲(chǔ)器為仍然是I/O請(qǐng)求的對(duì)象的其他文件按照高于容納先前未 標(biāo)識(shí)的文件所需的最小值預(yù)定百分比增長(zhǎng)。在判決框424處,方法400確定與文件相關(guān)聯(lián)的狀態(tài)是否是“已知惡意軟件”。當(dāng) 截取創(chuàng)建新文件的命令或一個(gè)或多個(gè)反病毒軟件應(yīng)用程序掃描具有“未知”狀態(tài)的文件時(shí), 方法400到達(dá)框424處。在任一情況下,與文件相關(guān)聯(lián)的狀態(tài)存儲(chǔ)在諸如掃描高速緩存318 等數(shù)據(jù)庫(kù)中。因此,在框424處確定文件是否感染惡意軟件是通過(guò)調(diào)用先前存儲(chǔ)的數(shù)據(jù)作 出的。如果文件狀態(tài)被標(biāo)識(shí)為惡意軟件,那么方法400前進(jìn)到下述的框428?;蛘撸绻?件沒(méi)有被標(biāo)識(shí)為惡意軟件,那么方法400前進(jìn)到框426。在框426處,方法400將程序執(zhí)行返回到諸如I/O系統(tǒng)302 (圖3)等操作系統(tǒng)組 件。如上所述,方法400在滿足I/O請(qǐng)求之前截取I/O請(qǐng)求,以防止執(zhí)行和/或傳播惡意軟 件。如果到達(dá)框426,那么在框402處截取的I/O請(qǐng)求或者不能用惡意軟件感染計(jì)算設(shè)備, 或者涉及由在安裝在計(jì)算設(shè)備上的反病毒軟件應(yīng)用程序掃描和標(biāo)識(shí)為非惡意軟件。在任一 情況下,滿足I/O請(qǐng)求不會(huì)導(dǎo)致執(zhí)行和/或傳播惡意軟件。因此,在程序執(zhí)行返回到I/O系 統(tǒng)302后,依照現(xiàn)有技術(shù)滿足I/O請(qǐng)求。接著,方法400前進(jìn)到框430,并在該處結(jié)束。在框428,方法400將程序執(zhí)行返回到諸如I/O系統(tǒng)302等操作系統(tǒng)組件。然而, 如果到達(dá)框428,在框402處截取的I/O請(qǐng)求會(huì)導(dǎo)致執(zhí)行和/或傳播惡意軟件。因此在程序 執(zhí)行返回到I/O系統(tǒng)302之后,I/O請(qǐng)求失敗并將惡意軟件感染通知計(jì)算機(jī)用戶。接著方 法400前進(jìn)到框430,并在該處結(jié)束。本發(fā)明的實(shí)現(xiàn)不限于圖4中所示的示例性方法400。例如,方法400被圖解為具有 分立的開(kāi)始和結(jié)束。然而,在本發(fā)明的實(shí)際實(shí)施例中,I/O請(qǐng)求在連續(xù)過(guò)程中被截取。當(dāng)存 在足夠的信息以認(rèn)為I/O請(qǐng)求會(huì)導(dǎo)致執(zhí)行和/或傳播惡意軟件時(shí),方法400會(huì)接著使得1/ 0請(qǐng)求失敗。同樣,本發(fā)明不限于以上提供的例子。例如,方法400主要在掃描文件數(shù)據(jù)的 環(huán)境中描述。然而,本領(lǐng)域的技術(shù)人員會(huì)理解,方法400可用于掃描其他數(shù)據(jù)單元而不背離 本發(fā)明的范圍。圖6是可以與以上參考圖4所描述的方法400結(jié)合使用以便以高度優(yōu)化的方式向 反病毒軟件應(yīng)用程序提供對(duì)文件數(shù)據(jù)的訪問(wèn)的一個(gè)示例性訪問(wèn)方法600的流程圖。概括而 言,方法600包括創(chuàng)建一個(gè)或多個(gè)反病毒軟件應(yīng)用程序用以執(zhí)行掃描的部分對(duì)象。接著向與反病毒軟件應(yīng)用程序交互的用戶模式應(yīng)用程序提供訪問(wèn)部分對(duì)象所需的信息。最后,創(chuàng) 建部分對(duì)象的視圖,以允許一個(gè)或多個(gè)反病毒軟件應(yīng)用程序執(zhí)行基本的文件系統(tǒng)操作。繼 續(xù)參考圖1-5和所附描述,現(xiàn)在將描述圖6中所示的示例性訪問(wèn)方法600。在判決框602處,訪問(wèn)方法600保持空閑直至接收到掃描請(qǐng)求。如上所述,安全服 務(wù)應(yīng)用程序314(圖3)用作到安裝在計(jì)算設(shè)備300上的反病毒軟件應(yīng)用程序的接口。反 病毒軟件應(yīng)用程序會(huì)創(chuàng)建定義反病毒軟件應(yīng)用程序執(zhí)行掃描的環(huán)境的掃描概況。在框602 處,安全服務(wù)應(yīng)用程序314(圖3)從反病毒軟件應(yīng)用程序接收掃描請(qǐng)求。因?yàn)榭梢允褂帽?領(lǐng)域中一般公知的技術(shù)來(lái)實(shí)現(xiàn)兩種用戶模式應(yīng)用程序之間請(qǐng)求的通信,因此這里將不提供 這些技術(shù)的進(jìn)一步描述。在框604處,創(chuàng)建一個(gè)或多個(gè)反病毒軟件應(yīng)用程序?qū)呙璧奈募牟糠謱?duì)象。如 本領(lǐng)域和其他領(lǐng)域的技術(shù)人員所公知的,部分對(duì)象允許內(nèi)核和用戶模式應(yīng)用程序共享數(shù) 據(jù)。在本發(fā)明的一個(gè)示例性實(shí)施例中,安全服務(wù)應(yīng)用程序314向通用安全過(guò)濾器316作出 請(qǐng)求,以創(chuàng)建將被掃描的文件的部分對(duì)象。如圖2所示,在創(chuàng)建文件映射部分對(duì)象之前,操 作系統(tǒng)104從用戶模式轉(zhuǎn)移到內(nèi)核模式。更具體地,在用戶模式中執(zhí)行的安全服務(wù)應(yīng)用程 序314向在內(nèi)核模式中執(zhí)行的通用安全過(guò)濾器316作出請(qǐng)求之后,操作系統(tǒng)104從用戶模 式轉(zhuǎn)移到內(nèi)核模式。當(dāng)完成到內(nèi)核模式的轉(zhuǎn)移時(shí),通用安全過(guò)濾器316通過(guò)標(biāo)識(shí)要掃描的 文件和調(diào)用創(chuàng)建文件映射部分對(duì)象的函數(shù)來(lái)響應(yīng)請(qǐng)求。在框606處,訪問(wèn)要掃描的文件所需的信息對(duì)用戶模式應(yīng)用程序可用。更具體地, 在框604處創(chuàng)建的文件映射部分對(duì)象由通用安全過(guò)濾器316插入到安全服務(wù)應(yīng)用程序314 的對(duì)象表中。如本領(lǐng)域和其他領(lǐng)域的技術(shù)人員所公知的,新型的操作系統(tǒng)一般在預(yù)定域內(nèi) 執(zhí)行程序。例如,在一些操作系統(tǒng)中,程序只能訪問(wèn)對(duì)稱為對(duì)象表的程序唯一的數(shù)據(jù)結(jié)構(gòu)中 引用的對(duì)象。通過(guò)將在框604處創(chuàng)建的部分對(duì)象插入到域安全服務(wù)應(yīng)用程序314相關(guān)聯(lián)的 對(duì)象表中,在框604處創(chuàng)建的部分對(duì)象對(duì)安全服務(wù)應(yīng)用程序314可用。如圖2所示,在將文 件映射部分對(duì)象插入到安全服務(wù)應(yīng)用程序314的對(duì)象表中后,操作系統(tǒng)105從內(nèi)核模式轉(zhuǎn) 移到用戶模式。在判決框608處,訪問(wèn)方法600保持空閑并等待反病毒軟件應(yīng)用程序請(qǐng)求文件數(shù) 據(jù)。如上所述,當(dāng)I/O操作被截取時(shí),一個(gè)或多個(gè)反病毒軟件應(yīng)用程序會(huì)與通用信息模型交 互以調(diào)度掃描。為了完成掃描,反病毒軟件應(yīng)用程序會(huì)需要執(zhí)行基本文件系統(tǒng)操作。例如, 一般地,反病毒軟件應(yīng)用程序會(huì)“讀出”文件數(shù)據(jù)并將數(shù)據(jù)與已知惡意軟件簽名進(jìn)行比較。 依照本發(fā)明,反病毒軟件應(yīng)用程序能夠使用對(duì)向安全服務(wù)應(yīng)用程序314注冊(cè)的應(yīng)用程序可 用的通用信息模型來(lái)執(zhí)行基本文件系統(tǒng)操作。在本發(fā)明的一個(gè)實(shí)施例中,通用信息模型對(duì) 以API組形式注冊(cè)的應(yīng)用程序可用。在任一情況下,在判決框608處,訪問(wèn)方法600保持空 閑并等待反病毒軟件請(qǐng)求文件數(shù)據(jù)。在判決框610處,訪問(wèn)方法600確定要掃描的文件的視圖是否需要映射到安全服 務(wù)應(yīng)用程序314的存儲(chǔ)空間中。為了完成對(duì)安全服務(wù)應(yīng)用程序314的虛擬地址空間的有效 使用,尤其對(duì)于唯一文件可能同時(shí)發(fā)生的多次掃描,文件的“視圖”會(huì)被映射到應(yīng)用程序的 存儲(chǔ)空間中,以便允許應(yīng)用程序訪問(wèn)部分的文件數(shù)據(jù)。因?yàn)樗械奈募?shù)據(jù)不能同時(shí)被載 入到應(yīng)用程序的存儲(chǔ)器空間中,所以當(dāng)請(qǐng)求當(dāng)前視圖沒(méi)有的數(shù)據(jù)時(shí)映射新的視圖。如果不 能從安全服務(wù)應(yīng)用程序314的存儲(chǔ)空間中映射的視圖獲取在框608處請(qǐng)求的數(shù)據(jù),那么訪
13問(wèn)方法600方法確定需要映射新的視圖并前進(jìn)到框612。相反,如果可以從映射到安全服務(wù) 應(yīng)用程序314的存儲(chǔ)空間中的視圖獲取在框608處請(qǐng)求的數(shù)據(jù),那么訪問(wèn)方法600前進(jìn)到 下述的框614處。在框612處,映射在框604處創(chuàng)建的部分對(duì)象的視圖,允許諸如安全服務(wù)應(yīng)用程 序314等用戶模式應(yīng)用程序滿足對(duì)文件數(shù)據(jù)的請(qǐng)求。安全服務(wù)應(yīng)用程序314獲取由通用安 全過(guò)濾器316提供的數(shù)據(jù),該通用安全過(guò)濾器316標(biāo)識(shí)將掃描的文件。如果在安全服務(wù)應(yīng) 用程序314的存儲(chǔ)空間中已經(jīng)映射了視圖,那么訪問(wèn)方法600向操作系統(tǒng)104作出API調(diào) 用以刪除當(dāng)前的視圖。接著,安全服務(wù)應(yīng)用程序314向操作系統(tǒng)104作出另一 API調(diào)用以 映射新的視圖。在響應(yīng)中,操作系統(tǒng)104為可以從中訪問(wèn)所請(qǐng)求數(shù)據(jù)的文件映射視圖。在 Windows 操作系統(tǒng)的環(huán)境中,會(huì)使用 “MapViewOfFile () ”和 “UPMapViewOfFile () ” API 將 文件映射入和出應(yīng)用程序的存儲(chǔ)空間。然而,這里所提供的例子應(yīng)該被構(gòu)建為示例性的而 非限制性的。在框614處,當(dāng)發(fā)生請(qǐng)求時(shí),在框608處請(qǐng)求的數(shù)據(jù)被傳送到反病毒軟件應(yīng)用程 序。當(dāng)所需的視圖被映射(在框612處)到安全服務(wù)應(yīng)用程序314的存儲(chǔ)空間中時(shí),系統(tǒng) 能夠使用本領(lǐng)域中一般公知的方法將數(shù)據(jù)發(fā)送到做出請(qǐng)求的反病毒軟件應(yīng)用程序。在判決框616處,訪問(wèn)方法600確定生成在框602處接收到的掃描請(qǐng)求的反病毒 軟件應(yīng)用程序是否完成了訪問(wèn)文件數(shù)據(jù)。如上所述,安全服務(wù)應(yīng)用程序314通過(guò)將一組基 本的文件系統(tǒng)操作提供給安裝在計(jì)算設(shè)備上的反病毒軟件應(yīng)用程序用作接口。當(dāng)反病毒軟 件應(yīng)用程序完成掃描文件時(shí),應(yīng)用程序通知安全服務(wù)應(yīng)用程序314掃描已完成,且訪問(wèn)方 法600前進(jìn)到框618,并在此處結(jié)束。相反,如果反病毒軟件應(yīng)用程序沒(méi)有完成掃描文件并 繼續(xù)訪問(wèn)文件數(shù)據(jù),那么訪問(wèn)方法600返回到框608到616,直至反病毒軟件應(yīng)用程序完成 掃描文件。訪問(wèn)方法600會(huì)與其他系統(tǒng)結(jié)合使用,以為執(zhí)行基本文件系統(tǒng)操作提供非??焖?的方式。僅通過(guò)示例,訪問(wèn)方法600可以與以下應(yīng)用程序結(jié)合實(shí)現(xiàn)(1)加密/解密應(yīng)用程 序,用于讀出文件和寫(xiě)入文件,以及(2)內(nèi)容過(guò)濾應(yīng)用程序,用于讀出文件數(shù)據(jù)并確定文件 數(shù)據(jù)是否含有不適當(dāng)?shù)馁Y料。然而,由于訪問(wèn)方法600可以由任何類型的應(yīng)用程序使用以 執(zhí)行基本文件系統(tǒng)操作,因此這里所提供的例子應(yīng)該被構(gòu)建為說(shuō)明性的而非限制性的。雖然示出和描述了本發(fā)明的優(yōu)選實(shí)施例,應(yīng)該理解,可以對(duì)它們作出各種修改非 不背離本發(fā)明的精神和范圍。
權(quán)利要求
一種在包括用戶模式應(yīng)用程序、內(nèi)核模式應(yīng)用程序和文件的計(jì)算設(shè)備中的計(jì)算機(jī)實(shí)現(xiàn)方法,用于向所述用戶模式應(yīng)用程序提供對(duì)所述文件中的數(shù)據(jù)的訪問(wèn),所述方法包括(a)為所述用戶模式應(yīng)用程序創(chuàng)建接口;(b)使所述內(nèi)核模式應(yīng)用程序創(chuàng)建文件映射部分對(duì)象;(c)向所述接口提供訪問(wèn)所述文件映射部分對(duì)象所需的信息;以及(d)創(chuàng)建所述文件的視圖。
2.如權(quán)利要求1所述的方法,其特征在于,還包括響應(yīng)于請(qǐng)求,發(fā)送文件數(shù)據(jù)給所述用 戶模式應(yīng)用程序,其中,所述請(qǐng)求是作為應(yīng)用程序接口調(diào)用作出的。
3.如權(quán)利要求2所述的方法,其特征在于,所述用戶模式應(yīng)用程序獲取對(duì)文件數(shù)據(jù)的 訪問(wèn)而沒(méi)有數(shù)據(jù)沖突。
4.如權(quán)利要求1所述的方法,其特征在于,所述用戶模式應(yīng)用程序是反病毒軟件應(yīng)用 程序。
5.如權(quán)利要求4所述的方法,其特征在于,所述接口允許所述反病毒軟件應(yīng)用程序創(chuàng) 建掃描概況。
6.如權(quán)利要求5所述的方法,其特征在于,所述掃描概況定義當(dāng)所述反病毒軟件應(yīng)用 程序?qū)⒆x出所述文件中的數(shù)據(jù)時(shí)的情況。
7.如權(quán)利要求5所述的方法,其特征在于,所述掃描概況定義當(dāng)所述反病毒軟件應(yīng)用 程序?yàn)樗鲇?jì)算設(shè)備去除惡意軟件感染時(shí)的情況。
8.如權(quán)利要求4所述的方法,其特征在于,所述反病毒軟件應(yīng)用程序?qū)⑺鑫募械?數(shù)據(jù)與惡意軟件的簽名特征進(jìn)行比較。
9.如權(quán)利要求1所述的方法,其特征在于,使所述內(nèi)核模式應(yīng)用程序創(chuàng)建文件映射部 分對(duì)象包括向操作系統(tǒng)作出應(yīng)用程序接口調(diào)用。
10.如權(quán)利要求9所述的方法,其特征在于,向所述接口提供訪問(wèn)所述文件映射部分對(duì) 象所需的信息包括將所述部分對(duì)象插入到與所述接口相關(guān)聯(lián)的對(duì)象表中。
11.如權(quán)利要求1所述的方法,其特征在于,創(chuàng)建所述文件的視圖包括刪除對(duì)所述接口 可用的存儲(chǔ)空間中的當(dāng)前視圖。
全文摘要
依照本發(fā)明,提供了聚集多個(gè)反病毒軟件應(yīng)用程序的知識(shí)庫(kù)的系統(tǒng)、方法和計(jì)算機(jī)可讀介質(zhì)。諸如反病毒軟件應(yīng)用程序等用戶模式應(yīng)用程序通過(guò)通用信息模型獲取對(duì)文件系統(tǒng)操作的訪問(wèn),這免除了反病毒軟件供應(yīng)商創(chuàng)建內(nèi)核模式過(guò)濾器的需求。當(dāng)文件系統(tǒng)操作對(duì)反病毒軟件應(yīng)用程序可用時(shí),本發(fā)明會(huì)使得每個(gè)安裝在計(jì)算設(shè)備上的反病毒軟件應(yīng)用程序執(zhí)行掃描以便確定數(shù)據(jù)是否是惡意軟件。
文檔編號(hào)G06F21/56GK101894225SQ20101012926
公開(kāi)日2010年11月24日 申請(qǐng)日期2005年9月30日 優(yōu)先權(quán)日2004年11月8日
發(fā)明者A·F·托馬斯, A·M·馬瑞尼斯庫(kù), D·A·戈貝爾, M·科斯蒂亞 申請(qǐng)人:微軟公司