專利名稱:線程截取和分析的制作方法
線程截取和分析
扭旦 冃眾
構(gòu)建可靠且安全的計算機系統(tǒng)的重要挑戰(zhàn)是管理系統(tǒng)的持續(xù)狀態(tài)(PS),
這包括所有可執(zhí)行文件、配置設(shè)置以及管控系統(tǒng)如何運作的其他數(shù)據(jù)。誤配置
和其他PS問題是范圍從個人臺式機到大規(guī)模因特網(wǎng)服務(wù)的各種系統(tǒng)上的故障 和安全易受攻擊性的主要原因。PS問題以及由諸如硬件組件和編程邏輯等系
統(tǒng)元件的故障引起的問題可能有害地影響整個系統(tǒng)。
無法有效管理系統(tǒng)的PS的代價是高昂的。例如,PS問題可在系統(tǒng)重新引
導(dǎo)或應(yīng)用程序重新啟動之后復(fù)制自己。在這樣的情形中,如果已知問題標識失
敗,且如果隨后的系統(tǒng)重新引導(dǎo)/應(yīng)用程序重新啟動不能修復(fù)PS問題,則沒有 選擇而只能手動檢查系統(tǒng)來標識PS中的根本原因項。
手動調(diào)査系統(tǒng)以標識PS中的根本原因項由于大量潛在問題會是困難且昂
貴的。例如,可能影響發(fā)生故障的應(yīng)用程序的潛在項目的集合是巨大的,且因 此潛在根本原因列表可包括系統(tǒng)上項目的完整集合。
概述
提供本概述以介紹與將在以下詳細描述中進一步描述的線程截取和分析 有關(guān)的簡化概念。本概述并不旨在標識所要求保護的主題的本質(zhì)特征,也不旨 在用于幫助確定所要求保護的主題的范圍。
公開了用于截取和分析線程的裝置和方法。在一個實施例中,將線程數(shù)據(jù) 記錄器配置成通過修改功能中的計算機可執(zhí)行指令以截取調(diào)用功能的線程來
操縱(instrument) —個或多個現(xiàn)有功能。在一個可能的實現(xiàn)中,所操縱的現(xiàn)有 功能的數(shù)目可通過操縱瓶頸功能來減少。
當(dāng)線程在功能處執(zhí)行時,所操縱的功能也可捕捉與線程相關(guān)聯(lián)的數(shù)據(jù)。可 將該數(shù)據(jù)保存到存儲器,并將其壓縮到日志中。在一個方面中,當(dāng)正在以預(yù)定 水平或低于預(yù)定水平使用處理器資源時可保存和/或壓縮數(shù)據(jù)。所捕捉的數(shù)據(jù)可
用于分析計算機系統(tǒng)中使用線程的功能。 附圖簡述
參考附圖描述詳細描述。在附圖中,參考標號中最左邊的數(shù)字標識該參考 標號首次出現(xiàn)的附圖。在各附圖中,使用相同的標號來指示相同的特征和組件。
圖1示出了其中生成一個或多個線程的示例性網(wǎng)絡(luò)環(huán)境。 圖2示出了用于截取線程以及捕捉與線程相關(guān)聯(lián)的數(shù)據(jù)的示例性體系結(jié)構(gòu)。
圖3示出了用于截取線程以及捕捉與線程相關(guān)聯(lián)的數(shù)據(jù)的示例性基于計 算的設(shè)備。
圖4示出了事件塊的示例性邏輯表示。
圖5示出了事件塊集合的示例性物理表示。
圖6示出了示例性收集服務(wù)器。 圖7示出了示例性分析服務(wù)器。
圖8示出了一個或多個活動猝發(fā)(burst)的示例性表示。
圖9示出了用于截取線程以及捕捉與線程相關(guān)聯(lián)的數(shù)據(jù)的示例性方法。
圖10示出了用于將規(guī)范化的事件添加到有序事件流的示例性方法。
圖ll示出了用于檢測漏出條目的示例性方法。
圖12示出了用于檢測常見誤配置的示例性方法。
圖13示出了用于檢測一個或多個可擴展性點的示例性方法。
圖14示出了用于分析一個或多個活動猝發(fā)的示例性方法。
圖15示出了用于禁止未經(jīng)授權(quán)的交互的執(zhí)行的示例性方法。
圖16示出了用于檢測流氓程序的示例性方法。
圖17示出了示例性計算機環(huán)境。
詳細描述
描述了線程的截取和分析,其中各實施例供通過從程序執(zhí)行線程收集數(shù)據(jù) 來分析計算機系統(tǒng)的功能之用。程序執(zhí)行線程可包括系統(tǒng)中執(zhí)行來自給定程序
的代碼的任何線程。
線程可包括處理器上的執(zhí)行路徑,且線程可與硬件、來自虛擬機(VM)
實現(xiàn)的管理程序中的執(zhí)行路徑、單線程系統(tǒng)(諸如傳統(tǒng)的UnixOs系統(tǒng))、多 線程OS等相關(guān)聯(lián)。在一個示例性實現(xiàn)中,程序線程或由OS自己所擁有的線 程可執(zhí)行來自另一程序的代碼。線程的收集和/或跟蹤可不考慮線程的所有者或 創(chuàng)建者而進行。
在一個實現(xiàn)中,操縱系統(tǒng)的一個或多個操作層中的選擇功能以包括發(fā)起對 調(diào)用選擇功能的線程的截取的計算機可讀指令。計算機可讀指令也可發(fā)起收集 與調(diào)用功能的線程相關(guān)聯(lián)的數(shù)據(jù)。該數(shù)據(jù)可包括與線程相關(guān)聯(lián)的進程/程序、與 線程相關(guān)聯(lián)的用戶、與線程相關(guān)聯(lián)的時戳、與線程相關(guān)聯(lián)的交互、整個系統(tǒng)的 狀態(tài)等的細節(jié)。
數(shù)據(jù)可用于若干用途。例如,可檢查與線程相關(guān)聯(lián)的數(shù)據(jù)來驗證正由線程 發(fā)起的交互根據(jù)設(shè)定的策略是合法的。在另一實現(xiàn)中,所收集的數(shù)據(jù)可被壓縮、 存儲并稍后進行分析以離析計算機系統(tǒng)中錯誤行為或故障可能的原因。
在另一可能的實施例中,所收集的數(shù)據(jù)可通過將相關(guān)交互的收集歸組成活 動猝發(fā)并比較與類似屬性相關(guān)聯(lián)的活動猝發(fā)來分析。在一個實現(xiàn)中,與類似交 互相關(guān)聯(lián)的活動猝發(fā)可與所收集的數(shù)據(jù)相關(guān)聯(lián)的活動猝發(fā)進行比較。在又一實 現(xiàn)中,與所收集的數(shù)據(jù)相關(guān)聯(lián)的活動猝發(fā)也可與專用于一個或多個用戶的交互 進行比較。類似地,在另一可能的實現(xiàn)中,可向與不當(dāng)交互相關(guān)聯(lián)的活動猝發(fā) 分派簽名,從而使計算機系統(tǒng)能快速識別并禁止這樣的交互。而且,活動猝發(fā) 可用于沿任何維度,包括時間、用戶、程序等標識相關(guān)活動的簇。
盡管用于線程截取和分析的所述系統(tǒng)和方法的各方面可用任何數(shù)目的不 同計算系統(tǒng)、環(huán)境或配置實現(xiàn),但在以下示例性系統(tǒng)體系結(jié)構(gòu)的上下文中描述 線程截取和分析的實施例。
示例性系統(tǒng)
圖1示出了其中可截取并分析線程的示例性計算機系統(tǒng)100。計算機系統(tǒng) 100包括中央基于計算的設(shè)備102,其他基于計算的設(shè)備104(a)-(n)以及收集服 務(wù)器106。中央基于計算的設(shè)備102、基于計算的設(shè)備104(a)-(n)以及收集服務(wù) 器106可包括個人計算機(PC) 、 web服務(wù)器、電子郵件服務(wù)器、家庭娛樂設(shè) 備、游戲控制臺、機頂盒以及本領(lǐng)域中己知的任何其他基于計算的設(shè)備。
而且,計算機系統(tǒng)100可包括任何數(shù)目的基于計算的設(shè)備102、 104(a)-(n)。 例如,在一個實現(xiàn)中,計算機系統(tǒng)100可以是公司網(wǎng)絡(luò),包括遍及若干國家的 數(shù)千臺辦公室PC、各種服務(wù)器以及任何其他基于計算的設(shè)備。或者,在另一 可能的實現(xiàn)中,系統(tǒng)100可包括具有屬于單個家庭的有限數(shù)目的PC的家庭網(wǎng) 絡(luò)。
基于計算的設(shè)備102、 104(a)-(n)可通過有線和/或無線網(wǎng)絡(luò),包括LAN、 WAN或任何其他本領(lǐng)域已知的聯(lián)網(wǎng)技術(shù)按照各種組合彼此耦合。
基于計算的設(shè)備102、 104(a)-(n)也可分別包括線程數(shù)據(jù)記錄器(a)-(n),它 們能夠操縱系統(tǒng)IOO中的功能以截取線程。操縱功能可包括在功能中修改、添 加和/或刪除計算機可讀指令以截取調(diào)用該功能的線程。在一個可能的實現(xiàn)中, 操縱功能也可包括在功能中修改、添加和/或刪除計算機可讀指令以要求線程 執(zhí)行功能中允許捕捉與線程相關(guān)聯(lián)的數(shù)據(jù)的計算機可讀指令,這些數(shù)據(jù)包括線 程與之相關(guān)聯(lián)的程序、與線程相關(guān)聯(lián)的一個或多個交互、線程與之相關(guān)聯(lián)的程 序的用戶、與線程中的每一交互相關(guān)聯(lián)的時戳等。
在又一實現(xiàn)中,線程數(shù)據(jù)記錄器108(a)-(n)也可用于監(jiān)視由虛擬機(VM) 解釋的代碼。VM包括解釋正在VM上運行的代碼而非將執(zhí)行用代碼發(fā)送給一 個或多個處理器的可編程功能。由VM解釋的代碼可由線程數(shù)據(jù)記錄器 108(a)-(n)監(jiān)視以標識要截取的功能。在截取時,線程數(shù)據(jù)記錄器108(a)-(n)可 檢查和/或記錄在VM上運行的系統(tǒng)的狀態(tài)。這種檢查和記錄可與代碼的二進 制修改等效。二進制修改可成為VM的一部分而不需要對任何正在運行的軟件 進行修改。
所操縱的功能可包括可由程序/進程調(diào)用的任何功能。在一個實現(xiàn)中,所 操縱的功能可包括低級瓶頸功能,諸如文件系統(tǒng)驅(qū)動程序、注冊表功能、創(chuàng)建 新進程和/或服務(wù)的功能等。
從線程捕捉的數(shù)據(jù)可被存儲和/或處理以管制系統(tǒng)100的行為以及調(diào)查系 統(tǒng)100的狀況??捎删€程數(shù)據(jù)記錄器108(a)-(n)從線程捕捉的數(shù)據(jù)的類型以及 線程數(shù)據(jù)記錄器108(a)-(n)的操作將在以下結(jié)合圖2更詳細地討論。
在示例性計算機系統(tǒng)100中,每一基于計算的設(shè)備102、 104(a)-(n)均包括 線程數(shù)據(jù)記錄器108。然而可以理解,線程數(shù)據(jù)記錄器108(a)-(n)可被包括在基
于計算的設(shè)備102、 104(a)-(n)的任何組合上。例如,在一個實現(xiàn)中,計算系統(tǒng) 100中的單個基于計算的設(shè)備102、 104(a)-(n)可包括線程數(shù)據(jù)記錄器108?;?者,在另一可能的實現(xiàn)中,若干所選的基于計算的設(shè)備102、 104(a)-(n)可包括 線程數(shù)據(jù)記錄器108。
從功能捕捉的數(shù)據(jù)可在線程數(shù)據(jù)記錄器108內(nèi)處理,或者它可被發(fā)送到另 一設(shè)備,諸如收集服務(wù)器106以便保存、處理和/或分析。收集服務(wù)器106的操 作將在以下結(jié)合圖6更詳細地討論。圖1示出了收集服務(wù)器106被耦合至基于 計算的設(shè)備102。然而,也可理解,收集服務(wù)器106可被耦合至一個或多個基 于計算的設(shè)備104(a)-(n)。而且,計算系統(tǒng)100中可存在其他收集服務(wù)器106, 且基于計算的設(shè)備102、 104(a)-(n)的任何組合被耦合至一個或多個收集服務(wù)器 106。
或者,可以理解,基于計算的設(shè)備102、 104(a)-(n)可通過其他基于計算的 設(shè)備102、 104(a)-(n)來耦合至一個或多個收集服務(wù)器106。例如,在一個示例 性實現(xiàn)中,由線程數(shù)據(jù)記錄器108(b)接收的數(shù)據(jù)可經(jīng)由基于計算的設(shè)備102發(fā) 送給收集服務(wù)器106,在那里數(shù)據(jù)可被收集。以類似方式,來自線程數(shù)據(jù)記錄 器(cHn)的數(shù)據(jù)可被發(fā)送給收集服務(wù)器106并在那里被收集。
圖2示出了一個或多個基于計算的設(shè)備102、 104(a)-(n)中各操作層的示例 性體系結(jié)構(gòu)200。操作層不必與一個或多個基于計算的設(shè)備102、 104(a)-(n)正 在執(zhí)行的程序的功能直接相關(guān)。相反,操作層僅用作說明以指示線程截取中所 涉及的各個階段。所考慮的各層可以是通過軟件或物理硬件實現(xiàn)的單獨的邏輯 或物理平臺。
體系結(jié)構(gòu)200包括程序?qū)?02、中間軟件層204和操作系統(tǒng)層206。在所 示體系結(jié)構(gòu)200的示例性實現(xiàn)中,線程數(shù)據(jù)記錄器108在操作系統(tǒng)層106內(nèi)操 作。然而,也可理解,線程數(shù)據(jù)記錄器108可存在于體系結(jié)構(gòu)200的其他層中。 例如,線程數(shù)據(jù)記錄器108可在不同的時間存在于層202、 204、 206的一個或 多個中。另外,線程數(shù)據(jù)記錄器108可同時存在于層202、 204、 206的一個或 多個中。以此方式,線程的截取可在任何層202、 204、 206完成。在又一實現(xiàn) 中,操作系統(tǒng)層206也可運行在虛擬機(VM)中,從而允許捕捉與VM相關(guān) 聯(lián)的操作層中的數(shù)據(jù)。在這樣的情形中,與VM相關(guān)聯(lián)的該操作層可以是除層
202、 204和206以外的層。
在一個示例性實現(xiàn)中,線程數(shù)據(jù)記錄器108通過截取來自一個或多個程序 的線程來捕捉與該一個或多個程序(諸如應(yīng)用程序、操作系統(tǒng)等)同文件系統(tǒng) 208之間的交互相關(guān)聯(lián)的數(shù)據(jù)。文件系統(tǒng)208可例如包括文件,諸如數(shù)據(jù)文件、
可執(zhí)行文件、設(shè)置信息(諸如配置設(shè)置)等。
如上結(jié)合圖1所述,每一基于計算的設(shè)備102、 104(a)-(n)均可包括線程數(shù) 據(jù)記錄器108?;蛘?,線程數(shù)據(jù)記錄器108可被包括在基于計算的設(shè)備102、 104(a)-(n)的任何組合上。
程序?qū)?02可包括運行在體系結(jié)構(gòu)200中的一個或多個程序,諸如應(yīng)用程 序。程序?qū)?02提供一個平臺以供一個或多個程序在它們自己之間交互以及執(zhí) 行與應(yīng)用程序進程相關(guān)聯(lián)的通用應(yīng)用程序服務(wù)。可運行在程序?qū)?02上的應(yīng)用 程序的某些可能示例包括字處理應(yīng)用程序、電子表應(yīng)用程序、郵件應(yīng)用程序等。
運行在程序?qū)?02上的一個或多個程序可在一個或多個操作的執(zhí)行期間 與文件系統(tǒng)208中的數(shù)據(jù)和/或設(shè)置交互。操作或交互的可能示例包括讀、寫和 執(zhí)行在文件系統(tǒng)208進行的操作,包括文件系統(tǒng)208中文件和注冊表設(shè)置的改 變。
程序?qū)?02、中間軟件層204、操作系統(tǒng)206和文件系統(tǒng)208之間的交互 可通過由在程序?qū)?02內(nèi)運行的程序所生成的線程來進行。執(zhí)行一個或多個任 務(wù)的每個程序具有因其執(zhí)行而生成的至少一個線程,諸如與程序的MAIN函數(shù) 相關(guān)聯(lián)的線程。線程允許程序?qū)⑵渥陨聿鸱殖蓛蓚€或多個同時運行的任務(wù)。這 些任務(wù)例如可與生成該線程的程序的執(zhí)行相關(guān)聯(lián)。或者,任務(wù)可與程序和其他 應(yīng)用程序之間導(dǎo)致與文件系統(tǒng)208的交互的通信(諸如當(dāng)配置設(shè)置被改變時) 相關(guān)聯(lián)。
可以理解,可捕捉與諸如系統(tǒng)100的系統(tǒng)中的任何線程相關(guān)聯(lián)的信息。例 如,與在任一操作層上生成的線程的執(zhí)行相關(guān)聯(lián)的信息可被截取并被收集以供 將來分析。這例如可包括與操作系統(tǒng)相關(guān)聯(lián)的調(diào)入程序的代碼的線程。
各個線程可指示一個或多個程序與文件系統(tǒng)208之間的各個交互。每一線 程隨其攜帶定義對該交互唯一的屬性的數(shù)據(jù)。例如,屬性可包括啟動交互的程 序的身份、當(dāng)前函數(shù)序列中嵌套函數(shù)的棧等。對與文件系統(tǒng)208的每一交互,
在程序?qū)?02中生成的線程通過中間軟件層204發(fā)送給操作系統(tǒng)層206。
中間軟件層204包括被稱為中間軟件的計算機軟件,它將在程序?qū)?02 中運行的軟件組件和/或程序連接至操作系統(tǒng)層206。中間軟件層204在程序?qū)?202和操作系統(tǒng)層206之間提供居間操作層,且中間軟件可支持復(fù)雜、分布式 應(yīng)用程序。中間軟件的某些可能的示例包括web服務(wù)器、應(yīng)用程序服務(wù)器、內(nèi) 容管理系統(tǒng)以及支持應(yīng)用程序開發(fā)、傳遞等的類似工具。
操作系統(tǒng)層206用作程序與文件系統(tǒng)208的數(shù)據(jù)和/或設(shè)置之間的接口。 操作系統(tǒng)層206也可監(jiān)督與文件系統(tǒng)208中數(shù)據(jù)和/或設(shè)置的任何交互。而且, 操作系統(tǒng)層206可為運行在程序?qū)?02中的一個或多個程序的執(zhí)行提供運行時 環(huán)境。
如上所述,操作系統(tǒng)層206也可包括線程數(shù)據(jù)記錄器108。線程數(shù)據(jù)記錄 器108被配置成實現(xiàn)對與運行在程序?qū)?02上的一個或多個程序與文件系統(tǒng) 208之間的交互相關(guān)聯(lián)的線程的截取。線程數(shù)據(jù)記錄器108也可被配置成影響 與線程相關(guān)聯(lián)的信息的捕捉。
例如,在一個實現(xiàn)中,在初始化系統(tǒng)100之后,線程數(shù)據(jù)記錄器108操縱 運行在系統(tǒng)IOO上的選擇功能以截取調(diào)用該功能的線程。也可操縱功能來捕捉 與線程相關(guān)聯(lián)的數(shù)據(jù),包括程序?qū)?02中每一線程與之相關(guān)聯(lián)的程序的身份、 與每一線程相關(guān)聯(lián)的交互、每一線程與之相關(guān)聯(lián)的程序的用戶、與線程中的每 一交互相關(guān)聯(lián)的時戳等。在一個可能的實現(xiàn)中,由操作系統(tǒng)層206中的線程數(shù) 據(jù)記錄器108捕捉的數(shù)據(jù)是按照操作系統(tǒng)層206本機的可編程語言的。在又一 實現(xiàn)中,與在任一操作層上生成的線程的執(zhí)行相關(guān)聯(lián)的信息可被截取并被收集 以供將來分析。在另一可能的實現(xiàn)中,線程數(shù)據(jù)記錄器108也可捕捉與VM上 程序代碼的執(zhí)行相關(guān)聯(lián)的數(shù)據(jù)。
線程數(shù)據(jù)記錄器108也可操縱運行在任一層202、 204、 206中的功能以截 取調(diào)用該功能的線程并從線程捕捉數(shù)據(jù)。例如,為跟蹤持續(xù)狀態(tài)(PS)交互, 可操縱檢索和設(shè)置PS所涉及的最低層中的功能。在圖3中,最低層被示為操 作系統(tǒng)層206。然而,最低層也有可能包括諸如虛擬機層的各層,這些層可用 硬件、軟件、固件等實現(xiàn)。
在最低級或?qū)咏厝≌{(diào)用功能的線程使得能夠覆蓋運行在系統(tǒng)100中的所
有程序。而且,要在最低層操縱的功能可在瓶頸功能中選擇,它們通常為其他 功能,諸如文件系統(tǒng)功能、注冊表功能、創(chuàng)建新進程或服務(wù)的功能等所依賴。 以此方式,可減少必須操縱的功能的數(shù)目。
或者,較高層204、 202中的功能可由線程數(shù)據(jù)記錄器108操縱。例如, 如果期望跟蹤哪些web瀏覽器正在訪問哪些網(wǎng)站,則可操縱線程所調(diào)用的較高 層中的功能。例如,通過操縱程序?qū)?02中的功能,可從與web瀏覽器相關(guān)聯(lián) 的線程捕捉包括該web瀏覽器所請求的URL和窗口的數(shù)據(jù)。
與之相反,在諸如操作系統(tǒng)層206的較低層,與諸如層202、 204的較高 層相比,可用上下文較少。作為結(jié)果,可能更難以通過從較低層截取線程來重 構(gòu)邏輯高層交互,諸如用戶意圖。
例如,在較低層截取的線程——諸如正由諸如計算機的設(shè)備發(fā)送或接收的 IP分組可能不能提供足夠的信息來推斷web瀏覽器正在打開URL。這是因為 可能提供這些分組均與web瀏覽器的HTTP數(shù)據(jù)流相關(guān)的上下文不可用。在沒 有這樣的上下文信息的情況下,可能難以在系統(tǒng)的各動作——諸如在給定時間 將特定的IP分組發(fā)送到目的地——與web瀏覽器的用戶之間建立關(guān)系。
圖3示出了基于計算的設(shè)備102、 104(a)-(n)中至少一個的示例性體系結(jié)構(gòu) 300。體系結(jié)構(gòu)300包括一個或多個處理器302和存儲器304。處理器302例如 包括微處理器、微機、微控制器、數(shù)字信號處理器、中央處理單元、狀態(tài)機、 邏輯電路和/或基于操作指令操作信號的任何設(shè)備。處理器302被配置成取回存 儲在存儲器304中的計算機可讀指令并執(zhí)行該指令并具有其他能力。
存儲器304可包括本領(lǐng)域已知的任何計算機可讀介質(zhì),例如包括易失性存 儲器(例如RAM)和/或非易失性存儲器(例如,閃存等)。如圖3中所示, 存儲器304也可包括程序306和數(shù)據(jù)308。程序306例如包括線程數(shù)據(jù)記錄器 108、壓縮模塊310、用戶端口監(jiān)控程序(daemon) 312、操作系統(tǒng)314和其他 應(yīng)用程序316,諸如字處理應(yīng)用程序、電子表應(yīng)用程序等。
如上結(jié)合圖2所述,線程數(shù)據(jù)記錄器108操縱所選功能并從一個或多個操 作層202、 204、 206中截取的調(diào)用所操縱功能的線程捕捉數(shù)據(jù)。所捕捉的數(shù)據(jù) 可用于分析基于計算的設(shè)備102、104(a)-(n)是其中一部分的計算機系統(tǒng)的功能。 在另一可能的實現(xiàn)中,線程數(shù)據(jù)記錄器108也可捕捉與VM上的程序代碼的執(zhí)
行相關(guān)聯(lián)的數(shù)據(jù)。
線程數(shù)據(jù)記錄器108包括復(fù)制模塊318和指導(dǎo)模塊320。在一個實現(xiàn)中, 線程數(shù)據(jù)記錄器108通過勾連到功能中來操縱現(xiàn)有的功能。在一個示例性的方 面中,復(fù)制模塊318被勾連到現(xiàn)有的功能中。復(fù)制模塊318可包括可在線程在 功能處執(zhí)行時通過調(diào)用線程來執(zhí)行的計算機可讀指令。與復(fù)制模塊318相關(guān)聯(lián) 的計算機可讀指令可也將數(shù)據(jù)復(fù)制到共享存儲器作為事件。
例如, 一旦線程調(diào)用所操縱的功能,且線程由所操縱的功能截取,與線程 相關(guān)聯(lián)的數(shù)據(jù)就可被捕捉并由復(fù)制模塊318復(fù)制。與線程相關(guān)聯(lián)的數(shù)據(jù)可包括 表征線程與功能之間的交互的數(shù)據(jù),或與生成線程的動作相關(guān)聯(lián)的數(shù)據(jù)。例如, 數(shù)據(jù)可表征與線程相關(guān)聯(lián)的交互、功能被調(diào)用時系統(tǒng)100的狀態(tài)等。數(shù)據(jù)也可 以是與文件、串、存儲器位置、與文件相關(guān)聯(lián)的文件名、用戶ID、線程ID、 交互類型、生成線程的程序、交互的執(zhí)行時間、交互的完成時間等相關(guān)聯(lián)的信 息。
線程數(shù)據(jù)記錄器108可在緩沖存儲器322中存儲所捕捉和/或所復(fù)制的數(shù) 據(jù)作為事件分組324。緩沖存儲器322可包括本領(lǐng)域中已知的任何計算機可讀 介質(zhì),例如包括易失性存儲器(例如,RAM)或非易失性存儲器(例如,閃存 和本領(lǐng)域中已知的其他類型的存儲器)或其組合。盡管被示為駐留在數(shù)據(jù)308 中,但也可理解,緩沖存儲器322可駐留在數(shù)據(jù)308之外,諸如在存儲器304 中。另外,在一個實現(xiàn)中,緩沖存儲器322也位于基于計算的設(shè)備102、 104(a)-(n) 之外。
在一個可能的實現(xiàn)中,缺乏提供諸如文件名等標識的屬性的所拷貝的數(shù)據(jù) 可通過線程數(shù)據(jù)記錄器108與唯一標識符相關(guān)聯(lián)。這樣的唯一標識符可例如包 括句柄。例如,可通過標識來自同一線程的同一句柄的其他事件,然后將與該 句柄相關(guān)聯(lián)的名字拷貝到缺少提供事件的標識的屬性的事件來修補缺乏該屬 性的事件。
線程數(shù)據(jù)記錄器108中的指導(dǎo)模塊320指導(dǎo)用戶端口監(jiān)控程序312實現(xiàn)在 緩沖存儲器322中收集的事件分組324的壓縮。為此,用戶端口監(jiān)控程序312 指導(dǎo)壓縮模塊310將事件分組324壓縮到可被存儲在塊存儲328中的事件塊 326。塊存儲328可包括一個或多個事件塊326。
用戶端口監(jiān)控程序312是不通過用戶的直接干預(yù)啟動和結(jié)束的進程。在一
個實現(xiàn)中,用戶端口監(jiān)控程序312是服務(wù)。在另一實現(xiàn)中,用戶端口監(jiān)控程序 312可被包括在虛擬機(VM)的可編程指令及其相關(guān)聯(lián)的操作層內(nèi)。在又一 實現(xiàn)中,用戶端口監(jiān)控程序312可被實現(xiàn)在諸如操作系統(tǒng)314的操作系統(tǒng)的內(nèi) 核中。
用戶端口監(jiān)控程序312可被編程以在達到緩沖存儲器322的某一存儲器容 量之后實現(xiàn)事件分組324的壓縮。在另一實現(xiàn)中,用戶端口監(jiān)控程序312可被 編程以周期性地實現(xiàn)事件分組324的壓縮。在又一可能的實現(xiàn)中,用戶端口監(jiān) 控程序312可實現(xiàn)將緩沖存儲器322中的事件分組324壓縮成預(yù)定大小的一個 或多個事件塊326。
在另一可能的實現(xiàn)中,用戶端口監(jiān)控程序312可周期性地實現(xiàn)將事件塊 326發(fā)送給收集服務(wù)器106。在再一可能的實現(xiàn)中,用戶端口監(jiān)控程序312位 于基于計算的設(shè)備102、 104(a)-(n)之外。例如,置于外部的用戶端口監(jiān)視程序 312可被包括在虛擬機(VM)的可編程指令及其相關(guān)聯(lián)的操作層內(nèi)。
用戶端口監(jiān)控程序312例如也可按照線程數(shù)據(jù)記錄器108、收集服務(wù)器106 等的任一個或全部所提供的輸入管理其自己的操作。另外,用戶端口監(jiān)控程序 312可被配置成在處理資源沒有被其他程序使用時或在正以預(yù)定活動水平或低 于預(yù)定活動水平使用處理資源時執(zhí)行其任一個或全部功能。而且,用戶端口監(jiān) 控程序312可被配置成在一個或多個專用處理器上執(zhí)行其任一個或全部功能。 在一個實現(xiàn)中,這可包括專用于用戶端口監(jiān)控程序312的一個或多個專用處理器。
線程數(shù)據(jù)記錄器108可通過基于事件分組324中相同或相似的屬性將事件 分組324歸組成事件塊326來準備存儲在塊存儲328中的事件塊326。例如, 可形成包括緩沖存儲器322中與特定的字處理程序相關(guān)聯(lián)的所有事件分組324 的事件塊326?;蛘撸诹硪豢赡艿膶崿F(xiàn)中,可形成包括緩沖存儲器322中與 特定的用戶ID相關(guān)聯(lián)的所有事件分組324的事件塊326。
事件塊326是包括與在所操縱的功能處截取的線程相關(guān)聯(lián)的信息的分立 單元。與線程相關(guān)聯(lián)的信息可包括與系統(tǒng)IOO的功能有關(guān)的信息。
在一個可能的實現(xiàn)中,與線程相關(guān)聯(lián)的信息被組織到塊存儲328中以實現(xiàn)
信息的可搜索集合。這樣的信息的可搜索集合——諸如事件塊326的有組織的 集合——可被稱為日志。事件塊326和塊存儲328的結(jié)構(gòu)將在以下結(jié)合圖4和 5更詳細地說明。
另外,盡管圖3將線程數(shù)據(jù)記錄器108示為包括復(fù)制模塊318和指導(dǎo)模塊 320,但線程數(shù)據(jù)記錄器318也可可能包括其他程序和元件,諸如壓縮模塊310 和用戶端口監(jiān)視程序312。而且,線程數(shù)據(jù)記錄器108可駐留在程序306中的 其他程序內(nèi)。例如,在一個可能的實現(xiàn)中,線程數(shù)據(jù)記錄器108可以是操作系 統(tǒng)314的一部分。
在圖4中,示出了存儲在塊存儲328中的事件塊326的示例性邏輯表示。 事件塊326的格式可由眾多因素引導(dǎo)。例如,在一個示例性實現(xiàn)中,線程可被 表示為事件的軌跡。事件的軌跡包括表示成兩個或多個并行但連接的數(shù)據(jù)流的 事件信息。
在圖4中給出的示例性邏輯表示中,事件塊326中的事件信息由時戳流 402和有序事件流404表示。時戳流402可包括與交互的編組、所考慮的事件 發(fā)生的時間等有關(guān)的信息。例如,包括在時戳流402中的信息可例如包括生 成與塊326中的事件信息相關(guān)聯(lián)的線程的時間、與塊326中的事件信息相關(guān)聯(lián) 的事件發(fā)生的開始和結(jié)束時間等。
在一個實現(xiàn)中,所考慮的事件發(fā)生的時間被表示為事件ID的表,其中每 一事件ID都是獨特的文件、注冊表、模塊、進程事件等的標識符。這些事件 ID以其被接收的方式排列。在另一實現(xiàn)中,事件可基于其他實體,例如時戳、 具有該時戳的第一事件的偏移量、具有該時戳的最后一事件的偏移量等來排 列。排列事件的方式將結(jié)合圖5進一步討論。
事件塊326中的有序事件流404包括由任一線程數(shù)據(jù)記錄器108截取和復(fù)
制的事件信息。事件信息可包括與交互、啟動交互的應(yīng)用程序等的本質(zhì)有關(guān)的 伶,
I Fl 'S、 o
有序事件流404中的事件信息可被規(guī)范化成獨特持續(xù)狀態(tài)(PS)交互406 中的一個或多個區(qū)段,諸如獨特文件交互408、獨特注冊表交互410、進程表 412、模塊表414和其他交互416。以此方式,持續(xù)狀態(tài)交互406中的事件信息 可基于某些屬性被組織或排列成子部分。獨特PS交互406中交互的每種類型
408-416可被映射到日志文件中的一區(qū)段,諸如事件塊326、塊存儲328或其 組合。諸如包括在獨特PS交互406中的事件信息的映射和規(guī)范化可使用本領(lǐng) 域已知的任何過程來達成。
可使用進程表412來跟蹤進程,包括至啟動進程的可執(zhí)行代碼的路徑(以 及可能可執(zhí)行代碼的散列)以及進程的開始和結(jié)束時間。在一個實現(xiàn)中,進程 表412可包括描述與所考慮的事件相關(guān)聯(lián)的屬性的信息。該信息可例如包括創(chuàng) 建的時間、用戶上下文、映像名(存儲為串)、命令行(存儲為串)、影響事 件的命令行、以在事件發(fā)生時進一步描述系統(tǒng)上下文的各種句柄信息等。
模塊表414可包括定義與導(dǎo)致所考慮事件的程序模塊相關(guān)聯(lián)的一個或多 個設(shè)置的信息。這樣的信息可例如包括存儲在串表中的文件名串、時戳信息、 用戶上下文、對負責(zé)加載程序模塊的線程/進程的引用、至存儲器中程序模塊的 路徑(和/或可執(zhí)行代碼的散列)等。
在一個實現(xiàn)中,模塊表414類似于注冊表或文件。
獨特的文件交互408例如包括與己對文件系統(tǒng)208發(fā)生的一個或多個交互 有關(guān)的信息。獨特的文件交互408可包括與在系統(tǒng)中發(fā)生的所有記入日志的事 件相關(guān)聯(lián)的信息。這樣的交互可包括從運行在程序?qū)?02上的一個或多個應(yīng)用 程序?qū)ξ募到y(tǒng)208的一個或多個讀和/或?qū)戇M程。與獨特文件交互408有關(guān)的 信息的示例包括文件的路徑名、文件名、交互是對文件還是對目錄的、所讀和 /或?qū)懙淖止?jié)數(shù)等。在又一實現(xiàn)中,獨特文件交互408還包括數(shù)據(jù)根據(jù)諸如獨特 的名字、用戶上下文、進程信息、文件數(shù)據(jù)散列和值的事件信息排列的子區(qū)段。 獨特文件交互408中子區(qū)段的示例包括用戶表418、線程表420、串表422、其 他表424等。
獨特注冊表交互410包括指示對運行在任何一個基于計算的設(shè)備102、 104(a)-(n)上的基于計算機的應(yīng)用程序的注冊表設(shè)置的添加或刪除的信息。獨特 注冊表交互410的示例可包括指示注冊表設(shè)置中的改變的信息,這些設(shè)置諸如 注冊表的名字、注冊表的位置、注冊表中的數(shù)據(jù)等。其他類型的交互416包括 與各種其他活動如某些文件的執(zhí)行等相關(guān)聯(lián)的信息。
圖5示出了事件塊集合500的示例性物理布局。事件塊集合500可通過關(guān) 聯(lián)在塊存儲328中找到的一個或多個事件塊326而創(chuàng)建。在一個實現(xiàn)中,壓縮
一個或多個事件塊326以形成事件塊集合500。
事件塊集合500可由用戶端口監(jiān)控程序312、壓縮模塊310、收集服務(wù)器 106或其任何組合創(chuàng)建。而且,事件塊集合500可響應(yīng)于若干刺激創(chuàng)建。例如, 一旦填充了一定量的塊存儲328,就可創(chuàng)建事件塊集合500。或者,在另一可 能的實現(xiàn)中,事件塊集合500可周期性地創(chuàng)建,諸如在經(jīng)過了給定量的時間之 后。
事件塊集合500包括頭部502以及包括一個或多個塊506和塊表508的塊 存儲區(qū)504。塊506可以是事件塊326、壓縮事件塊326或經(jīng)壓縮或未經(jīng)壓縮 的事件塊326的編組。對在塊506中存儲經(jīng)壓縮或未經(jīng)壓縮的塊事件326的存 儲器地址的引用被安排在一個或多個塊表508中以便于快速查找所尋求的事件 及其相關(guān)聯(lián)交互。例如,塊表508可包括事件塊集合500中包括與某一用戶ID 相關(guān)聯(lián)的線程信息的所有塊506的地址。在另一可能的實現(xiàn)中,塊表508可包 括事件塊集合500中所包括的與電子表程序相關(guān)聯(lián)或包括給定時間范圍中的時 戳的所有塊506的存儲器地址。
事件塊集合500中的頭部502還包括描述存儲區(qū)504的內(nèi)容的信息。在一 個實現(xiàn)中,頭部502包括版本信息510、區(qū)段描述符512和塊表描述符514。 版本信息510可包括與事件塊集合500中的改變有關(guān)的信息。例如,版本信息 510可包括與對事件塊集合500的前一版本作出的以達到當(dāng)前事件塊集合500 的改變有關(guān)的信息。
區(qū)段描述符512包括指示存儲器中位置的開頭和結(jié)尾的開始和結(jié)束偏移 量,存儲器諸如是存儲器304和收集服務(wù)器106中的存儲器,其中存儲諸如用 戶表414、線程表416等的元素。這樣的偏移量可通過標志、指針等實現(xiàn)。類 似地,塊表描述符514可包括開始偏移量516和結(jié)束偏移量518,它們分別指 示存儲器中位置的開頭和結(jié)尾,存儲器諸如是存儲器304或集合服務(wù)器106中 的存儲器,其中存儲塊表508。而且,在一個實現(xiàn)中,塊表描述符514內(nèi)的開 始偏移量516和結(jié)束偏移量518指示收集服務(wù)器106中存儲器位置的開頭和結(jié) 尾,其中存儲塊表506。
存儲區(qū)504中的塊表508包括塊條目520。塊條目520包括分別指示存儲 在存儲區(qū)504中的塊506的開始和結(jié)尾的開始偏移量522和結(jié)束偏移量524。
存儲區(qū)504可位于存儲器304或收集服務(wù)器106的存儲器中。
可以理解,事件的時間可用各種方式表示。例如,在一個實現(xiàn)中,可存在 事件ID表,其中每一ID是對獨特文件/注冊表/模塊/進程事件的索引。這些ID 可根據(jù)它們是如何接收的而被定序。這種次序可根據(jù)生成或測量ID的次序而 維護。
也可理解,可維護時戳表。多個事件可具有相同的時戳。這樣,表可以創(chuàng) 建組織信息,諸如(1)時戳;(2)具有該時戳的第一事件的偏移量;以及 (3)具有該時戳的最后一個事件的偏移量。
還可理解,此處結(jié)合圖4和5討論的結(jié)構(gòu)和技術(shù)可用于各種數(shù)據(jù)類型(包 括與線程、各種程序、平臺等相關(guān)聯(lián)的數(shù)據(jù)和命令)且可用于各種不同的應(yīng)用 程序。例如,結(jié)合圖4和5討論的結(jié)構(gòu)和技術(shù)可結(jié)合任意日志的壓縮和査詢改 進使用。而且,在一個示例性實現(xiàn)中,結(jié)合圖4和5討論的結(jié)構(gòu)和技術(shù)可用于 改進跨不同領(lǐng)域的商業(yè)智能,包括web通信量的廣告意識分析。
圖6示出了被配置成存儲、處理和/或分析來自線程數(shù)據(jù)記錄器108的數(shù) 據(jù)的示例性收集服務(wù)器106。收集服務(wù)器106包括一個或多個處理器602和存 儲器604。處理器602例如包括微處理器、微機、微控制器、數(shù)字信號處理 器、中央處理單元、狀態(tài)機、邏輯電路和/或基于操作指令操作信號的任何設(shè)備。 處理器602被配置成取回存儲在存儲器604中的計算機可讀指令并執(zhí)行該指令 并具有其他能力。
存儲器604可以是本領(lǐng)域己知的任何計算機可讀介質(zhì),例如易失性存儲器 (例如RAM)和/或非易失性存儲器(例如,ROM、閃存等)。存儲器604也 可包括程序606和數(shù)據(jù)608。程序606可對與運行在程序?qū)?02上的程序同文 件系統(tǒng)208之間的交互相關(guān)聯(lián)的數(shù)據(jù)執(zhí)行査詢相關(guān)進程以及其他操作。程序 606還例如包括查詢模塊610、操作系統(tǒng)612和其他應(yīng)用程序614。
在操作中,查詢模塊610對由線程數(shù)據(jù)記錄器108收集的信息執(zhí)行基于査 詢的操作,諸如包括在緩沖存儲器322、塊存儲328和/或塊存儲616中的信息。 查詢618可包括多個査詢,諸如預(yù)定義查詢或由系統(tǒng)管理員等一個或多個個體 或?qū)嶓w輸入或編程的查詢。例如,在一個實現(xiàn)中,查詢618可包括檢測與給定 用戶ID相關(guān)聯(lián)的所有交互的指令。在另一個示例性實現(xiàn)中,査詢618可包括
檢測與運行在程序?qū)?02上的應(yīng)用程序相關(guān)聯(lián)的所有交互的指令。
査詢模塊610可將查詢618限于一個或多個屬性。這樣的屬性可包括文件 名、應(yīng)用程序類型、執(zhí)行的時間等。為按屬性限制查詢,査詢模塊610可在塊 存儲328和/或塊存儲616中掃描指示屬性存在性的值。例如,如果個體希望在 塊存儲328和/或塊存儲616中搜索與諸如字處理程序的某一應(yīng)用程序相關(guān)的數(shù) 據(jù),則査詢模塊610通過將査詢618限于在塊存儲328和/或塊存儲616中搜索 與字處理程序相關(guān)聯(lián)的條目或事件來搜索塊存儲328和/或塊存儲616。
在另一可能的實現(xiàn)中,可在査詢618中設(shè)置其他的限制以濾除包括在所檢 索的結(jié)果內(nèi)的數(shù)據(jù),并得到更有選擇性的搜索結(jié)果。例如,査詢618可更復(fù)雜, 且包括定位與某一用戶ID、某一應(yīng)用程序相關(guān)聯(lián)且具有給定范圍內(nèi)的時戳的 所有交互的指令。
在一個示例性實現(xiàn)中,塊存儲616包括與存儲在塊存儲328中的信息相同 的信息。在另一可能的實現(xiàn)中,塊存儲616包括的信息不同于在塊存儲328中 找到的信息。例如,塊存儲可包括從塊存儲328中檢索到的信息,該信息諸如 已通過包括壓縮和組織在內(nèi)的進程更改。而且,査詢模塊610可査詢大批存儲 328和大批存儲616中的任一個或兩者。
由程序606諸如通過由查詢模塊610執(zhí)行的搜索而生成的數(shù)據(jù)可被存儲在 其他數(shù)據(jù)620中。另外,由程序606生成的數(shù)據(jù)可被存儲在緩沖存儲器622、 塊存儲328和/或塊存儲616中。在一個可能的實現(xiàn)中,緩沖存儲器622可位于 收集服務(wù)器106外部。
操作系統(tǒng)612和其他應(yīng)用程序614為收集服務(wù)器106的功能提供計算環(huán) 境。其他應(yīng)用程序614可包括基于計算機的應(yīng)用程序,如驅(qū)動程序等,它們向 收集服務(wù)器106的運行提供擴展的功能。其他應(yīng)用程序614也可包括可結(jié)合査 詢模塊610操作來執(zhí)行如字處理、數(shù)字處理等特定功能或不可以結(jié)合査詢模塊 610操作的應(yīng)用程序。
如上結(jié)合圖1所述,收集服務(wù)器106可存儲與由系統(tǒng)100中一個或多個基 于計算的設(shè)備102、 104(a)-(n)所執(zhí)行的交互有關(guān)的信息。在一個實現(xiàn)中,査詢 模塊610可用來基于從系統(tǒng)100的各個所操縱的功能處所截取的線程捕捉到的 數(shù)據(jù)來分析系統(tǒng)100的操作。查詢模塊610可通過使用來自查詢618的一個或
多個查詢來啟動對塊存儲328和/或塊存儲616的搜索來這樣做。查詢618的執(zhí) 行所生成的結(jié)果可由收集服務(wù)器106或分析服務(wù)器檢索和分析以評定系統(tǒng)100 的性能。以下結(jié)合圖7更詳細討論示例性分析服務(wù)器700。
在另一示例性實現(xiàn)中,查詢模塊610可通過在塊存儲328和/或塊存儲616 中掃描所選區(qū)段來在塊存儲328和/或塊存儲616中進行搜索。塊存儲328和/ 或塊存儲616中的各區(qū)段可包括來自存儲在塊存儲328和/或塊存儲616中并基 于某些屬性組織或排列的事件分組324的規(guī)范化的事件信息。塊存儲328和/ 或塊存儲616中的區(qū)段的示例包括獨特PS交互406。
塊存儲328和/或塊存儲616可分別在數(shù)據(jù)308和/或數(shù)據(jù)608內(nèi)按區(qū)段安 排。例如,與因特網(wǎng)瀏覽器的執(zhí)行有關(guān)的事件信息可與存儲在數(shù)據(jù)308和/或 608內(nèi)的獨特PS交互406中的一區(qū)段相關(guān)聯(lián)。運行在程序?qū)?02上的其他應(yīng) 用程序以及與應(yīng)用程序相關(guān)聯(lián)的事件信息可與數(shù)據(jù)308和/或608中對應(yīng)用程序 唯一的不同區(qū)段相關(guān)聯(lián)。
要由查詢模塊610搜索的區(qū)段,諸如獨特PS交互406可使用査詢618中 的一個或多個屬性來定位。這樣的屬性包括文件名、應(yīng)用程序類型、執(zhí)行的時 間等。例如,如果個體希望在塊存儲328和/或塊存儲616中搜索與關(guān)聯(lián)于電子 表應(yīng)用程序的交互有關(guān)的數(shù)據(jù),則查詢模塊610可通過將查詢618限于對塊存 儲328和/或塊存儲616中包括與電子表應(yīng)用程序的身份相關(guān)聯(lián)的信息的區(qū)段的 第一搜索而在塊存儲328和/或塊存儲616中搜索交互信息。
在另一實現(xiàn)中,查詢模塊610可返回與關(guān)于對特定文件的訪問的交互相關(guān) 聯(lián)的信息。訪問可包括諸如讀寫文件以及執(zhí)行與文件相關(guān)聯(lián)的操作等動作。例 如,查詢模塊610可在塊存儲328或塊存儲616中的串表420中掃描諸如正訪 問的特定文件的文件名、訪問特定文件的應(yīng)用程序等信息。在從串表20獲取 信息,諸如正訪問的特定文件的文件名之后,查詢模塊610可定位對應(yīng)于該文 件名的文件名ID,且査詢模塊610還可掃描獨特PS交互406的區(qū)段以獲取與 該文件名ID相關(guān)聯(lián)的事件信息。
所考慮的與文件名ID相關(guān)聯(lián)的事件信息的實例可指示對具有相應(yīng)文件名 的文件的訪問。因此,由査詢模塊610所生成的結(jié)果可指示對特定文件的所有 訪問。在又一實現(xiàn)中,查詢模塊610可通過査明指定交互發(fā)生的次數(shù)來采集與
特定文件的訪問頻率有關(guān)的信息。
在另一可能的實現(xiàn)中,查詢模塊610可用于檢測漏出文件。漏出文件包括 在創(chuàng)建文件或注冊表設(shè)置的程序被卸載之后留在諸如系統(tǒng)ioo的系統(tǒng)上的文件
或注冊表設(shè)置。為了檢測漏出文件,査詢模塊610將對與加載到系統(tǒng)100上的 每一程序相關(guān)聯(lián)的安裝文件和設(shè)置改變按目錄分類。之后,如果程序被卸載, 則可取消該程序的安裝文件和設(shè)置的相應(yīng)目錄,且可檢査系統(tǒng)IOO來確保移除 或復(fù)位了所有安裝文件和注冊表設(shè)置。
在一個示例性實現(xiàn)中,為了檢測基于計算的設(shè)備102上的漏出文件,查詢 模塊610可通過對基于計算的設(shè)備102運行掃描來檢測諸如應(yīng)用程序等安裝在 基于計算的設(shè)備102上的所有程序以對安裝文件按目錄分類。
査詢模塊610也可獲得在操作系統(tǒng)層206上運行的操作系統(tǒng)314的安裝程 序數(shù)據(jù)庫中注冊的所有程序的列表。安裝程序數(shù)據(jù)庫的示例包括產(chǎn)生安裝在所 考慮的基于計算的設(shè)備上的所有程序的填充列表的組件。
查詢模塊610在塊存儲328和/或塊存儲616中查詢注冊表信息,并枚舉 向操作系統(tǒng)314注冊的程序的列表。査詢模塊610然后可掃描塊存儲328和/ 或塊存儲616,并枚舉安裝在基于計算的設(shè)備102上的所有程序的文件和注冊 表條目。在一個示例性實現(xiàn)中,為了枚舉文件和注冊表條目,查詢模塊610可 査詢與安裝在基于計算的設(shè)備102上的程序相對應(yīng)的程序ID的所有文件和注 冊表條目。
如果基于計算的設(shè)備102上的文件或設(shè)置沒有被包括在與安裝在基于計 算的設(shè)備102上的程序相對應(yīng)的程序ID的文件和注冊表條目中,則查詢模塊 610可推斷該文件或設(shè)置是漏出文件。漏出文件可由査詢模塊610或包括操作 系統(tǒng)314在內(nèi)的各個其他程序來移除。
在另一示例性實現(xiàn)中,査詢模塊610可使用時間范圍來限制查詢。例如, 查詢模塊610可在塊存儲328和/或塊存儲616中査詢在給定開始和結(jié)束時間之 間發(fā)生的所有交互。在一個實現(xiàn)中,査詢模塊610可通過對塊存儲328和/或塊 存儲616中時戳在給定開始和結(jié)束時間之間的所有交互執(zhí)行時戳流404的掃描 來這樣做。
在又一示例性實現(xiàn)中,査詢模塊610可檢測由于改變的文件、設(shè)置或失時
效模塊,包括常見的誤配置、老軟件版本等而失時效的進程。失時效進程例如 在軟件升級無法在替換磁盤上的二進制代碼、文件或設(shè)置之后重啟受影響的進 程時發(fā)生。結(jié)果,其上找到失時效進程的基于計算的設(shè)備將忽略升級并繼續(xù)基 于老的二進制代碼、文件或設(shè)置來執(zhí)行。
為了檢測失時效進程,査詢模塊610可在塊存儲328和/或塊存儲616中 查詢所安裝的軟件的最近一次加載時間。査詢模塊610也可在塊存儲328和/ 或塊存儲616中査詢與所安裝的軟件相關(guān)聯(lián)的文件或注冊表設(shè)置的最近一次加 載時間。在一個示例性實現(xiàn)中,查詢模塊610在塊存儲328和/或塊存儲616 中査詢與隨軟件安裝的軟件關(guān)聯(lián)動態(tài)鏈接庫(DLL)相關(guān)聯(lián)的文件或注冊表設(shè) 置的最近一次加載時間。査詢模塊610也可在塊存儲328和/或塊存儲616中查 詢安裝在基于計算的設(shè)備上的軟件的最近修改的時間或日期。這樣的修改例如 包括對與所安裝軟件的最近已知版本相關(guān)聯(lián)的一個或多個文件或程序設(shè)置執(zhí) 行的訪問。
在軟件的最近一次加載時間晚于軟件最近己知修改的時間或日期時,可能 發(fā)生因軟件沒有利用最近加載的更新而導(dǎo)致的不一致性。這樣的不一致性如果 被査詢模塊610檢測到,則可被諸如系統(tǒng)管理員的個體注意并更正。
在另一可能的實現(xiàn)中,査詢模塊610可檢測己知不當(dāng)程序的出現(xiàn),這包括 諸如惡意軟件、間諜軟件、木馬等軟件應(yīng)用程序。為此,査詢模塊610可在塊 存儲328和/或塊存儲616中査詢并搜索所加載的以便在基于計算的設(shè)備102、 104(a)-(n)中一個或多個的存儲器中執(zhí)行的程序。為在存儲器中執(zhí)行而加載的程 序然后可例如由査詢模塊610針對已知不當(dāng)程序的列表而進行比較。
例如,查詢模塊610可基于與程序相關(guān)聯(lián)的標識符,諸如程序ID等來檢 測為在基于計算的設(shè)備102、 104(a)-(n)上的存儲器中執(zhí)行的程序的出現(xiàn)。查詢 模塊610然后可將加載供在基于計算的設(shè)備102、 104(a)-(n)上的存儲器中執(zhí)行 的程序的標識符相對諸如程序ID等已知不當(dāng)程序的標識符的列表進行比較。 如果加載供在存儲器中執(zhí)行的程序的標識符匹配己知不當(dāng)程序的標識符,則查 詢模塊610可實現(xiàn)從基于計算的設(shè)備102、 104(a)-(n)移除該加載供在存儲器中 執(zhí)行的程序。在一個實現(xiàn)中,已知不當(dāng)程序的標識符的列表可被存儲在其他數(shù) 據(jù)620中。在另一可能的實現(xiàn)中,已知不當(dāng)程序的標識符的列表可至少部分地
由系統(tǒng)管理員輸入。
在另一實現(xiàn)中,可由査詢模塊610檢測出基于計算的設(shè)備102、 104(a)-(n) 上不具有與之相關(guān)聯(lián)的標識符的未經(jīng)標識的程序,并可將其報告給系統(tǒng)管理員 以查明該未經(jīng)標識的程序是否是不當(dāng)程序。系統(tǒng)管理員可通過檢査未經(jīng)標識的 程序的用途、未經(jīng)標識的程序?qū)ζ渌绦虻囊蕾囮P(guān)系等來檢査未經(jīng)標識的程序 的本質(zhì),以確定該未經(jīng)標識的程序是否是不當(dāng)?shù)摹A硗?,系統(tǒng)管理員可審閱對 其特征與這些未經(jīng)標識的程序類似的程序的以往經(jīng)驗來確定未經(jīng)標識的程序 是否是不當(dāng)?shù)摹?br>
如果系統(tǒng)管理員確定未經(jīng)標識的程序是不當(dāng)?shù)?,則系統(tǒng)管理員可實現(xiàn)從基 于計算的設(shè)備102、 104(a)-(n)移除該未經(jīng)標識的程序。例如,系統(tǒng)管理員可移 除未經(jīng)標識的程序自身,或系統(tǒng)管理員可指示基于計算的設(shè)備102、 104(a)-(n) 和收集服務(wù)器106的各元件,包括線程數(shù)據(jù)記錄器108、査詢模塊610等來從 基于計算的設(shè)備102、 104(a)-(n)移除該未經(jīng)標識的程序。
另外,系統(tǒng)管理員可向未經(jīng)標識的程序分派標識符,諸如程序ID,且在 不當(dāng)程序的列表上包括該標識符。這樣,如果未經(jīng)標識的程序出現(xiàn)在基于計算 的設(shè)備102、 104(a)-(n)上,則它可由基于計算的設(shè)備102、 104(a)-(n)和收集服 務(wù)器106的各元件迅速標識為不當(dāng)程序。而且,未經(jīng)標識的程序的移除可由基 于計算的設(shè)備102、 104(a)-(n)和收集服務(wù)器106的各元件來實現(xiàn)。
在又一可能的實現(xiàn)中,査詢模塊610也可檢測可擴展性點(EP) 。 EP是 持續(xù)狀態(tài)中可引起與運行在程序?qū)?02上的程序相關(guān)聯(lián)的指令或與運行在操作 系統(tǒng)層206上的操作系統(tǒng)相關(guān)聯(lián)的指令的動態(tài)加載和執(zhí)行的項目。例如,與第 一程序——諸如字處理程序、電子表應(yīng)用程序等——相關(guān)聯(lián)的直接可擴展性點 例如通過與諸如文件系統(tǒng)208、操作系統(tǒng)層206等元件交互來實現(xiàn)第一程序的 執(zhí)行。
直接可擴展性點可由査詢模塊610檢測。例如,査詢模塊610可通過離析 既(1)屬于在第一程序的執(zhí)行之前加載到系統(tǒng)存儲器中供執(zhí)行的各個程序, 又(2)引用第一程序或與第一程序的運行相關(guān)聯(lián)的交互來檢測直接EP。
在一個示例性實現(xiàn)中,査詢模塊610可通過在塊存儲328和/或塊存儲616 中查詢屬于在第一程序的執(zhí)行之前加載到系統(tǒng)存儲器中供執(zhí)行的各個程序的
交互來標識第一程序的潛在直接EP。例如,查詢模塊610可査詢屬于在第一程
序的執(zhí)行之前的給定時間范圍內(nèi),諸如2秒內(nèi)加載到系統(tǒng)存儲器中供執(zhí)行的各 個程序的交互。査詢模塊610可通過査詢引用第一程序或與第一程序的運行相 關(guān)聯(lián)的交互的潛在EP來根據(jù)潛在EP標識與第一程序相關(guān)聯(lián)的直接EP。在一 個可能的實現(xiàn)中,直接EP可被存儲在緩沖存儲器620中。
除直接可擴展性點以外,也可存在間接可擴展性點。例如,在啟動時,第 一程序也可觸發(fā)與諸如附加程序的第二程序相關(guān)聯(lián)的指令以向第一程序的運 行提供附加功能。與第二程序和/或第一程序相關(guān)聯(lián)的一個或多個間接可擴展性 點可例如通過與可包括第一程序、文件系統(tǒng)208、操作系統(tǒng)層206等在內(nèi)的各 元件交互而實現(xiàn)第二程序的執(zhí)行。查詢模塊610可用于檢測間接EP。在一個 示例性實現(xiàn)中,査詢模塊610可在塊存儲328和/或塊存儲616中查詢與第一程 序和/或第二程序相關(guān)聯(lián)的交互。而且,在一個可能的實現(xiàn)中,間接EP可被存 儲在緩沖存儲器620中。
也可理解,術(shù)語第二程序可包括系統(tǒng)內(nèi)操作的寬泛范圍的程序?;氐揭陨?的示例,第二程序可包括對現(xiàn)有第二程序的附加程序。這樣,第二程序可與第 二程序相關(guān)聯(lián),它們自己可與第二程序相關(guān)聯(lián),依此類推。
此外,可理解術(shù)語間接可擴展性點包括與運行在系統(tǒng)中的各個第二程序的 附加程序相關(guān)聯(lián)的可擴展性點。
在一個實現(xiàn)中,與第一程序、第二程序和文件系統(tǒng)208之間的各個交互相 關(guān)聯(lián)的事件信息可用于估計與第一程序和/或第二程序相關(guān)聯(lián)的其他特征。例 如,與各個交互相關(guān)聯(lián)的事件信息可用于估計由第一程序和/或第二程序所使用 的存儲器量,以及由第一程序和/或第二程序所使用的處理開銷量等。
作為運行第一程序和第二程序的結(jié)果而生成的各個交互可例如由線程數(shù) 據(jù)記錄器108截取和拷貝。與各個交互相關(guān)聯(lián)的事件信息可如上所述存儲在存 儲器304中,諸如在事件分組324和事件塊326中,以及存儲在存儲器604中, 諸如在塊存儲616中。所存儲的事件信息可由諸如系統(tǒng)管理員的實體審閱,以 檢測與第一程序和第二程序相關(guān)聯(lián)的交互。這樣,可檢測與第一程序的運行相
關(guān)聯(lián)的第二程序。
査詢模塊610也可用于通過監(jiān)視直接EP來檢測惡意軟件應(yīng)用程序的存在
性。惡意軟件應(yīng)用程序可包括諸如間諜軟件、木馬、蠕蟲、病毒等應(yīng)用程序, 它們在正常環(huán)境下不與程序相關(guān)聯(lián)。例如,査詢模塊610可將運行在基于計算
的設(shè)備102、 104(a)-(n)上的程序的EP與當(dāng)程序在沒有惡意軟件的情況下在基 于計算的設(shè)備102、 104(a)-(n)上運行時找到的同一程序的控制EP進行比較。 EP和控制EP之間的差異可由諸如査詢模塊610和系統(tǒng)管理員等實體來檢査, 以確定這些差異是否指示結(jié)合程序運行的惡意軟件的存在性。在一個實現(xiàn)中, 使用EP找到的惡意軟件可由査詢模塊610、線程數(shù)據(jù)記錄器108、系統(tǒng)管理員 等從基于計算的設(shè)備102、 104(a)-(n)中移除。
圖7-8示出了由收集服務(wù)器106收集的數(shù)據(jù)可如何使用活動猝發(fā)來分析。 例如,圖7示出了用于對由收集服務(wù)器106收集的數(shù)據(jù)執(zhí)行分析的示例性分析 服務(wù)器700。如將在以下更詳細描述地,在一個示例性實現(xiàn)中,分析服務(wù)器700 通過活動猝發(fā)的分析來分析由收集服務(wù)器106收集的數(shù)據(jù)。
分析服務(wù)器700包括一個或多個處理器702和存儲器704。處理器702例 如包括微處理器、微機、微控制器、數(shù)字信號處理器、中央處理單元、狀態(tài) 機、邏輯電路和/或基于操作指令操作信號的任何設(shè)備。處理器702被配置成取 回存儲在存儲器704中的計算機可讀指令并執(zhí)行該指令并具有其他能力。
存儲器704可以是本領(lǐng)域已知的任何計算機可讀介質(zhì),包括易失性存儲器 (例如RAM)和/或非易失性存儲器(例如,ROM、閃存等)。存儲器704包 括分析模塊706和數(shù)據(jù)708。
在操作中,分析模塊706監(jiān)視系統(tǒng)100中基于計算的設(shè)備102、 104(a)-(n) 的活動,并分析由收集服務(wù)器106收集的數(shù)據(jù)等。由分析模塊706生成的數(shù)據(jù) 或在分析模塊706的執(zhí)行過程期間所需的數(shù)據(jù)被存儲在數(shù)據(jù)708中。系統(tǒng)100 的活動,諸如各個基于計算的設(shè)備102、 104(a)-(n)之中運行在程序?qū)?02上的 程序與文件系統(tǒng)208中的文件和/或設(shè)置之間的交互可通過使用活動猝發(fā)來表 示。
如圖8中所示,活動猝發(fā)800包括一組交互,每一交互由縫隙間隔802 分開。盡管以下的討論將圖8中水平軸上的間隔描述為基于時間的,但可理解 這些間隔以及圖8中的水平軸也可基于其他維度。例如,除包括沿時間維度的 相關(guān)活動簇以外,活動猝發(fā)800也可包括沿其他維度的活動簇(諸如按用戶、
給定程序等對活動編組)。這樣,可找到并調(diào)査沿眾多各種維度的活動猝發(fā)。 回到圖8中所示的實現(xiàn),活動猝發(fā)可包括對應(yīng)于一個或多個線程內(nèi)在時間
上緊密出現(xiàn)的各個交互的活動響應(yīng)804?;顒禹憫?yīng)804對應(yīng)于導(dǎo)致交互的線程 的執(zhí)行中諸如存儲器和處理器的資源的任何使用。交互可生成活動響應(yīng)804的 時間的示例性實例包括由諸如處理器302的處理單元和諸如存儲器304的存儲 器完成處理時,該處理在導(dǎo)致交互的線程的執(zhí)行期間利用。交互可生成活動響 應(yīng)804時間的其他示例性實例包括外圍單元活動時,這些外圍單元包括存儲器 和一個或多個處理器,諸如打印機、掃描儀和用于或結(jié)合基于計算的設(shè)備102、 104(a)-(n)的類似設(shè)備。在圖8中,活動響應(yīng)804的高度對應(yīng)于在活動響應(yīng)804 相關(guān)聯(lián)的線程的執(zhí)行期間基于計算的設(shè)備102、 104(a)-(n)的資源的使用。
活動響應(yīng)804被縫隙間隔802分開,縫隙間隔802比活動猝發(fā)800之間的 不活動間隔806小。在一個實現(xiàn)中,不活動間隔806是活動猝發(fā)800(a)中最后 一個活動響應(yīng)808與相鄰活動猝發(fā)800(b)中第一個活動響應(yīng)810之間的一段時 間。
在一個實現(xiàn)中,縫隙間隔802可以是單個交互發(fā)生所需的時間。而且,在 一個示例性實施例中,活動猝發(fā)800可被定義為一組交互^1^^^,其中 一縫像、/聰fe e"<A:珊絲W, 一縫像娜"〉& 縫像娜W〉k
假定縫隙(x,y)是對應(yīng)于單獨的活動響應(yīng)804的兩個交互x和y之間的時間 間隔,且k是相鄰活動響應(yīng)804之間的閾值縫隙。在一個示例性實現(xiàn)中,k約 為60秒。
回到圖7,分析服務(wù)器700可分析通過使用分析模塊706中的簽名模塊 710、活動猝發(fā)分析模塊712、操作系統(tǒng)714和其他應(yīng)用程序716來分析活動猝 發(fā)800。類似地,分析服務(wù)器700可將關(guān)于活動猝發(fā)的信息存儲在數(shù)據(jù)708中, 這可包括經(jīng)簽名的活動猝發(fā)718和其他數(shù)據(jù)720。
活動猝發(fā)分析模塊712在系統(tǒng)100的活動猝發(fā)800中監(jiān)視相似性。相似的 活動猝發(fā)800指示特定程序生成的相似線程的執(zhí)行。當(dāng)遇到相似的活動猝發(fā)
800時,簽名模塊710可向相似的活動猝發(fā)800分派簽名,且簽名可被存儲在 經(jīng)簽名的活動猝發(fā)718中。在一個可能的實現(xiàn)中,簽名模塊710可基于表征包 括在活動猝發(fā)800中的交互的屬性來計算要分派給相似活動猝發(fā)800的簽名。 例如,簽名模塊710可通過對與交互相關(guān)聯(lián)的文件的文件名、交互的類型等進 行散列來得到要分派給活動猝發(fā)的簽名。而且,簽名模塊710可通過對文件路 徑進行散列、對活動類型的標識符進行散列來得到要分派給活動猝發(fā)的簽名。
分析服務(wù)器700遇到的活動猝發(fā)800可與存儲在經(jīng)簽名的活動猝發(fā)718 中的活動猝發(fā)800進行比較。如果活動猝發(fā)800類似于存儲在活動猝發(fā)718中 的活動猝發(fā)800,則活動猝發(fā)800可由簽名模塊710分派經(jīng)簽名活動猝發(fā)718 中的相似活動猝發(fā)的簽名。
在一個示例性實現(xiàn)中,可由簽名模塊710向?qū)?yīng)于與臨時文件的一個或多 個交互的所有活動猝發(fā)800分派相同的簽名。臨時文件包括在基于計算的設(shè)備 102、 104(a)-(n)上的程序安裝期間創(chuàng)建的文件,且臨時文件中的改變作為塊存 儲328和/或塊存儲616中的交互出現(xiàn)。
在又一示例性實現(xiàn)中,對應(yīng)于例如由系統(tǒng)管理員定義的已知不當(dāng)或未經(jīng)授 權(quán)的動作的交互可通過使這樣的動作的活動猝發(fā)800與禁止活動的簽名相關(guān)聯(lián) 來阻止。例如,已知不當(dāng)或未經(jīng)授權(quán)的動作,諸如對一個或多個文件的未經(jīng)授 權(quán)的讀和/或?qū)懸约皩ψ员碓O(shè)置未經(jīng)授權(quán)的讀和/或?qū)懖僮骺捎珊灻K710 分派禁止動作簽名。當(dāng)(由分析模塊712、線程數(shù)據(jù)記錄器108等)檢測到具 有禁止活動簽名的活動猝發(fā)800時,包括活動猝發(fā)分析模塊712和線程數(shù)據(jù)記 錄器108的各元件可通過阻斷與活動猝發(fā)800相關(guān)聯(lián)的一個或多個線程對文件 系統(tǒng)208的傳送而禁止這一個或多個線程的執(zhí)行。
在另一可能的實現(xiàn)中,分析服務(wù)器700可通過檢測與對應(yīng)于不當(dāng)或流氓程 序的活動猝發(fā)800相關(guān)聯(lián)的簽名的出現(xiàn)而標識不當(dāng)或流氓程序的存在性。當(dāng)這 樣的活動猝發(fā)800的簽名由活動猝發(fā)分析模塊712檢測到時,包括活動猝發(fā)分 析模塊712和線程數(shù)據(jù)記錄器108的各元件可通過阻止與活動猝發(fā)800相關(guān)聯(lián) 的一個或多個線程調(diào)用文件系統(tǒng)208來禁止這一個或多個線程的執(zhí)行。而且, 包括線程數(shù)據(jù)記錄器108、活動猝發(fā)分析模塊712和系統(tǒng)管理員的各元素可分 析與對應(yīng)于不當(dāng)或流氓程序的活動猝發(fā)800相關(guān)聯(lián)的線程以離析不當(dāng)或流氓程
序的身份或位置。包括線程數(shù)據(jù)記錄器108、活動猝發(fā)分析模塊712和系統(tǒng)管 理員的各元素也可從基于計算的設(shè)備102、 104(a)-(n)中移除不當(dāng)或流氓程序。
在又一可能的實現(xiàn)中,可使用活動猝發(fā)分析模塊712來跟蹤對文件、設(shè)置 或模塊的訪問的安全審計。例如,對文件、設(shè)置或二進制代碼的訪問可通過否 決從不屬于允許訪問的設(shè)定策略內(nèi)的線程或程序作出的任何訪問而限制。在這 樣的實現(xiàn)中,可基于程序的運行實例來授予訪問權(quán)。例如,設(shè)定的策略可將對 某些文檔的訪問權(quán)限于字處理程序而非個別用戶。在這樣的實現(xiàn)中,基于線程 的截取可用于標識對某些文檔進行調(diào)用的應(yīng)用程序,并驗證該應(yīng)用程序根據(jù)策 略可被授予訪問權(quán)。
在另一可能的實現(xiàn)中,線程截取和分析可用于通過基于正在運行的程序或 線程而否決對網(wǎng)絡(luò)驅(qū)動器或可移動位置的寫入而阻斷將文件拷貝到這樣的位 置。而且,線程截取和分析可用于進行安全審計。例如,通過監(jiān)視與系統(tǒng)上文 件的交互,可檢測受版權(quán)保護或以其他方式受保護的或敏感材料至CD或其他 可移動設(shè)備的拷貝。
另外,線程截取和分析也可用于辯論地重構(gòu)系統(tǒng)。例如,使用基于線程的 截取而創(chuàng)建的審計日志可在黑客已經(jīng)闖入系統(tǒng)之后使用以重構(gòu)系統(tǒng)并改進黑 客對系統(tǒng)所做的改變。
示例性方法
參考圖1到8描述線程截取和分析的示例性方法。這些示例性方法可在計 算機可執(zhí)行指令的一般上下文中描述。 一般而言,計算機可執(zhí)行指令可包括例 程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)、過程、模塊、功能等,它們執(zhí)行特定功能 或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。這些方法還能在分布式計算環(huán)境中實現(xiàn),其中功 能由通過通信網(wǎng)絡(luò)鏈接的遠程處理設(shè)備完成。在分布式計算環(huán)境中,計算機可 執(zhí)行指令可以位于包括存儲器存儲設(shè)備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
圖9示出了用于截取線程以及捕捉與線程相關(guān)聯(lián)的數(shù)據(jù)的示例性方法 900。描述方法的次序并不旨在解釋為限制,并且任何數(shù)目的所述方法框的可 以按任何次序組合以實現(xiàn)本方法或替換方法。另外,各個框可從方法中刪除, 而不背離此處所述的主題的精神和范圍。此外,本方法可用任何合適的硬件、 軟件、固件或其組合來實現(xiàn)。
在框902,操縱運行在系統(tǒng)上的一個或多個功能來包括經(jīng)修改的功能代 碼。在一個實現(xiàn)中,可通過修改與一個或多個功能相關(guān)聯(lián)的計算機可讀指令來 操縱這一個或多個功能。例如,可修改計算機可讀指令以指示這一個或多個功 能截取調(diào)用這一個或多個功能的線程并捕捉與這些線程相關(guān)聯(lián)的數(shù)據(jù)。例如,
在一個實現(xiàn)中,諸如線程數(shù)據(jù)記錄器108的線程數(shù)據(jù)記錄器可操縱系統(tǒng)100中 的一個或多個功能。功能可位于任何操作層202、 204、 206中。在一個可能的 實現(xiàn)中,操縱瓶頸功能來包括用于截取調(diào)用瓶頸功能的線程以及捕捉與線程相 關(guān)聯(lián)的數(shù)據(jù)的代碼。
在框904,在與運行在系統(tǒng)上的程序相關(guān)聯(lián)的線程調(diào)用包括經(jīng)修改的功能 代碼的所操縱功能時,截取該線程。在一個實現(xiàn)中,所操縱的功能在線程執(zhí)行 時將與線程相關(guān)聯(lián)的事件流記入日志。線程與程序相關(guān)聯(lián),因此當(dāng)線程由該線 程調(diào)入的所操縱功能檢查時可獲取程序信息。每一交互的時戳可由所操縱功能 分派。
例如,在一個實現(xiàn)中,諸如線程數(shù)據(jù)記錄器108的線程數(shù)據(jù)記錄器可截取 調(diào)用系統(tǒng)100中經(jīng)修改功能的線程。線程與之相關(guān)聯(lián)的程序可運行在若干操作 層之一中,諸如程序?qū)?02、中間軟件層204、操作系統(tǒng)層206等。程序可能 正試圖與之交互的諸如文件系統(tǒng)208的文件系統(tǒng)可包括文件(諸如數(shù)據(jù)文件、 可執(zhí)行文件)和設(shè)置信息(諸如配置設(shè)置或注冊表設(shè)置)等。
在框906,與線程相關(guān)聯(lián)的各種信息,包括線程正發(fā)起的交互,被拷貝并 發(fā)送到一存儲器位置, 一起歸組成事件。例如,諸如復(fù)制模塊318的復(fù)制模塊 可拷貝與線程相關(guān)聯(lián)的所有或所選數(shù)據(jù),并將數(shù)據(jù)存儲在諸如緩沖存儲器322 的存儲器位置中。與線程相關(guān)聯(lián)的信息可包括與線程所發(fā)起的交互有關(guān)的任何 信息,以及與線程在所操縱功能處執(zhí)行經(jīng)修改功能代碼時刻的系統(tǒng)有關(guān)的任何
"(曰息。
緩沖存儲器322在一個實現(xiàn)中相對于基于計算的設(shè)備102、 104(a)-(n)可以 是位于內(nèi)部或位于外部的。
在框908,壓縮存儲在存儲器位置中的數(shù)據(jù)。在一個實現(xiàn)中,壓縮模塊310 將諸如存儲在緩沖存儲器322中的事件分組324的數(shù)據(jù)壓縮成事件塊326。壓
縮可由諸如用戶端口監(jiān)控模塊312的服務(wù)實現(xiàn)。在一個實例中,可在處理器(將 用于執(zhí)行壓縮)以預(yù)定活動水平或低于預(yù)定活動水平使用時發(fā)起壓縮。在一個 實現(xiàn)中,經(jīng)壓縮的數(shù)據(jù)可被存儲在另一存儲器位置中。例如,經(jīng)壓縮的數(shù)據(jù)可
被存儲在塊存儲328而非緩沖存儲器322中。
在框910,周期性地上傳經(jīng)壓縮的數(shù)據(jù)以供分析。在一個實現(xiàn)中,經(jīng)壓縮 的數(shù)據(jù)可被上傳給收集服務(wù)器106或用作收集服務(wù)器106的存儲器位置。上傳 經(jīng)壓縮數(shù)據(jù)供分析的周期可變化。在一個實現(xiàn)中,在指定時間間隔之后上傳經(jīng) 壓縮的數(shù)據(jù)。在另一可能的實現(xiàn)中,可在經(jīng)壓縮的數(shù)據(jù)超出存儲器的預(yù)定義閾 值限制時上傳經(jīng)壓縮的數(shù)據(jù)。
圖10示出了在一個或多個基于計算的設(shè)備中將規(guī)范化事件添加到有序事 件流的示例性方法1000。有序事件流中事件的規(guī)范化減少了數(shù)據(jù)的冗余。描述 方法的次序并不旨在解釋為限制,并且任何數(shù)目的所述方法框的可以按任何次 序組合以實現(xiàn)本方法或替換方法。另外,各個框可從方法中刪除,而不背離此 處所述的主題的精神和范圍。此外,本方法可用任何合適的硬件、軟件、固件 或其組合來實現(xiàn)。
在框1002,可由系統(tǒng)中的一個或多個基于計算的設(shè)備創(chuàng)建經(jīng)壓縮數(shù)據(jù)的 日志。例如,諸如用戶端口監(jiān)控程序312的服務(wù)拷貝諸如由線程數(shù)據(jù)記錄器108 的線程數(shù)據(jù)記錄器截取的數(shù)據(jù)供壓縮。壓縮數(shù)據(jù)并在諸如塊存儲328的存儲器 位置中將其存儲為經(jīng)壓縮日志格式,諸如事件塊326。在一個實現(xiàn)中,可在處 理器(將用于執(zhí)行壓縮)以預(yù)定活動水平或低于預(yù)定活動水平使用時發(fā)起壓縮。
在框1004,規(guī)范化與對應(yīng)于所截取線程的事件相關(guān)聯(lián)的信息。在一個實 現(xiàn)中,規(guī)范化包括將相關(guān)信息歸組在一起,相關(guān)信息諸如是與對應(yīng)于字處理程 序的執(zhí)行的事件相關(guān)聯(lián)的信息。
例如,在系統(tǒng)100內(nèi)發(fā)生的不同交互的屬性可被規(guī)范化成獨特PS交互406 中的一個或多個區(qū)段,諸如獨特文件交互408、獨特注冊表交互410、進程表 412、模塊表414和其他交互416。在一個可能的實現(xiàn)中,獨特文件交互408 還包括包含各種信息的各區(qū)段,這些信息諸如獨特的名稱、用戶上下文、進程 信息、文件數(shù)據(jù)散列、以及值,它們可被存儲在用戶表418、線程表420、串 表422、其他表424等中。
在框1006,將與事件相關(guān)聯(lián)的新近規(guī)范化的信息添加到與事件相關(guān)聯(lián)的 相似規(guī)范化信息的預(yù)先存在的目錄中。例如,與事件相關(guān)聯(lián)的規(guī)范化信息的塊,
諸如事件塊326可被添加到己經(jīng)存儲在塊存儲328中的之前創(chuàng)建的事件塊326 中的相似規(guī)范化信息。返回到以上示例,與字處理程序的執(zhí)行相關(guān)聯(lián)的新規(guī)范 化的信息可被添加到與字處理程序之前的執(zhí)行相關(guān)聯(lián)的預(yù)先存在的規(guī)范化信 息。
在不存在同新規(guī)范化的信息共享相似性的與事件相關(guān)聯(lián)的規(guī)范化信息的 預(yù)先存在的目錄的情況中,可創(chuàng)建新目錄,且可將與事件相關(guān)聯(lián)的新規(guī)范化的 信息存儲在新目錄中。
在框1008,將與事件相關(guān)聯(lián)的規(guī)范化信息的所有現(xiàn)有目錄合并成有序事 件流。例如,將存儲在塊存儲328中的與事件相關(guān)聯(lián)的規(guī)范化信息合并成事件 流404。
圖11示出了檢測因從基于計算的設(shè)備卸載程序而留下的漏出條目的示例 性方法1100。描述方法的次序并不旨在解釋為限制,并且任何數(shù)目的所述方法 框的可以按任何次序組合以實現(xiàn)本方法或替換方法。另外,各個框可從方法中 刪除,而不背離此處所述的主題的精神和范圍。此外,本方法可用任何合適的 硬件、軟件、固件或其組合來實現(xiàn)。
在框1102,按目錄分類并枚舉與加載到基于計算的設(shè)備和/或系統(tǒng)上的每 一程序相關(guān)聯(lián)的安裝文件和設(shè)置改變。在一個實現(xiàn)中,枚舉包括創(chuàng)建向基于計 算的設(shè)備的操作系統(tǒng)注冊的程序的列表。
例如,可掃描系統(tǒng)以檢測安裝在系統(tǒng)中的基于計算的設(shè)備上的所有程序以 及與基于計算的設(shè)備上的程序相關(guān)聯(lián)的所有操作系統(tǒng)安裝文件??赏ㄟ^將安裝 在基于計算的設(shè)備上的所有程序和/或與程序相關(guān)聯(lián)的所有操作系統(tǒng)安裝文件 置于列表中來枚舉這些程序和文件。
在一個可能的實現(xiàn)中,査詢模塊610對系統(tǒng)IOO運行掃描,檢測安裝在一 個或多個基于計算的設(shè)備102、 104(a)-(n)上的所有程序以按目錄分類并枚舉基 于計算的設(shè)備102、 104(a)-(n)上的所有操作系統(tǒng)安裝文件。例如,查詢模塊610 可在塊存儲328和/或塊存儲616中查詢向系統(tǒng)100中的一個或多個基于計算的 設(shè)備102、 104(a)-(n)的操作系統(tǒng)314注冊的所有程序。所找到的程序可由各個
設(shè)備按目錄分類和枚舉,諸如査詢模塊610、線程數(shù)據(jù)記錄器108等。而且, 與所找到的程序相關(guān)聯(lián)的、基于計算的設(shè)備102、 104(a)-(n)上的所有操作系統(tǒng) 安裝文件可由各個設(shè)備按目錄分類和枚舉,這些設(shè)備諸如査詢模塊610、線程 數(shù)據(jù)記錄器108等。
在框1104,枚舉存在于基于計算的設(shè)備和/或系統(tǒng)上的所有文件和注冊表 設(shè)置,包括與卸載程序相關(guān)聯(lián)的文件和注冊表設(shè)置。這可涉及在基于計算的設(shè) 備和/或系統(tǒng)上的存儲器中掃描已被安裝在基于計算的設(shè)備和/或系統(tǒng)上的所有 程序的文件和注冊表設(shè)置——包括已被卸載的程序的文件和注冊表設(shè)置。例 如,查詢模塊610可査詢塊存儲328和/或塊存儲616以獲取對應(yīng)于諸如程序 ID等已被安裝在基于計算的設(shè)備102、 104(a)-(n)上的所有程序的標識符的所有 文件和注冊表設(shè)置。
在框1106,將與向操作系統(tǒng)注冊的程序相關(guān)聯(lián)的文件和注冊表設(shè)置與已 被安裝在基于計算的設(shè)備和/或系統(tǒng)上的程序的文件和注冊表設(shè)備進行比較。例 如,查詢模塊610可將諸如程序ID等與向基于計算的設(shè)備102、 104(a)-(n)的
操作系統(tǒng)注冊的程序相關(guān)聯(lián)的所枚舉的文件和注冊表設(shè)置的標識符與已被安 裝在基于計算的設(shè)備102、 104(a)-(n)上的所有程序的文件或設(shè)置的標識符進行 比較。
在框1108,可將與同時位于這兩個列表上的程序相關(guān)聯(lián)的文件和注冊表 設(shè)置排除在考慮之外。其余的文件和注冊表設(shè)置表示對應(yīng)于己從基于計算的設(shè) 備和/或系統(tǒng)上卸載的程序的文件和注冊表設(shè)置,可將其稱為漏出文件,且可將 其從基于計算的設(shè)備和/或系統(tǒng)上移除。例如,查詢模塊610可使諸如程序ID 等與向基于計算的設(shè)備102、 104(a)-(n)的操作系統(tǒng)314注冊的程序相關(guān)聯(lián)的文 件和注冊表設(shè)置的標識符與關(guān)聯(lián)于已被安裝在基于計算的設(shè)備102、 104(a)-(n) 上的程序的文件和注冊表設(shè)置的標識符相關(guān)。與非相關(guān)程序相關(guān)聯(lián)的文件和注 冊表設(shè)置可被查詢模塊610稱為漏出文件,并可由諸如線程數(shù)據(jù)記錄器108和 查詢模塊610等元件從基于計算的設(shè)備102、 104(a)-(n)中移除。
圖12示出了檢測包括常見的誤配置、老軟件版本等安裝在基于計算的設(shè) 備上的失時效文件的示例性方法1200。失時效二進制代碼例如在軟件升級無法 在替換磁盤上的二進制代碼之后重啟受影響的進程時發(fā)生。結(jié)果,其上找到失
時效二進制代碼的基于計算的設(shè)備將忽略升級并繼續(xù)根據(jù)老的二進制代碼來 執(zhí)行老程序。描述方法的次序并不旨在解釋為限制,并且任何數(shù)目的所述方法 框的可以按任何次序組合以實現(xiàn)本方法或替換方法。另外,各個框可從方法中 刪除,而不背離此處所述的主題的精神和范圍。此外,本方法可用任何合適的 硬件、軟件、固件或其組合來實現(xiàn)。
在框1202,按目錄分類并枚舉加載到基于計算的設(shè)備和/或系統(tǒng)上的程序。 在一個實現(xiàn)中,枚舉包括創(chuàng)建向基于計算的設(shè)備的操作系統(tǒng)注冊的程序的列 表。例如,可掃描系統(tǒng)以檢測系統(tǒng)中安裝在基于計算的設(shè)備上的所有程序???通過將安裝在基于計算的設(shè)備上的所有程序置于列表中來枚舉這些程序。
在一個可能的實現(xiàn)中,查詢模塊610對系統(tǒng)100運行掃描,檢測注冊在一 個或多個基于計算的設(shè)備102、 104(a)-(n)上的所有程序以按目錄分類并枚舉向 基于計算的設(shè)備102、 104(a)-(n)上的操作系統(tǒng)注冊的所有程序。例如,査詢模 塊610可在塊存儲328和/或塊存儲616中查詢向系統(tǒng)100中的一個或多個基于 計算的設(shè)備102、 104(a)-(n)的操作系統(tǒng)314注冊的所有程序。所找到的程序可 由諸如査詢模塊610、線程數(shù)據(jù)記錄器108等的各個設(shè)備和/或?qū)嶓w按目錄分類 和枚舉。
在框1204,獲取注冊在基于計算的設(shè)備和/或系統(tǒng)上的所有程序的最近加 載時間,以及與注冊在基于計算的設(shè)備和/或系統(tǒng)上的程序相關(guān)聯(lián)的DLL。例 如,查詢模塊610在塊存儲328和/或塊存儲616中查詢系統(tǒng)100中在基于計算 的設(shè)備102、 104(aHn)上注冊的程序的最近加載時間和域隨在基于計算的設(shè)備 102、 104(a)-(n)上注冊的程序安裝的動態(tài)鏈接庫(DLL)的最近加載時間。
在框1206,獲取與在基于計算的設(shè)備和/或系統(tǒng)上注冊的程序相關(guān)聯(lián)的文 件或設(shè)置的最近修改時間,并將其與程序的最近加載時間進行比較。例如,查 詢模塊610可在塊存儲328和/或塊存儲616中查詢向基于計算的設(shè)備102、 104(a)-(n)的操作系統(tǒng)314注冊的程序的最近修改的時間或日期。査詢模塊610 可將最近修改的時間或日期與程序的最近加載時間迸行比較。
在框1208,注意到在比較期間找到的任何不一致性。例如,在注冊在基 于計算的設(shè)備和/或系統(tǒng)上的程序的最近加載時間早于程序的最近已知修改的 時間或日期的情況中,程序有可能還未響應(yīng)于最近修改。在這樣的情況中,可
向諸如用戶或系統(tǒng)管理員的實體發(fā)出出錯報告,報告程序未響應(yīng)于最近嘗試的 修改?;蛘?,可試圖使程序加載經(jīng)修改的版本。
在一個示例性實現(xiàn)中,査詢模塊610可査詢向系統(tǒng)100中的基于計算的設(shè)
備102、 104(a)-(n)的操作系統(tǒng)314注冊的程序的最近加載時間和最近修改時間 兩者。查詢模塊610可將最近加載時間與最近修改時間進行比較,并且如果程 序的最近加載時間早于程序的最近修改時間,則查詢模塊610可向諸如用戶或 系統(tǒng)管理員的實體發(fā)出出錯報告,報告程序未響應(yīng)于最近嘗試的修改。查詢模 塊610也可試圖使程序加載經(jīng)修改的版本。
圖13示出了用于檢測安裝在基于計算的設(shè)備上的程序的一個或多個可擴 展性點(EP)的示例性方法1300。 EP包括控制計算機應(yīng)用程序的動態(tài)加載和 執(zhí)行的交互。描述方法的次序并不旨在解釋為限制,并且任何數(shù)目的所述方法 框的可以按任何次序組合以實現(xiàn)本方法或替換方法。另外,各個框可從方法中 刪除,而不背離此處所述的主題的精神和范圍。此外,本方法可用任何合適的 硬件、軟件、固件或其組合來實現(xiàn)。
在框1302,檢查之前的交互(即,屬于在第一程序的執(zhí)行之前加載供在 系統(tǒng)存儲器中執(zhí)行的各個程序的交互)。例如,査詢模塊610可通過在塊存儲 328和/或塊存儲616中査詢屬于在第一程序的執(zhí)行之前加載到存儲器304中供 執(zhí)行的各個程序的交互來標識與第一程序相關(guān)聯(lián)的潛在直接可擴展性點(EP)。 在一個示例性實現(xiàn)中,査詢模塊610可査詢屬于在第一程序的執(zhí)行之前的給定 時間范圍內(nèi),諸如2秒內(nèi)加載到存儲器304中供執(zhí)行的各個程序的交互。
在框1304,執(zhí)行檢查以找出引用所加載的供在基于計算的設(shè)備的系統(tǒng)存 儲器中執(zhí)行的第一程序的文件名的之前交互。例如,查詢模塊610可査詢與引 用第一程序的各個程序相關(guān)聯(lián)的交互,或者查詢與第一程序在基于計算的設(shè)備 102、 104(a)-(n)上的執(zhí)行相關(guān)聯(lián)的交互。查詢模塊610可查詢包括各種屬性的 交互,這些屬性諸如第一程序的文件名、第一程序的程序ID等。
在框1306,將引用第一程序的文件名的先前交互標記為直接EP。例如, 查詢模塊610可通過查詢引用第一程序或與第一程序的執(zhí)行相關(guān)聯(lián)的所有先前 交互來標識與第一程序相關(guān)聯(lián)的直接EP。
在一個實現(xiàn)中,與引用直接EP的各個第二程序相關(guān)聯(lián)的其他交互被稱為
間接EP。例如,查詢模塊610可在塊存儲328和/或塊存儲616中查詢(1)與 在第一程序執(zhí)行之前被加載以供在存儲器304中執(zhí)行的各個第二程序相關(guān)聯(lián)且 (2)也引用任何直接EP或引用間接EP (與第二程序相關(guān)聯(lián))的所有交互。 在又一可能的實現(xiàn)中,也可通過定位引用直接或間接EP的交互來確定間 接EP。
圖14示出了用于檢測由于運行在基于計算的設(shè)備上的程序的交互而導(dǎo)致 的一個或多個活動猝發(fā)的示例性方法1400。描述方法的次序并不旨在解釋為限 制,并且任何數(shù)目的所述方法框的可以按任何次序組合以實現(xiàn)本方法或替換方 法。另外,各個框可從方法中刪除,而不背離此處所述的主題的精神和范圍。 此外,本方法可用任何合適的硬件、軟件、固件或其組合來實現(xiàn)。
在框1402,接收一個或多個活動猝發(fā)。例如,活動猝發(fā)可由分析服務(wù)器 700接收,且可對應(yīng)于從諸如收集服務(wù)器106的外部存儲設(shè)備接收的先前交互。 或者,活動猝發(fā)可從計算設(shè)備102、 104(a)-(n)動態(tài)接收。
在一個實現(xiàn)中,活動猝發(fā)可包括對應(yīng)于一個或多個線程內(nèi)在時間上緊密出 現(xiàn)的各個交互的活動響應(yīng)?;蛘撸顒逾Оl(fā)可包括對應(yīng)于基于其他維度編組的 各個交互的活動響應(yīng),諸如按用戶、給定程序等對活動的編組。而且,活動猝 發(fā)中的各個活動響應(yīng)可對應(yīng)于基于計算的設(shè)備在執(zhí)行導(dǎo)致交互的線程時對諸 如存儲器和處理器的資源的使用。
在框1404,相似的、包括彼此稍有不同的活動猝發(fā)的活動猝發(fā)被分派相 似的簽名。在一個實現(xiàn)中,活動猝發(fā)可因包括小數(shù)目的不同的活動響應(yīng)和/或小 數(shù)目的活動響應(yīng)之間的不同時間而彼此稍有不同。
例如,相似的活動猝發(fā)800指示特定程序生成的相似線程的執(zhí)行。活動猝 發(fā)分析模塊712可在系統(tǒng)100的活動猝發(fā)800中監(jiān)視相似性。當(dāng)遇到相似活動 猝發(fā)800時,簽名模塊710可向相似的活動猝發(fā)800分派相似的簽名,這些簽 名可相同或彼此稍有不同。而且,相似的簽名和/或被分派相似簽名的活動猝發(fā) 800可被存儲在經(jīng)簽名的活動猝發(fā)718中。
在框1406,可向與對臨時文件的交互相關(guān)聯(lián)的活動猝發(fā)分派相同的簽名。 臨時文件可包括在諸如基于計算的設(shè)備102、 104(a)-(n)的基于計算的設(shè)備上安 裝程序期間所創(chuàng)建的文件。在一個可能的實現(xiàn)中,對臨時文件的改變顯現(xiàn)為塊 存儲328和/或塊存儲616中的交互。因此,與臨時文件相關(guān)聯(lián)的所有交互可由 簽名模塊710分派相同的簽名。
在框1408,被分派相似或相同簽名的活動猝發(fā)根據(jù)這相似或相同簽名而 被按目錄分類。例如,簽名模塊710可將新近被分派相同或相似簽名的活動猝 發(fā)800存儲在經(jīng)簽名的活動猝發(fā)718中。在一個實現(xiàn)中,經(jīng)簽名的活動猝發(fā)718 還可根據(jù)特定準則排列,諸如按照與活動猝發(fā)800的生成相關(guān)聯(lián)的程序或按照 與活動猝發(fā)800相關(guān)聯(lián)的交互等。
圖15示出了用于禁止未經(jīng)授權(quán)的交互——例如由系統(tǒng)管理員定義——在 基于計算的設(shè)備上的執(zhí)行的示例性方法1500。未經(jīng)授權(quán)的交互的示例包括由未 被授權(quán)對文件系統(tǒng)執(zhí)行讀和/或?qū)憚幼鞯膶嶓w或程序?qū)ξ募到y(tǒng)進行這樣的動 作。
描述方法的次序并不旨在解釋為限制,并且任何數(shù)目的所述方法框的可以 按任何次序組合以實現(xiàn)本方法或替換方法。另外,各個框可從方法中刪除,而 不背離此處所述的主題的精神和范圍。此外,本方法可用任何合適的硬件、軟 件、固件或其組合來實現(xiàn)。
在框1502,接收到具有簽名的活動猝發(fā)。例如,活動猝發(fā)800可從計算 設(shè)備102、 104(a)-(n)動態(tài)接收?;顒逾Оl(fā)包括對應(yīng)于一個或多個線程內(nèi)在時間 上緊密出現(xiàn)的各個交互的活動響應(yīng)。活動猝發(fā)中的各個活動響應(yīng)對應(yīng)于基于計 算的設(shè)備在執(zhí)行導(dǎo)致交互的線程時對諸如存儲器和處理器的資源的使用。
在框1504,將活動猝發(fā)的簽名與指示未經(jīng)授權(quán)的交互的簽名進行比較。 例如,活動猝發(fā)分析模塊712可將所接收到的活動猝發(fā)的簽名與經(jīng)簽名的活動 猝發(fā)718中的一個或多個禁止動作簽名進行比較。禁止動作簽名指示諸如系統(tǒng) 管理員的實體禁止在計算設(shè)備102、 104(a)-(n)上進行的未經(jīng)授權(quán)的交互。
在框1506,確定活動猝發(fā)是否對應(yīng)于未經(jīng)授權(quán)的交互。例如,如果活動 猝發(fā)的簽名不對應(yīng)于指示未經(jīng)授權(quán)的交互的簽名(自框1506的"否"路徑), 則可允許與活動猝發(fā)相關(guān)聯(lián)的交互繼續(xù)(框1508)?;蛘撸绻顒逾Оl(fā)的簽 名的確對應(yīng)于指示未經(jīng)授權(quán)的交互的簽名(自框1506的"是"路徑),則不 允許與活動猝發(fā)相關(guān)聯(lián)的交互繼續(xù)(框1510)。
在一個示例性實現(xiàn)中,活動猝發(fā)分析模塊712可將活動猝發(fā)的簽名與經(jīng)簽
名活動猝發(fā)718中的禁止動作簽名進行比較,并確定活動猝發(fā)是否對應(yīng)于未經(jīng)
授權(quán)的動作。如果活動猝發(fā)分析模塊712確定活動猝發(fā)的簽名不對應(yīng)于未經(jīng)授 權(quán)的交互,則允許對應(yīng)于該活動猝發(fā)的交互?;蛘?,如果活動猝發(fā)分析模塊712 確定活動猝發(fā)的簽名對應(yīng)于未經(jīng)授權(quán)的交互,則禁止對應(yīng)于該活動猝發(fā)的交 互。禁止可由諸如系統(tǒng)管理員和活動猝發(fā)分析模塊712的實體實現(xiàn)。
圖16示出了用于檢測一個或多個基于計算的設(shè)備上的流氓程序的示例性 方法1600。流氓程序的示例包括間接軟件、惡意軟件、木馬等以及在基于計算 的設(shè)備上執(zhí)行引起不合需要或不當(dāng)活動的其他程序。描述方法的次序并不旨在 解釋為限制,并且任何數(shù)目的所述方法框的可以按任何次序組合以實現(xiàn)本方法 或替換方法。另外,各個框可從方法中刪除,而不背離此處所述的主題的精神 和范圍。此外,本方法可用任何合適的硬件、軟件、固件或其組合來實現(xiàn)。
在框1602,接收到具有簽名的活動猝發(fā)。例如,活動猝發(fā)可由分析服務(wù) 器700接收,且可對應(yīng)于從諸如收集服務(wù)器106的外部存儲設(shè)備接收的先前交 互?;蛘撸顒逾Оl(fā)可從計算設(shè)備102、 104(a)-(n)動態(tài)接收?;顒逾Оl(fā)包括對 應(yīng)于一個或多個線程內(nèi)在時間上緊密出現(xiàn)的各個交互的活動響應(yīng)?;顒逾Оl(fā)中 的各個活動響應(yīng)對應(yīng)于基于計算的設(shè)備在執(zhí)行導(dǎo)致交互的線程時對諸如存儲 器和處理器的資源的使用。
在框1604,將活動猝發(fā)的簽名同所存儲的、與已知且可允許的活動猝發(fā) 相關(guān)聯(lián)的簽名進行比較。例如,活動猝發(fā)分析模塊712可將活動猝發(fā)的簽名同 與經(jīng)簽名的活動猝發(fā)718中已知且可允許的活動猝發(fā)相關(guān)聯(lián)的一個或多個簽名 進行比較。
如果活動猝發(fā)的簽名對應(yīng)于己知且可允許的活動猝發(fā)的簽名(自框1604 的"是"路徑),則將活動猝發(fā)確認為可允許的,且可允許與活動猝發(fā)相關(guān)聯(lián) 的交互執(zhí)行(框1606)。例如,活動猝發(fā)分析模塊712在確定活動猝發(fā)的簽名 與有效活動猝發(fā)的簽名相似時可指示該活動猝發(fā)是有效的,且可允許與該活動 猝發(fā)相關(guān)聯(lián)的交互執(zhí)行。
或者,如果沒有發(fā)現(xiàn)活動猝發(fā)的簽名對應(yīng)于與已知且可允許的活動猝發(fā)相 關(guān)聯(lián)的簽名(自框1604的"否"路徑),則可作出該交互是否是由于不當(dāng)或 流氓程序而導(dǎo)致的活動的判斷(框160S)。
如果活動猝發(fā)的簽名與任何已知流氓活動猝發(fā)的簽名相似(自框1608的
"是"路徑),則可將與包括在活動猝發(fā)中的交互相關(guān)聯(lián)的程序推斷為流氓程
序并將其移除(框1610)。而且,可阻斷與活動猝發(fā)相關(guān)聯(lián)的交互的執(zhí)行。
例如,活動猝發(fā)分析模塊712可將活動猝發(fā)的簽名同與包括對基于計算的 設(shè)備102、 104(a)-(n)上的流氓程序的交互的活動猝發(fā)相關(guān)聯(lián)的簽名進行比較。 如果活動猝發(fā)的簽名同與包括對基于計算的設(shè)備102、 104(a)-(n)上的流程程序 的交互的活動猝發(fā)相關(guān)聯(lián)的簽名相似,則活動猝發(fā)分析模塊712可將與活動猝 發(fā)相關(guān)聯(lián)的交互標識為因一個或多個流氓程序而導(dǎo)致。包括線程數(shù)據(jù)記錄器 108、活動猝發(fā)分析模塊712和系統(tǒng)管理員的實體,可移除流氓程序和/或禁止 與活動猝發(fā)相關(guān)聯(lián)的線程的執(zhí)行。
或者,如果活動猝發(fā)的簽名與任何已知流氓活動猝發(fā)的簽名不相似(自框 1608的"否"路徑),則可檢査活動猝發(fā)以確定活動猝發(fā)是否與一個或多個失 時效文件相關(guān)聯(lián)(框1612)。如果發(fā)現(xiàn)活動猝發(fā)與失時效文件相關(guān)聯(lián)(自框 1612的"是"路徑),則可移除失時效文件(框1614)?;蛘?,如果發(fā)現(xiàn)活 動猝發(fā)不與失時效文件相關(guān)聯(lián)(自框1612的"否"路徑),則可向諸如系統(tǒng) 管理員的實體呈現(xiàn)報告活動猝發(fā)的存在性的消息(框1616)。而且,可禁止與 活動猝發(fā)相關(guān)聯(lián)的線程的執(zhí)行。
例如,如果活動猝發(fā)分析模塊72沒有發(fā)現(xiàn)活動猝發(fā)的簽名同任何與包括 對基于計算的設(shè)備102、 104(a)-(n)上的流氓程序的交互的活動猝發(fā)相關(guān)聯(lián)的簽 名相似,則活動猝發(fā)分析模塊712可檢査來查看活動猝發(fā)是否是因失時效文件 的執(zhí)行而導(dǎo)致的交互造成。在一個可能的實現(xiàn)中,活動猝發(fā)分析模塊712可將 活動猝發(fā)的簽名與存儲在經(jīng)簽名的活動猝發(fā)718中、與失時效文件的執(zhí)行相關(guān) 聯(lián)的活動猝發(fā)的簽名進行比較。如果簽名相似,則包括線程數(shù)據(jù)記錄器108、 活動猝發(fā)分析模塊712和系統(tǒng)管理員的各元素可從基于計算的設(shè)備102、 104(a)-(n)中移除失時效文件。
或者,如果活動猝發(fā)的簽名與存儲在經(jīng)簽名的活動猝發(fā)718中、與失時效 文件的執(zhí)行相關(guān)聯(lián)的活動猝發(fā)的簽名不相似,則活動猝發(fā)分析模塊712可向諸 如系統(tǒng)管理員的實體呈現(xiàn)報告活動猝發(fā)的存在性的消息。另外,包括線程數(shù)據(jù) 記錄器108、活動猝發(fā)分析模塊712和系統(tǒng)管理員的實體,可禁止與活動猝發(fā)
相關(guān)聯(lián)的線程的執(zhí)行。 示例性計算環(huán)境
圖17示出了示例性通用計算機環(huán)境1700,它可用于實現(xiàn)此處所述的技術(shù),
且整體或部分地表示此處所述的元素。計算機環(huán)境1700僅是計算環(huán)境的一個
示例,而非旨在對計算機和網(wǎng)絡(luò)體系結(jié)構(gòu)的使用范圍或功能提出任何限制。計
算機環(huán)境1700也不應(yīng)被解釋成對于在示例計算機環(huán)境1700中所示出的任一組 件或其組合有任何依賴或要求。
計算機環(huán)境1700包括計算機1702形式的通用的基于計算的設(shè)備。計算機 1702例如可以是臺式計算機、手持式計算機、筆記本或膝上型計算機、服務(wù)器 計算機、游戲控制臺等。計算機1702的各組件可以包括但不限于 一個或多 個處理器或處理單元1704、系統(tǒng)存儲器1706、以及將包括處理器1704的各系 統(tǒng)組件耦合至系統(tǒng)存儲器1706的系統(tǒng)總線1708。
系統(tǒng)總線1708表示任何若干類型的總線結(jié)構(gòu)中的一個或多個,包括存儲 器總線或存儲器控制器、外圍總線、加速圖形端口以及使用任何各種總線體系 結(jié)構(gòu)的處理器或局部總線。作為示例,這樣的體系結(jié)構(gòu)可包括工業(yè)標準體系結(jié) 構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強的ISA (EISA)總線、 視頻電子技術(shù)標準協(xié)會(VESA)局部總線和外圍部件互連(PCI)總線(也被 稱為夾層(Mezzanine)總線)。
計算機1702通常包括各種計算機可讀介質(zhì)。這樣的介質(zhì)可以是能由計算 機1702訪問的任何可用介質(zhì),包括易失性和非易失性介質(zhì)以及可移動和不可 移動介質(zhì)。
系統(tǒng)存儲器1706包括諸如隨機存取存儲器(RAM)1710的易失性存儲器, 和/或諸如只讀存儲器(ROM) 1712的非易失性存儲器形式的計算機可讀介質(zhì)。 基本輸入/輸出系統(tǒng)(BIOS) 1714被存儲在ROM 1712中,它包含幫助在諸如 啟動期間在計算機1702內(nèi)的元件之間傳遞信息的基本例程。RAM 1710通常包 含處理單元1704可以立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模塊。
計算機1702還可以包括其他可移動/不可移動,易失性/非易失性的計算機 存儲介質(zhì)。作為示例,圖17示出了對不可移動、非易失性磁性介質(zhì)(未示出) 進行讀寫的硬盤驅(qū)動器1716、對可移動、非易失性磁盤1720 (例如"軟盤")
進行讀寫的磁盤驅(qū)動器1718、以及對可移動、非易失性光盤1724 (諸如 CD-ROM、 DVD-ROM或其它光介質(zhì))進行讀寫操作的光盤驅(qū)動器1722。硬盤 驅(qū)動器1716、磁盤驅(qū)動器1718和光盤驅(qū)動器1722各自通過一個或多個數(shù)據(jù)介 質(zhì)接口 1726連接至系統(tǒng)總線1708。或者,硬盤驅(qū)動器1716、磁盤驅(qū)動器1718 和光盤驅(qū)動器1722也可通過一個或多個接口 (未示出)連接至系統(tǒng)總線1708。
盤驅(qū)動器及其相關(guān)聯(lián)的計算機可讀介質(zhì)向計算機1702提供對計算機可讀 指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及其它數(shù)據(jù)的非易失性存儲。盡管該示例示出了 硬盤1716、可移動磁盤1720和可移動光盤1724,可以理解可存儲可由計算機 訪問的數(shù)據(jù)的其他類型的計算機可讀介質(zhì)也可用來實現(xiàn)該示例性計算系統(tǒng)和 環(huán)境,這些介質(zhì)如盒式磁帶或其它磁存儲設(shè)備、閃存卡、CD-ROM、數(shù)字多功 能盤(DVD)或其它光盤存儲、隨機存取存儲器(RAM)、只讀存儲器(ROM)、 電可擦除可編程只讀存儲器(EEPROM)等等。
眾多程序模塊可儲存在硬盤1716、磁盤1720、光盤1724、 ROM 1712和/ 或RAM 1710中,作為示例包括操作系統(tǒng)1727、 一個或多個應(yīng)用程序1728、 其它程序模塊1730和程序數(shù)據(jù)1732。每個這樣的操作系統(tǒng)1727、 一個或多個 應(yīng)用程序1728、其它程序模塊1730以及程序數(shù)據(jù)1732 (或其某種組合)可實 現(xiàn)支持分布式文件系統(tǒng)的常駐組件的全部或部分。
用戶可通過諸如鍵盤1734和定點設(shè)備1736 (例如"鼠標")的輸入設(shè)備 將向計算機1702輸入命令和信息。其它輸入設(shè)備1738 (未明確示出)可以包 括麥克風(fēng)、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、串行接口、掃描儀等。這些 和其它輸入設(shè)備通過耦合到系統(tǒng)總線1708的輸入/輸出接口 1740連接到處理單 元1504,但也可通過其它接口和總線結(jié)構(gòu)如并行端口、游戲端口或通用串行總 線(USB)來連接。
監(jiān)視器1742或其它類型的顯示設(shè)備也經(jīng)由接口,諸如視頻適配器1744 連接至系統(tǒng)總線1708。除監(jiān)視器1742之外,其它輸出外圍設(shè)備可包括諸如揚 聲器(未示出)和打印機1746的組件,這些組件可通過輸入/輸出接口 1740 連接至計算機1702。
計算機1702可在使用至一臺或多臺遠程計算機(如遠程基于計算的設(shè)備 1748)的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。作為示例,遠程基于計算的設(shè)備1748
可以是個人計算機、便攜式計算機、服務(wù)器、路由器、網(wǎng)絡(luò)計算機、對等設(shè)備
或者其他常見網(wǎng)絡(luò)節(jié)點等。遠程基于計算的設(shè)備1748被示出為可以包括在本 文中相對于計算機1702描述的許多或全部元素和特征的便攜式計算機。
計算機1702和遠程計算機1748之間的邏輯連接被描繪為局域網(wǎng)(LAN) 1750和通用廣域網(wǎng)(WAN) 1752。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計算 機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。
當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中實現(xiàn)時,計算機1702通過網(wǎng)絡(luò)接口或適配器1754 連接到局域網(wǎng)1750。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中實現(xiàn)時,計算機1702通常包括調(diào) 制解調(diào)器1756或用于在廣域網(wǎng)1752上建立通信的其他裝置。調(diào)制解調(diào)器1756 可以是計算機1702內(nèi)置或外置的,其可通過輸入/輸出接口 1740或其它恰當(dāng)?shù)?機制連接到系統(tǒng)總線1708??梢岳斫?,所示網(wǎng)絡(luò)連接是示例性的,也可采用在 計算機1702和1748之間建立通信鏈接的其它手段。
在網(wǎng)絡(luò)化環(huán)境中,諸如對計算環(huán)境1700示出的,相對于計算機1702描繪 的程序模塊或其部分可被存儲在遠程存儲器存儲設(shè)備中。作為示例,遠程應(yīng)用 程序1758駐留在遠程計算機1748的存儲器設(shè)備上。為說明起見,應(yīng)用程序諸如操作系統(tǒng)的其他可執(zhí)行程序組件在這里被示為分立的塊,但可以理解,這 樣的程序和組件在不同的時間駐留在基于計算的設(shè)備1702的不同存儲組件中,
并由計算機的數(shù)據(jù)處理器來執(zhí)行。
各種模塊和技術(shù)在此可在諸如程序模塊的由一個或多個計算機或其他設(shè) 備執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述。 一般而言,程序模塊包括例 程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象 數(shù)據(jù)類型。通常,程序模塊的功能在各個實施例中可按需進行組合或分布。
這些模塊和技術(shù)的實現(xiàn)可以存儲在某種形式的計算機可讀介質(zhì)上或通過 某種形式的計算機可讀介質(zhì)傳輸。計算機可讀介質(zhì)可以是可由計算機訪問的任 何可用介質(zhì)。作為示例,而并非限制,計算機可讀介質(zhì)可包括"計算機存儲介 質(zhì)"和"通信介質(zhì)"。
"計算機存儲介質(zhì)"包括以存儲如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊
或其它數(shù)據(jù)的信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可 移動介質(zhì)。計算機存儲介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或
其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲器、盒式 磁帶、磁帶、磁盤存儲或其它磁存儲設(shè)備,或者任何其它可用于存儲所需信息 并可由計算機訪問的介質(zhì)。
或者,框架的各部分可用硬件或硬件、軟件和/或固件的組合來實現(xiàn)。例 如,可將一個或多個專用集成電路(ASIC)或可編程邏輯器件(PLD)設(shè)計或 編程為實現(xiàn)框架的一個或多個部分。
結(jié)論
盡管己經(jīng)用結(jié)構(gòu)特征和/或方法專用的語言描述了線程截取和分析的各實 施例,但是應(yīng)該理解所附權(quán)利要求的主題不必限于所述的特定特征或方法。相 反,特定特征和方法是作為線程截取和分析的示例性實現(xiàn)而公開的。
權(quán)利要求
1. 一種系統(tǒng)(100、102、104),包括至少一個處理器(302);在所述系統(tǒng)(202、204、206、316)上操作的一個或多個功能;以及線程數(shù)據(jù)記錄器(108),被配置成操縱所述一個或多個功能(202、204、206、316),使得所述一個或多個功能截取調(diào)用所述一個或多個功能的線程;以及捕捉與所截取的線程相關(guān)聯(lián)的數(shù)據(jù)。
2. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述線程數(shù)據(jù)記錄器被配置成 通過修改所述一個或多個功能中的計算機可執(zhí)行指令來操縱所述一個或多個 功能。
3. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述線程數(shù)據(jù)記錄器被配置成 在所述系統(tǒng)啟動時操縱所述一個或多個功能。
4. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述一個或多個功能包括瓶頸 功能。
5. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述線程數(shù)據(jù)記錄器包括 復(fù)制模塊,被配置成復(fù)制與所截取的線程相關(guān)聯(lián)的數(shù)據(jù);以及 指導(dǎo)模塊,被配置成指導(dǎo)用戶端口監(jiān)控程序?qū)崿F(xiàn)所復(fù)制數(shù)據(jù)的壓縮。
6. 如權(quán)利要求5所述的系統(tǒng),其特征在于,所述指導(dǎo)模塊還被配置成指導(dǎo) 所述用戶端口監(jiān)控程序在至少以下其中一個情況時實現(xiàn)所復(fù)制數(shù)據(jù)的壓縮所述處理器的資源正以預(yù)定水平或低于預(yù)定水平使用; 預(yù)定時間。
7. —種方法,包括:操縱現(xiàn)有功能來截取調(diào)用所述現(xiàn)有功能的線程并捕捉與所述線程相關(guān)聯(lián) 的數(shù)據(jù)(902);以及復(fù)制所捕捉的與所述線程相關(guān)聯(lián)的數(shù)據(jù)(906)。
8. 如權(quán)利要求7所述的方法,其特征在于,還包括訪問關(guān)于發(fā)出所述線程的程序的數(shù)據(jù);以及訪問與所述線程相關(guān)聯(lián)的交互由所述現(xiàn)有功能執(zhí)行的時間。
9. 如權(quán)利要求7所述的方法,其特征在于,還包括在所述與線程相關(guān)聯(lián)的數(shù)據(jù)的至少一部分中檢查程序的標識符;以及 將所述程序的標識符與已知不當(dāng)程序的標識符的列表進行比較。
10. 如權(quán)利要求9所述的方法,其特征在于,比較包括如果所述程序的標識符匹配已知不當(dāng)程序的標識符則移除所述程序。
11. 如權(quán)利要求7所述的方法,其特征在于,還包括壓縮與所述線程相關(guān) 聯(lián)的數(shù)據(jù)。
12. 如權(quán)利要求11所述的方法,其特征在于,還包括將所述經(jīng)壓縮數(shù)據(jù) 周期性上傳到分析服務(wù)器。
13. —種或多種包括計算機可執(zhí)行指令的計算機可讀介質(zhì),所述指令在被執(zhí)行時執(zhí)行以下動作接收一個或多個相關(guān)交互(804、 808),所述一個或多個相關(guān)交互(804、 804)在一個或多個線程中出現(xiàn);以及將所述一個或多個相關(guān)交互(804、 808)歸組成活動猝發(fā)(800)。
14. 如權(quán)利要求13所述的一種或多種計算機可讀介質(zhì),其特征在于,還 包括在被執(zhí)行時執(zhí)行以下附加動作的計算機可讀指令向具有相似交互的活動猝發(fā)分派相似簽名以唯一地將所述活動猝發(fā)標識 為相似的,由以下進程計算所述相似簽名 對文件路徑散列;以及 對活動類型的標識符散列。
15. 如權(quán)利要求13所述的一種或多種計算機可讀介質(zhì),其特征在于,還 包括在被執(zhí)行時執(zhí)行以下附加動作的計算機可執(zhí)行指令向包括對臨時文件的 交互的活動猝發(fā)分派相同的簽名。
16. 如權(quán)利要求13所述的一種或多種計算機可讀介質(zhì),其特征在于,還 包括在被執(zhí)行時執(zhí)行以下附加動作的計算機可執(zhí)行指令生成數(shù)據(jù)集合,其中 所述數(shù)據(jù)集合包括按一個或多個活動猝發(fā)的相應(yīng)簽名排序的所述一個或多個 活動猝發(fā)的列表。
17. 如權(quán)利要求13所述的一種或多種計算機可讀介質(zhì),其特征在于,還 包括在被執(zhí)行時執(zhí)行以下附加動作的計算機可讀指令禁止未經(jīng)授權(quán)的交互的 執(zhí)行。
18. 如權(quán)利要求13所述的一種或多種計算機可讀介質(zhì),其特征在于,所 述交互包括從存儲器讀; 向存儲器寫;改變設(shè)置; 執(zhí)行應(yīng)用程序。
19. 如權(quán)利要求13所述的一種或多種計算機可讀介質(zhì),其特征在于,所 述歸組包括基于以下至少其中之一對相關(guān)交互進行歸組 與所述交互相關(guān)聯(lián)的時間; 與所述交互相關(guān)聯(lián)的用戶; 與所述交互相關(guān)聯(lián)的程序;
20.如權(quán)利要求13所述的一種或多種計算機可讀介質(zhì),其特征在于,還 包括在被執(zhí)行時執(zhí)行以下附加動作的計算機可執(zhí)行指令通過檢測與對應(yīng)于不 當(dāng)程序的活動猝發(fā)相關(guān)聯(lián)的簽名的出現(xiàn)來標識所述不當(dāng)程序的存在。
全文摘要
公開了用于截取和分析線程的裝置和方法。在一個實施例中,將線程數(shù)據(jù)記錄器配置成通過修改功能中的計算機可執(zhí)行指令以截取調(diào)用功能的線程來操縱一個或多個現(xiàn)有功能。在一個可能的實現(xiàn)中,所操縱的現(xiàn)有功能的數(shù)目可通過操縱瓶頸功能來減少。當(dāng)線程在功能處執(zhí)行時,所操縱的功能也可捕捉與線程相關(guān)聯(lián)的數(shù)據(jù)??蓪⒃摂?shù)據(jù)保存到存儲器,并將其壓縮到日志中。在一個方面中,當(dāng)正在以預(yù)定水平或低于預(yù)定水平使用處理器資源時可保存和/或壓縮數(shù)據(jù)。所捕捉的數(shù)據(jù)可用于分析計算機系統(tǒng)中產(chǎn)生線程的功能。
文檔編號G06F13/28GK101390077SQ200780006814
公開日2009年3月18日 申請日期2007年2月13日 優(yōu)先權(quán)日2006年2月28日
發(fā)明者B·丹尼爾斯, C·弗波瓦斯基, J·杜南甘, R·魯斯夫, S·陸, Y-M·王 申請人:微軟公司