理程序執(zhí)行控制器引擎260結(jié)合組成處理程 序210的其他引擎激活的和去激活持續(xù)管理程序110a的進程的過程的更詳細的討論。該過 程包括以下動作:
[0047] a.保留處理器的先前狀態(tài)(即保護環(huán)-1的管理程序模式中的管理程序110b之一的 代碼的執(zhí)行的最后時刻);
[0048] b.在不同的模式例如監(jiān)管員程序模式(保護環(huán)0)中執(zhí)行持續(xù)管理程序110a的代 碼;
[0049] c.確定企圖執(zhí)行任何管理程序110b的代碼;
[0050] d.恢復處理器的先前狀態(tài)用于由管理程序110b正確處理用于虛擬機的激活的指 令;
[0051] e.在管理程序ll〇b的代碼的執(zhí)行之前,從管理程序模式退出并且在監(jiān)管員程序模 式下轉(zhuǎn)移對的管理程序ll〇a的最后的指令的控制。該操作確保持續(xù)管理程序110a被退出管 理程序模式并且進入監(jiān)管員程序模式,從而當管理程序ll〇b在管理程序模式下執(zhí)行時管理 程序ll〇b意識不到持續(xù)管理程序110a的存在。
[0052]因此,因為繼續(xù)執(zhí)行已經(jīng)在不同的保護環(huán)的權限內(nèi)實施(通常,它會是對應于內(nèi)核 的優(yōu)先權級別的環(huán)〇),所以持續(xù)管理程序110a的線程的下一個指令已經(jīng)在管理程序模式之 外執(zhí)行,。
[0053]圖3示出了根據(jù)一個實施例的操作的過程。在310,處理程序210(使用命令檢測器 250和參數(shù)改變監(jiān)控器252)跟蹤系統(tǒng)的狀態(tài)信息220。如果在320管理程序執(zhí)行檢測器引擎 256確定系統(tǒng)的狀態(tài)已經(jīng)改變(例如頁目錄被覆寫或者vmrun命令已經(jīng)運行),那么在330持 續(xù)管理程序ll〇a的執(zhí)行由持續(xù)管理程序執(zhí)行控制器260停止。
[0054]在相關的實施例中,在320由管理程序執(zhí)行檢測器引擎256實施附加的檢查,即確 定CR3注冊表的重新加載被從中調(diào)用的處理器模式。如果注冊表重新加載被從內(nèi)核模式調(diào) 用,則被認為僅是上下文的切換,并且如果是從用戶模式調(diào)用,則有可能另外檢查這是例如 來自虛擬機的進程的調(diào)用。這樣的檢測允許系統(tǒng)最小化在停止持續(xù)管理程序ll〇a的情況下 "錯誤的激活"的數(shù)目,以便避免無絕對的必要而停止它。
[0055]在340,管理程序執(zhí)行監(jiān)測器引擎256針對恢復持續(xù)管理程序110a的適合性進行檢 查。該動作可以響應于以下一個或多個條件:
[0056] ?由調(diào)度程序120分配用于管理程序110b之一的執(zhí)行的執(zhí)行時間量到期;
[0057] ?系統(tǒng)120的狀態(tài)的改變已經(jīng)發(fā)生;
[0058] ?處理程序210跟蹤管理程序110b的執(zhí)行并且接收關于其操作結(jié)束的通知(例如, 通過由管理程序的開發(fā)者提供的正式的應用程序可編程接口或者API)。
[0059] 如果在350確定了管理程序110b之一已經(jīng)完成執(zhí)行(通過檢查條件諸如以上標識 的那些),那么在360持續(xù)管理程序110a由持續(xù)管理程序執(zhí)行控制器260恢復。在相關實施例 中,存在多個不同的管理程序ll〇b的情況下,在緊接著第一管理程序110b的執(zhí)行完成之后、 持續(xù)管理程序ll〇a恢復之前,持續(xù)管理程序110a在恢復執(zhí)行前等待所有管理程序110b完成 它們的執(zhí)行。
[0060] 在一個實施例中,持續(xù)管理程序110a的操作的恢復使用定時器過程來實施(例如, 在Windows 0S中使用KeSetTimer調(diào)用來進行)。例如,一旦指定的時間到期(當執(zhí)行時間量 已經(jīng)到期),那么調(diào)度程序120確定哪個代碼必須被執(zhí)行(例如,持續(xù)管理程序110a的開始)。 定時器可以被重新設置以便在下一次管理程序ll〇b完成其操作并且持續(xù)管理程序110a可 以啟動時允許后續(xù)的啟動。
[0061 ]持續(xù)管理程序110a何時應該停止的另一個示例與系統(tǒng)的狀態(tài)信息220中的電源相 關的改變有關,例如,當將要進入"休眠"模式時。為此,跟蹤與電源相關的函數(shù)(Windows 0S 中的電源管理事件回調(diào)函數(shù))或系統(tǒng)變量(Windows 0S中的SYSTEM_POWER_STATE)。
[0062] 需要停止管理程序110a的另一個示例是也導致處理器的狀態(tài)的顯著改變的一段 代碼的啟動,例如,仿真器(諸如QEMU(快速仿真器)和其他類似的程序,包括在反病毒應用 程序中使用的那些)。但是如果仿真器和持續(xù)管理程序ll〇a包括在反病毒產(chǎn)品中,那么在仿 真器的操作之后,后者可以自動啟動持續(xù)管理程序ll〇a。
[0063] 圖4為更詳細地示出了計算機系統(tǒng)400的圖示,其被制成具有根據(jù)本文所描述的發(fā) 明的方面的實現(xiàn)的改善功能的專用機器。計算機系統(tǒng)400可以包括諸如個人計算機402的計 算設備。個人計算機402包括一個或多個處理單元404、系統(tǒng)存儲器406、視頻接口 408、輸出 外圍設備接口 410、網(wǎng)絡接口 412、用戶輸入接口 414、可移除存儲器接口 416和非可移除存儲 器接口 418以及耦合到各個組件的系統(tǒng)總線或高速通信通道420。在各個實施例中,處理單 元404可以具有多個邏輯核,其能夠處理存儲在計算機可讀介質(zhì)諸如系統(tǒng)存儲器406或附接 到可移除存儲器接口 416和非可移除存儲器接口 418的存儲器上的信息。計算機402系統(tǒng)存 儲器406可以包括諸如只讀存儲器(ROM)的非易失性存儲器422或者諸如隨機存取存儲器 (1^1〇的易失性存儲器424。1?01 422可以包括級別輸入/輸出系統(tǒng)(8105)426以幫助與計算 機402的其他部分通信。RAM 424可以存儲各種軟件應用程序部分諸如操作系統(tǒng)428、應用程 序430和其他程序引擎432。此外,RAM 424可以存儲諸如程序或應用程序數(shù)據(jù)434的其他信 息。在各個實施例中,RAM 424存儲要求低延時和高效率訪問的信息諸如程序和對其進行操 縱或操作的數(shù)據(jù)。在各個實施例中,RAM 424包括雙倍數(shù)據(jù)速率(DDR)存儲器、錯誤糾正存儲 器(ECC)或具有改變的延遲和配置的其他存儲器技術諸如RAMBUS或DDR2和DDR3。這樣,在各 個實施例中,系統(tǒng)存儲器406可以存儲輸入數(shù)據(jù)存儲、訪問證書數(shù)據(jù)存儲、操作存儲器數(shù)據(jù) 存儲、指令集數(shù)據(jù)存儲、分析結(jié)果數(shù)據(jù)存儲和操作存儲器數(shù)據(jù)存儲。此外,在各個實施例中, 處理單元404可以配置為通過要求在對信息的訪問被授予之前訪問證書來執(zhí)行限制對上述 數(shù)據(jù)存儲的訪問的指令。
[0064] 可移除存儲器接口 416和非可移除存儲器接口 418可以將計算機402耦合到硬盤驅(qū) 動器436諸如SSD或旋轉(zhuǎn)硬盤驅(qū)動器。這些硬盤驅(qū)動器436可以提供針對各種軟件應用程序 的進一步存儲,諸如操作系統(tǒng)438、應用程序440和其他程序引擎442。此外,硬盤驅(qū)動器436 可以存儲諸如程序或應用程序數(shù)據(jù)444的其他信息。在各個實施例中,硬盤驅(qū)動器436存儲 不要求如在其他存儲介質(zhì)中的同樣的低延遲的信息。此外,操作系統(tǒng)438、應用程序440數(shù) 據(jù)、程序引擎442和程序或應用程序數(shù)據(jù)444可以是如在上述的各個實施例中的RAM 424中 存儲的同樣的信息或者它可以是RAM 424存儲的數(shù)據(jù)的不同的數(shù)據(jù)可能衍生。
[0065]此外,可移除非易失性存儲器接口 416可以耦合計算機402到利用磁介質(zhì)諸如軟盤 448,Iomega?Zip or Jazz的磁便攜硬盤驅(qū)動器446,或耦合到利用諸如Blu-Ray?,DVD-R/RW,CD-R/RW以及其他類似格式的用于計算機可讀介質(zhì)的存儲的光盤驅(qū)動器450。另外其 他實施例利用SSD或封裝在便攜外殼54中的旋轉(zhuǎn)硬盤以增加可以移除存儲器的容量。
[0066] 計算機402可以利用網(wǎng)絡接口 412通過本地局域網(wǎng)(LAN)458或廣域網(wǎng)(WAN)460和 一個或多個遠程計算機456通信。網(wǎng)絡接口 412可以利用網(wǎng)絡接口卡(NIC)或其他接口諸如 調(diào)制解調(diào)器462以使能通信。調(diào)制解調(diào)器462可以使能通過電話線、同軸線、光纖、電力線或 無線的通信。遠程計算機456可以包含類似的硬件和軟件配置或者可以具有存儲器464,其 包含可以提供附加的計算機可讀指令給計算機402的遠程應用程序466。在各個實施例中, 遠程計算機存儲器464可以用于存儲信息諸如識別的文件信息,其可以隨后下載到本地系 統(tǒng)存儲器406。此外,在各個實施例中,遠程計算機456可以是應用程序服務器、管理服務器、 客戶端計算機或網(wǎng)絡裝置。
[0067]用戶可以使用連接到用戶輸入接口 414輸入設備諸如鼠標468和鍵盤470來輸入信 息到計算機402。此外,輸入設備可以是觸控板、指紋掃描儀、操縱桿、條形碼掃描儀、媒體掃 描儀等。視頻接口 408可以提供可視信息到諸如監(jiān)控器的顯示器472。視頻接口 408可以是嵌 入式接口或者可以是分離式接口。而且,為了增加計算機402操作中的靈活性,計算機可以 利用多個視頻接口 408、網(wǎng)絡接口 412以及可移除接口 416和非可移除接口 418。而且,各個實 施例利用若干監(jiān)視器472和若干視頻接口 408改變計算機402的性能和容量。計算機402中可 以包括其他計算機接口,例如輸出外圍接口410。該接口可以耦合至打印機474或揚聲器476 或其他給計算機402提供附加功能的外圍接口。
[0068] 計算機402的不同的可替代的配置和實現(xiàn)方式都落入本發(fā)明的精神。這些改變可 以包括但不限于