新四季網

計算機內存數據準確採集系統及獲取方法

2023-08-09 22:02:06

專利名稱:計算機內存數據準確採集系統及獲取方法
技術領域:
本發明涉及的是一種計算機應用技術領域的系統及方法,具體是一種計算機內存數據準確採集系統及獲取方法。
背景技術:
內存數據的獲取常被用於軟體調試和計算機取證過程中,已有內存數據的獲取方法很難在獲取大量數據時確保準確性。現有的獲取方法分為軟體獲取和硬體獲取兩種,軟體獲取內存數據又可進一步分為基於虛擬機(Virtual Machine, VM)獲取和本地獲取兩種手段。本地獲取指在目標作業系統(Operating System,OS)內通過運行第三方用戶態應用程式(User-mode Application)或加載內核模塊(Kernel Module)的方法來完成計算機內存數據的獲取。經過對現有的技術檢索發現,中國專利文獻號CN100414554.記載了一種「用於計算機的電子數據取證方法和系統」,該技術包括實時取證過程,也就是在目標機器運行時獲取其中選定的內存數據並進而篩選出可能存在的證據,然而由於當前作業系統為多進程作業系統,內存數據在獲取過程中會發生改變,因此包括該專利在內的本地獲取內存數據方法均不能保證獲得結果的準確率。一種有效的改進是在內存獲取過程中暫停目標機器的運行,在2009年3月份 Computing in Science and Engineering 期幹丨J Volume 7 Issue 2 中發表了一篇名為 Live Analysis progress and Challenges的論文,其中明確提到很難用軟體手段實現理想的暫停目標機器運行的手段,因此這種改進出現的可能性極低。另一種軟體獲取手段一基於虛擬機獲取內存內容可以準確獲取目標機器的內存數據,這種方法在2007年 11 月 29 日的 ICISC 2007會議中,Asynchronous Pseudo Physical Memory Snapshot and Forensics on Paravirtualized VMM Using Split Kernel Module 提到通過構建虛擬機來獲取預先裝入虛擬機中的目標系統的物理內存數據。而在2008年 5 ^ 22 H ^ SADFE2008Towards the Virtual Memory Space Reconstruction for Windows Live Forensic Purposes論文提出了一種利用虛擬機準確獲取裝入虛擬機中的目標系統的虛擬內存數據方法,進而可以分辨和準確獲取屬於特定進程的內存內容。然而這種方法為了達到準確獲取內存數據的目的,要求把目標系統裝載入如VMWare Workstation, Xen或者KVM這樣的虛擬機內,這就要求必須重新目標系統甚至於重新安裝目標系統,從而導致完全摧毀目標機器的內存數據,從而在很多場合下不適用。對於現有的基於硬體的內存獲取技術,中國專利文獻號CN101419536B記載了 「一種計算機內存數據獲取方法與系統」,其通過IEEE 1394接口模擬移動硬碟登錄到待取證計算機並使待取證計算機開放DMA功能;進而完成內存的讀取。其缺點是需要引入專門的硬體設備並且在2007年的Blackhat會議上Rutkowska Joanna的論文Beyond the CPU Defeating hardware based RAM acquisition中指出可以通過重新配置1/0映射內存的方法來欺騙外接設備看到的內存區域,從而使得基於硬體的內存獲取技術失效。

發明內容
本發明針對現有技術存在的上述不足,提供一種計算機內存數據準確採集系統及獲取方法,基於硬體虛擬化技術,在作業系統和應用程式運行時動態構建虛擬機監控器,從而可在物理機器正在運行時被轉換為虛擬機主機處的虛擬機(以下稱為構建虛擬機)而不致招致顯著的停機時間(僅需毫秒級停機時間),進而通過控制虛擬機物理內存到真實物理內存的映射和權限管理完成對正在改寫內存區域的識別和讀取相應和鄰近或非鄰近位置原始內存數據。這種方法或系統可以準確獲取指定時刻計算機內存中的數據並且對內存的改動較小且與已有作業系統和應用程式耦合度極低。而在獲取內存內容任務完成或需要卸載虛擬機監控器時,本發明描述的系統及方法可以在作業系統和應用程式運行時動態卸載虛擬機監控器,使得之前處於虛擬機主機處的虛擬機在運行時被轉換為物理機器(以下稱為卸載虛擬機)繼續運行,同樣不致招致顯著的停機時間(僅需毫秒級停機時間)。本發明不創建任何物理機器卷磁碟的快照的同時,由於將本地物理機器在運行時轉化為虛擬機,因此本發明無需現有技術所述任何有關快照相關的傳輸。本發明是通過以下技術方案實現的本發明涉及一種計算機內存數據準確採集系統,包括後啟動虛擬機模塊和虛擬化內存獲取模塊,其中虛擬化內存獲取模塊訪問目標作業系統獲得內存設備信息,後啟動虛擬機模塊與硬體系統相連接並在作業系統啟動中或完成後驅動支持硬體虛擬化技術的硬體平臺完成構建後啟動虛擬機監控器和虛擬機或卸載已構建的後啟動虛擬機監控器和虛擬機、加載或卸載虛擬化內存獲取模塊並驅動CPU攔截虛擬機內發生的虛擬機監控器指定的虛擬機事件、異常以及中斷,後啟動虛擬機模塊與虛擬化內存獲取系統相連接並傳輸內存獲取控制指令和虛擬機中內存內容信息,虛擬化內存獲取模塊與後啟動虛擬機模塊相連接並接受內存獲取控制指令和虛擬機中內存內容信息。所述的後啟動虛擬機模塊包括虛擬機創建卸載子模塊、虛擬機事件攔截處理子模塊,其中虛擬機創建和卸載子模塊驅動支持硬體虛擬化技術的硬體平臺完成構建後啟動虛擬機監控器和虛擬機或卸載已構建的後啟動虛擬機監控器和虛擬機,以及加載/卸載虛擬化內存獲取模塊,虛擬機事件攔截處理子模塊接收並處理硬體攔截到的虛擬機內發生的虛擬機監控器指定的虛擬機事件、異常以及中斷並傳輸截獲的內存獲取控制指令和虛擬機中內存內容到虛擬化內存獲取模塊所述的虛擬化內存獲取模塊包括內存獲取控制子模塊、內存內容獲取子模塊、結果輸出子模塊,其中內存獲取控制子模塊負責監聽用戶指令,反饋內存獲取狀態。內存內容獲取子模塊用於接收虛擬機中內存內容信息並控制虛擬機物理內存到真實物理內存的映射和權限管理。結果輸出子模塊利用作業系統提供的函數或自身實現的功能負責將接收到的內存數據保存到包括內存、硬碟、外接硬碟、快閃記憶體、網絡和遠程設備等外部設備。本發明涉及上述系統的信息獲取方法,通過後啟動虛擬機模塊構建後啟動虛擬機監控器和虛擬機,將目標作業系統所在的物理機器在運行時轉換為虛擬機主機處的虛擬機並提供虛擬機事件、異常以及中斷攔截監測功能,虛擬化內存獲取模塊控制虛擬機物理內存到真實物理內存的映射和權限管理毫秒級暫停的完成對正在改寫內存區域的識別和準確獲得相應和鄰近或非鄰近位置原始內存數據。
所述信息獲取方法的具體過程為在作業系統啟動過程中或完成後,通過加載驅動的方法由後啟動虛擬機模塊構建後啟動虛擬機監控器和虛擬機並由虛擬化內存獲取模塊對本地系統內存信息進行登記並在需要準確獲取計算機內存數據的時刻,客戶發出內存獲取指令,虛擬化內存獲取模塊在收到由後啟動虛擬機模塊轉交的指令後開始獲得相應位置原來內存數據並輸出到外部設備或指定內存區域中。在獲取內存內容任務完成或需要卸載虛擬化內存獲取模塊時,後啟動虛擬機模塊依次卸載已構建的後啟動虛擬機監控器和虛擬機並卸載已加載的虛擬化內存獲取模塊,將目標作業系統所在的虛擬機在運行時轉換為物理機器並卸載虛擬機事件、異常以及中斷攔截監測功能。

所述的後啟動虛擬機模塊構建後啟動虛擬機監控器和虛擬機是指步驟1. 1,利用作業系統內核態、用戶態或內核態混合用戶態的API調用,來實現在各個CPU核心上建立虛擬機監控器,從而適用於多核硬體系統;步驟1.2,保存寄存器內容,分配內存空間用於虛擬機監控器運行使用,包括但不限於堆棧空間,設置關鍵寄存器,配置輔助結構體,如Intel VT技術中的VMXON結構體並且修改相應MSR的內容啟用硬體虛擬化支持;步驟1. 3,進行對Intel VT技術中的VMCS或AMD SVM的VMCB的配置,來建立虛擬機運行環境並將本地系統裝入稍後運行的唯一存在的虛擬機中,同時配置虛擬機監控器環境和需要其處理的發生在虛擬機中的特殊事件並實現相應處理函數,在VMCS結構體中指定虛擬機啟動後運行的第一條指令為後啟動虛擬機模塊初始化繼續執行的指令;步驟1. 4,啟動虛擬機並將處理器控制權交給虛擬機,使用配置的虛擬機運行環境並開啟虛擬機運行;步驟1. 5,支持硬體虛擬化的處理器硬體會根據前述VMCS的配置信息,開始監控和攔截需要虛擬機監控器處理的敏感行為,保存虛擬機狀態到VMCS以及虛擬機監控器的指定內存區域並調用指定的處理函數進行處理;步驟1. 6,虛擬機監控層完成對陷入事件的處理後,將處理器控制權重新轉交到虛擬機,虛擬機中的作業系統繼續運行,回到步驟1. 5並循環執行。所述的後啟動虛擬機模塊卸載已構建的後啟動虛擬機監控器和虛擬機是指步驟a、卸載後啟動虛擬機的命令從虛擬機中對每個CPU發出,在接收到卸載後啟動虛擬機的命令後,虛擬機監控器接管控制權,虛擬機監控器所在的CPU的通用寄存器內容被保存,之後專門的卸載虛擬機監控器函數被調用;步驟b、任何一個CPU卸載後啟動虛擬機過程如下1)將虛擬機中該CPU的其餘關鍵寄存器內容從VMCS中讀出,然後在虛擬機監控器中寫入CPU真實寄存器,使得虛擬機監控器中的環境和虛擬機中環境完全相同;2)設置關鍵寄存器,關閉虛擬機模式;步驟C、當所有CPU上的虛擬機監控器卸載後,調用作業系統函數釋放創建虛擬機監控器過程中所申請的內存,卸載虛擬機監控器所在作業系統驅動。所述的虛擬化內存獲取模塊通過以下方式進行加載步驟2. 1,在後啟動虛擬機模塊構建後啟動虛擬機監控器和虛擬機過程的步驟 1. 3之前開始加載虛擬化內存獲取模塊。步驟2. 2,獲取虛擬機物理內存地址和輸入輸出設備佔用內存物理地址的範圍,依此對包括但不限於Intel VT技術中的嵌套頁表技術(Extended Page Table。EPT)或AMD SVM 的快速虛擬化索引(Rapid Visualization Indexing, RVI)也稱 NPT(Nested Page Table)構建全等頁表。需要注意的是,在不支持硬體嵌套頁表翻譯技術的機器上,全等頁表的創建也可基於包括但不限於影子頁表(Shadow Page Table,SPT)或直接使用系統當前頁表的方法(以下將基於EPT、RVI、NPT、SPT或直接使用系統當前頁表的頁表統稱為嵌套頁表)。所述的全等頁表是指作業系統物理地址與真實物理地址完全相等的一一映射, 但訪問權限上略有差異,頁面大小為硬體支持的所有可能內存頁大小。構建該頁表使得在後續啟動虛擬機後硬體自動完成從虛擬機虛擬地址到虛擬機物理地址到真實物理地址的翻譯。頁表項的創建或更新可以是通過每次創建或更新一項或多項的形式完成。步驟2. 3,在後啟動虛擬機模塊構建後啟動虛擬機監控器和虛擬機過程的步驟 1. 3之中註冊構建的嵌套頁表的物理地址和嵌套頁面異常處理函數。修改虛擬機監控器內處理虛擬機經常性或周期性發生事件的函數,如虛擬機寫CR3寄存器事件的處理函數,使虛擬機在每次寫CR3寄存器並且需要獲取內存內容時執行獲取內存方法。所述的卸載已加載的虛擬化內存獲取模塊是指 步驟3. 1,在後啟動虛擬機模塊卸載後啟動虛擬機監控器和虛擬機過程的步驟a 之前開始卸載虛擬化內存獲取模塊。步驟3. 2,調用作業系統函數,釋放為存儲嵌套頁表相關的頁面結構所申請的內存。步驟3. 3,刪除VMCS中嵌套頁表的頁表指針,清空VMCS中對嵌套頁表的使用設置位。所述的獲得相應位置原來內存數據是指步驟4. 1,在接收到獲取內存內容的命令後,虛擬機監控器接管控制權。虛擬化內存獲取模塊的內存獲取控制子模塊接收到該獲取內存內容的命令後指示內存內容獲取子模塊進行內存獲取準備工作。虛擬化內存獲取模塊的內存內容獲取子模塊在嵌套頁表中指向虛擬機待獲取物理內存地址範圍的頁表項上去掉寫權限位,使得虛擬機物理內存不可寫。步驟4. 2,設置權限完成後,虛擬化內存獲取模塊請求虛擬機監控器將處理器控制權重新轉交到虛擬機,虛擬機中的作業系統和應用程式繼續運行。步驟4. 3,支持硬體虛擬化的處理器在虛擬機中嘗試寫虛擬機任何物理內存時會陷入虛擬機管理器中並且尚未修改目標內存內容。步驟4. 4,在虛擬機監控器中,虛擬機事件攔截處理子模塊的嵌套頁表處理函數首先獲取該頁內容並轉發到內存內容獲取子模塊(也可由嵌套頁表處理函數通知內存內容獲取子模塊可獲取的內存內容地址而由內存內容獲取子模塊負責具體的內存內容獲取過程)。內存內容獲取子模塊將該內容通過結果輸出子模塊利用作業系統提供的函數或自身實現的功能保存到外部設備或指定的內存區域中,然後獲取該頁臨近或非臨近的0個以上頁面內容並通過結果輸出子模塊利用作業系統提供的函數或自身實現的功能保存到外部設備或指定的內存區域中,接著內存內容獲取子模塊查找關聯到這些頁面的嵌套頁表頁表項,恢復它們的寫權限位確保不會重複陷入並更新已獲取內存頁列表。
步驟4. 5,虛擬化內存獲取模塊請求虛擬機監控器將處理器控制權重新轉交到虛擬機,虛擬機中的作業系統和應用程式繼續運行。步驟4. 6,虛擬機發生寫CR3寄存器事件並且獲取內存內容過程未完成時(包括但不限於該事件,可以是任何經常性或周期性發生的事件,如HLT),該事件導致陷入虛擬機管理器中。虛擬機事件攔截處理子模塊調用虛擬機寫CR3寄存器事件的的處理函數(但不限於該函數,具體被調用函數與造成陷入的具體事件有關)。步驟4. 7,虛擬機寫CR3寄存器事件的的處理函數首先處理寫CR3寄存器事件,然後同步驟4. 4和步驟4. 5,其中步驟4. 4為查找尚未被獲取的1個或多個頁,獲取這些頁的內容並通過 結果輸出子模塊利用作業系統提供的函數或自身實現的功能保存到外部設備或指定的內存區域中。步驟4. 8,當虛擬機中待獲取物理內存地址範圍上的所有內存內容均已獲取後,內存內容獲取過程完成。處理器控制權重新轉交到虛擬機,虛擬機中的作業系統和應用程式繼續運行。用戶可到指定的外部設備或內存區域中獲取系統得到的內存內容結果。本發明相對於現有技術具有以下優點首先,建立了適用於已有商業作業系統的一個輕量級的虛擬機監控器,與已有系統不同的是,該虛擬機監控器能夠將目標作業系統所在的物理機器在運行時被轉換為虛擬機主機處的虛擬機並提供虛擬機事件/異常/中斷攔截監測功能,以前同類型虛擬機監控器的安裝需要先於作業系統啟動完成並且不提供卸載功能,甚至於需要重新安裝要支持的作業系統,而該虛擬機監控器的安裝和卸載後於作業系統啟動完成並且在作業系統運行期間可以多次安裝/卸載該虛擬機監控器為毫秒級並且不招致顯著的暫停時間,更無需重新安裝作業系統。其次,在該虛擬機監控器的基礎上,內存獲取可以利用操縱虛擬機外額外地址翻譯的能力,在無需暫停機器的情況下產生準確的結果而且不引起顯著的性能影響。已有產品和方法則無法獲得準確的內存獲取結果,或者需要通過暫停機器運行的手段來保證結果準確性。最後,本系統獨立於已有作業系統和上層應用軟體的特性使得本系統易於部署在商業系統中,尤其適用於需要達到7X24 小時可用性的商業伺服器上。


圖1為本發明模塊示意圖。圖2為本發明架構示意圖。圖3為虛擬機構建和事件處理示意圖。圖4為虛擬化內存獲取模塊利用防寫來獲取內存內容的原理圖。
具體實施例方式下面對本發明的實施例作詳細說明,本實施例在以本發明技術方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發明的保護範圍不限於下述的實施例。實施例如圖2所示,本實施例涉及的計算機內存數據採集系統,包括後啟動虛擬機模塊和虛擬化內存獲取模塊,其中後啟動虛擬機模塊與硬體系統相連接,按照所提供的硬體接口構建或卸載後啟動虛擬機監控器和虛擬機,加載/卸載虛擬化內存獲取模塊並驅動CPU 攔截虛擬機內發生的虛擬機監控器指定的虛擬機事件、異常以及中斷,後啟動虛擬機模塊與虛擬化內存獲取系統相連接並傳輸內存獲取控制指令和虛擬機中內存內容信息,虛擬化內存獲取模塊與後啟動虛擬機模塊相連接並接受內存獲取控制指令和虛擬機中內存內容信息,此外虛擬化內存獲取模塊訪問目標作業系統獲得內存設備信息(在本實施例中為物理內存地址範圍信息)。如圖1所示,所述的後啟動虛擬機模塊包括虛擬機創建和卸載子模塊、虛擬機事件攔截處理子模塊,其中虛擬機創建和卸載子模塊驅動支持硬體虛擬化技術的硬體平臺完成構建或卸載後啟動虛擬機監控器和虛擬機,以及加載虛擬化內存獲取模塊(在本實施例中卸載虛擬化內存獲取模塊包含在卸載後啟動虛擬機監控器和虛擬機內完成)。虛擬機事件攔截處理子模塊接收並處理硬體攔截到的虛擬機內發生的虛擬機監控器指定的虛擬機事件、異常以及中斷並傳輸截獲的內存獲取控制指令和虛擬機中內存內容到虛擬化內存獲取模塊如圖1所示,所述的虛擬化內存獲取模塊包括內存獲取控制子模塊、內存 內容獲取子模塊、結果輸出子模塊,其中內存獲取控制子模塊負責監聽用戶指令,反饋內存獲取狀態。內存內容獲取子模塊用於接收虛擬機中內存內容信息並控制虛擬機物理內存到真實物理內存的映射和權限管理。結果輸出子模塊負責將接收到的內存數據保存到外部設備和指定內存區域。本實施例內部的後啟動虛擬機模塊和虛擬化內存獲取模塊的構建和運行過程如圖3所示。在本實施例中使用Intel VT技術,採用的嵌套頁表為EPT頁表,虛擬化內存獲取模塊擴展虛擬機監控器中的虛擬機寫CR3寄存器事件監控函數來獲取未被獲取的頁面每次獲取頁面內容時,均採用批量獲取臨近8個頁面的方式。在作業系統啟動完成之後插入虛擬機監控器層從而將物理機器在運行時被轉換為虛擬機主機處的虛擬機。而如圖3所示,通過如前文所示的虛擬機加載方法,可以完成物理機器到虛擬機的轉換而不致招致顯著的停機時間。從而達到易於部署的目的並為隨後的內存內容準確獲取提供基礎。圖4所示能夠確保虛擬機任何內存內容在更新到獲取區域之前,寫入操作因為違反防寫而被攔截從而陷入到虛擬機監控器,從而任何被本系統捕捉和輸出到外部設備或指定的內存區域中的內容都是寫入發生前的內容,以此來保證內存內容的獲取準確性。本實施例通過以下方式進行工作步驟一,在作業系統啟動完成後,以驅動的形式加載本系統,在特權模式下檢測硬體是否支持硬體虛擬化技術並為每個CPU執行後續虛擬化監控器安裝工作。步驟二,保存當前物理機器運行狀態。即保存通用硬體寄存器內容,然後從作業系統中分配內存用於虛擬機監控器的堆棧和VMXON、VMCS等關鍵結構體的使用。之後執行 VMXON指令,進入虛擬機特權模式。步驟三,通過解析內核數據結構的方法獲得作業系統關於已安裝物理內存的地址範圍和輸入輸出設備在內存地址空間中的映射範圍。以此信息為基礎對EPT構建全等頁表 (也可不詢問而對全部地址空間範圍對EPT構建全等頁表)。隨後在VMCS中啟用對EPT的支持並且保存EPT頁表的起始位置到VMCS中的EPT Pointer域中,使得在啟動虛擬機後硬體自動完成從虛擬機虛擬地址到虛擬機物理地址到真實物理地址的翻譯。步驟四,配置虛擬機環境,主要表現為設置VMCS結構體,填入虛擬機監控器和虛擬機接下來運行時需要的GDT、IDT、堆棧以及虛擬機監控器要監控的虛擬機內異常、中斷和事件,包括虛擬機寫CR3寄存器事件、中斷處理事件和EPT缺頁異常。其中特別注意虛擬機接下來運行的指令為後啟動虛擬機模塊初始化繼續執行的指令。步驟五,在虛擬機監控器中註冊已實現的虛擬機寫CR3寄存器事件處理函數、中斷處理函數和EPT缺頁異常處理函數,使得陷入後可根據相應的陷入原因來找到正確的處理函數。步驟六,開啟虛擬機,回到虛擬機模式。至此原來位於保護模式下的本地系統被置於虛擬機當中繼續運行。在多核模式下,回到步驟二為下一個CPU安裝虛擬機監控器。通過以上步驟安裝的虛擬機監控器可對之後用戶發出的獲取內存內容的命令進行響應。當之後某一時刻需要獲取內存內容時,具體過程如下步驟1,用戶使用位於虛擬機內用戶態或者內核態的程序/模塊發出可被虛擬機監控器攔截的特權指令,通知本系統開始獲取目標作業系統的物理內存內容。步驟2、在接收到獲取內存內容的命令後,CPU陷入到root模式,虛擬機監控器接管控制權。虛擬化內存獲取模塊的內存獲取控制子模塊接收到該獲取內存內容的命令後指示內存內容獲取子模塊進行內存獲取準備工作。虛擬化內存獲取模塊的內存內容獲取子模塊在EPT上設置目標作業系統的物理內存空間為不可寫。步驟3、虛擬化內存獲取模塊請求虛擬機監控器將處理器控制權重新轉交到虛擬機,虛擬機中的作業系統和應用程式繼續運行。步驟4、支持硬體虛擬化的處理器在虛擬機中嘗試寫虛擬機任何物理內存時陷入到虛擬機模式,並且尚未修改目標內存內容。在虛擬機監控器中,虛擬機事件攔截處理子模塊的EPT缺頁異常處理函數被調用並首先獲取該頁內容並轉發到內存內容獲取子模塊。內存內容獲取子模塊將該內容通過結果輸出子模塊利用作業系統提供的函數保存到外部設備或指定的內存區域中,然啟獲取該頁臨近或非臨近的0個以上頁面內容並利用作業系統提供的函數保存到外部設備或指定的內存區域中。最後內存內容獲取子模塊將已獲得的內存頁相應防寫從EPT中去除。回到步驟3。步驟5、如果虛擬機內發生寫CR3寄存器事件並且獲取內存內容過程未完成,該事件導致陷入虛擬機管理器中。虛擬機事件攔截處理子模塊調用虛擬機寫CR3寄存器事件的處理函數,該函數會幫助虛擬機填充新值到虛擬機的CR3寄存器中,此外,該函數會查找尚未被獲取的1個或多個頁,獲取這些頁面的內容並轉發到內存內容獲取子模塊。內存內容獲取子模塊利用作業系統提供的函數將該內容通過結果輸出子模塊保存到外部設備或指定的內存區域中。最後內存內容獲取子模塊將已獲得的內存頁相應防寫從EPT中去除。 回到步驟3。如果已經沒有尚未被獲取的頁面,則獲取內存內容過程結束,回到步驟3。步驟6、用戶到指定的外部設備或內存區域中獲取系統得到的內存內容結果,至此獲取內存內容過程完全結束。後啟動虛擬機模塊具體卸載實施例如下步驟a,卸載後啟動虛擬機的命令從虛擬機中對每一 CPU發出。在接收到卸載後啟動虛擬機的 命令後,虛擬機監控器接管控制權。虛擬機監控器所在的CPU的通用寄存器內容被保存,之後專門的卸載虛擬 機監控器函數被調用。步驟b、任何一個CPU卸載後啟動虛擬機過程如下1)分配數據內存,在其中寫入彙編指令,使得將虛擬機中該CPU的其餘關鍵寄存器內客從VMCS中讀出,然後在虛擬機監控器中寫入CPU真實寄存器。包括但不限於CR0、 CR3、CR4、EFLAGS\RFLAGS、各個段寄存器、IDTR、⑶TR等。需注意最後的返回地址為原來虛擬機中發出關閉指令程序的下一條指令。2)設置關鍵寄存器(CR4寄存器),關閉虛擬機模式。3)執行該數據內存包含的代碼。步驟C、當所有CPU上的虛擬機監控器卸載後,調用作業系統函數釋放創建虛擬機監控器過程中所申請的內存,卸載虛擬機監控器所在作業系統驅動。通過以上步驟,系統可以確保獲得的內存內容結果是用戶指定開始時刻的內存內容的準確結果,同時無論是在安裝/卸載系統還是在獲取內存內容過程當中均無需重新啟動或暫停目標系統。
權利要求
1.一種計算機內存數據準確採集系統,其特徵在於,包括後啟動虛擬機模塊和虛擬化內存獲取模塊,其中虛擬化內存獲取模塊訪問目標作業系統獲得內存設備信息,後啟動虛擬機模塊與硬體系統相連接並驅動支持硬體虛擬化技術的硬體平臺完成構建或卸載後啟動虛擬機監控器和虛擬機、加載或卸載虛擬化內存獲取模塊並驅動CPU攔截虛擬機內發生的虛擬機監控器指定的虛擬機事件、異常以及中斷,後啟動虛擬機模塊與虛擬化內存獲取模塊相連接並傳輸內存獲取控制指令和虛擬機中內存內容信息,虛擬化內存獲取模塊與後啟動虛擬機模塊相連接並接受內存獲取控制指令和虛擬機中內存內容信息。
2.根據權利要求1所述的計算機內存數據準確採集系統,其特徵是,所述的後啟動虛擬機模塊包括虛擬機創建和卸載子模塊、虛擬機事件攔截處理子模塊,其中虛擬機創建和卸載子模塊驅動支持硬體虛擬化技術的硬體平臺完成構建或卸載後啟動虛擬機監控器和虛擬機,以及加載/卸載虛擬化內存獲取模塊,虛擬機事件攔截處理子模塊接收並處理硬體攔截到的虛擬機內發生的虛擬機監控器指定的虛擬機事件、異常以及中斷並傳輸截獲的內存獲取控制指令和虛擬機中內存內容到虛擬化內存獲取模塊。
3.根據權利要求1或2所述的計算機內存數據準確採集系統,其特徵是,所述的虛擬化內存獲取模塊包括內存獲取控制子模塊、內存內容獲取子模塊、結果輸出子模塊,其中 內存獲取控制子模塊負責監聽用戶指令,反饋內存獲取狀態,內存內容獲取子模塊用於接收虛擬機中內存內容信息並控制虛擬機物理內存到真實物理內存的映射和權限管理,結果輸出子模塊負責利用作業系統提供的函數或自身實現的功能將接收到的內存數據保存到外部設備或指定的內存區域。
4.一種根據上述任一權利要求所述系統的信息獲取方法,其特徵在於,通過後啟動虛擬機模塊構建後啟動虛擬機監控器和虛擬機,將目標作業系統所在的物理機器在運行時轉換為虛擬機主機處的虛擬機並提供虛擬機事件、異常以及中斷攔截監測功能,虛擬化內存獲取模塊控制虛擬機物理內存到真實物理內存的映射和權限管理毫秒級暫停的完成對正在改寫內存區域的識別和準確獲得相應和鄰近或非鄰近位置原始內存數據。
5.根據權利要求4所述的信息獲取方法,其特徵是,所述方法具體過程為在作業系統啟動過程中或完成後,通過加載驅動的方法由後啟動虛擬機模塊構建後啟動虛擬機監控器和虛擬機並由虛擬化內存獲取模塊對本地系統內存信息進行登記並在需要準確獲取計算機內存數據的時刻,客戶發出內存獲取指令,虛擬化內存獲取模塊在收到由後啟動虛擬機模塊轉交的指令後開始獲得相應位置原來內存數據並輸出到外部設備或指定內存區域中。 在獲取內存內容任務完成或需要卸載虛擬化內存獲取模塊時,後啟動虛擬機模塊依次卸載已構建的後啟動虛擬機監控器和虛擬機並卸載已加載的虛擬化內存獲取模塊,將目標作業系統所在的虛擬機在運行時轉換為物理機器並卸載虛擬機事件、異常以及中斷攔截監測功能。
6.根據權利要求4或5所述的信息獲取方法,其特徵是,所述的後啟動虛擬機模塊構建後啟動虛擬機監控器和虛擬機是指步驟1. 1,利用作業系統內核態、用戶態或內核態混合用戶態的API調用,來實現在各個CPU核心上建立虛擬機監控器,從而適用於多核硬體系統;步驟1.2,保存寄存器內容,分配內存空間用於虛擬機監控器運行使用,包括但不限於堆棧空間,設置關鍵寄存器,配置輔助結構體,如Intel VT技術中的VMXON結構體並且修改相應MSR的內容啟用硬體虛擬化支持;步驟1. 3,進行對Intel VT技術中的VMCS或AMD SVM的VMCB的配置,來建立虛擬機運行環境並將本地系統裝入稍後運行的唯一存在的虛擬機中,同時配置虛擬機監控器環境和需要其處理的發生在虛擬機中的特殊事件並實現相應處理函數,在VMCS結構體中指定虛擬機啟動後運行的第一條指令為後啟動虛擬機模塊初始化繼續執行的指令;步驟1. 4,啟動虛擬機並將處理器控制權交給虛擬機,使用配置的虛擬機運行環境並開啟虛擬機運行;步驟1. 5,支持硬體虛擬化的處理器硬體會根據前述VMCS的配置信息,開始監控和攔截需要虛擬機監控器處理的敏感行為,保存虛擬機狀態到VMCS以及虛擬機監控器的指定內存區域並調用指定的處理函數進行處理;步驟1.6,虛擬機監控層完成對陷入事件的處理後,將處理器控制權重新轉交到虛擬機,虛擬機中的作業系統繼續運行,回到步驟1. 5並循環執行。
7.根據權利要求5所述的信息獲取方法,其特徵是,所述的後啟動虛擬機模塊卸載已構建的後啟動虛擬機監控器和虛擬機是指步驟a、卸載後啟動虛擬機的命令從虛擬機中對每個CPU發出,在接收到卸載後啟動虛擬機的命令後,虛擬機監控器接管控制權,虛擬機監控器所在的CPU的通用寄存器內容被保存,之後專門的卸載虛擬機監控器函數被調用;步驟b、任何一個CPU卸載後啟動虛擬機過程如下1)將虛擬機中該CPU的其餘關鍵寄存器內容從VMCS中讀出,然後在虛擬機監控器中寫入CPU真實寄存器,使得虛擬機監控器中的環境和虛擬機中環境完全相同;2)設置關鍵寄存器,關閉虛擬機模式;步驟c、當所有CPU上的虛擬機監控器卸載後,調用作業系統函數釋放創建虛擬機監控器過程中所申請的內存,卸載虛擬機監控器所在作業系統驅動。
8.根據權利要求4或5所述的信息獲取方法,其特徵是,所述的虛擬化內存獲取模塊通過以下方式進行加載步驟2. 1,在後啟動虛擬機模塊構建後啟動虛擬機監控器和虛擬機過程的步驟1. 3之前開始加載虛擬化內存獲取模塊;步驟2. 2,獲取虛擬機物理內存地址和輸入輸出設備佔用內存物理地址的範圍,依此對包括但不限於Intel VT技術中的嵌套頁表技術或AMD SVM的快速虛擬化索引構建全等頁表;步驟2. 3,在後啟動虛擬機模塊構建後啟動虛擬機監控器和虛擬機過程的步驟1. 3之中註冊構建的嵌套頁表的物理地址和嵌套頁面異常處理函數,修改虛擬機寫CR3寄存器事件的處理函數,使虛擬機在每次寫CR3寄存器並且需要獲取內存內容時執行獲取內存方法。
9.根據權利要求5所述的信息獲取方法,其特徵是,所述的卸載已加載的虛擬化內存獲取模塊是指步驟3. 1,在後啟動虛擬機模塊卸載後啟動虛擬機監控器和虛擬機過程的步驟a之前開始卸載虛擬化內存獲取模塊;步驟3. 2,調用作業系統函數,釋放為存儲嵌套頁表相關的頁面結構所申請的內存;步驟3. 3,刪除VMCS中嵌套頁表的頁表指針,清空VMCS中對嵌套頁表的使用設置位。
10.根據權利要求4或5所述的信息獲取方法,其特徵是,所述的獲得相應位置原來內存數據是指步驟4. 1,在接收到獲取內存內容的命令後,虛擬機監控器接管控制權,虛擬化內存獲取模塊的內存獲取控制子模塊接收到該獲取內存內容的命令後指示內存內容獲取子模塊進行內存獲取準備工作,虛擬化內存獲取模塊的內存內容獲取子模塊在嵌套頁表中指向虛擬機待獲取物理內存地址範圍的頁表項上去掉寫權限位,使得虛擬機物理內存不可寫; 步驟4. 2,設置權限完成後,虛擬化內存獲取模塊請求虛擬機監控器將處理器控制權重新轉交到虛擬機,虛擬機中的作業系統和應用程式繼續運行;步驟4. 3,支持硬體虛擬化的處理器在虛擬機中嘗試寫虛擬機任何物理內存時會陷入虛擬機管理器中並且尚未修改目標內存內容;步驟4. 4,在虛擬機監控器中,虛擬機事件攔截處理子模塊的嵌套頁表處理函數首先獲取該頁內容並轉發到內存內容獲取子模塊,內存內容獲取子模塊將該內容通過結果輸出子模塊利用作業系統提供的函數或自身實現的功能保存到外部設備或指定的內存區域中,然後獲取該頁臨近或非臨近的0個以上頁面內容並通過結果輸出子模塊利用作業系統提供的函數或自身實現的功能保存到外部設備或指定的內存區域中,接著內存內容獲取子模塊查找關聯到這些頁面的嵌套頁表頁表項,恢復它們的寫權限位確保不會重複陷入並更新已獲取內存頁列表;步驟4. 5,虛擬化內存獲取模塊請求虛擬機監控器將處理器控制權重新轉交到虛擬機, 虛擬機中的作業系統和應用程式繼續運行;步驟4. 6,虛擬機發生寫CR3寄存器事件時,該事件導致陷入虛擬機管理器中,虛擬機事件攔截處理子模塊調用虛擬機寫CR3寄存器事件的處理函數;步驟4. 7,虛擬機寫CR3寄存器事件的的處理函數首先處理寫CR3寄存器事件,然後同步驟4. 4和步驟4. 5,其中步驟4. 4為查找尚未被獲取的1個或多個頁,獲取這些頁的內容並通過結果輸出子模塊利用作業系統提供的函數或自身實現的功能保存到外部設備或指定的內存區域中;步驟4. 8,當虛擬機中待獲取物理內存地址範圍上的所有內存內容獲取完成後,獲取過程結束,處理器控制權重新轉交到虛擬機,虛擬機中的作業系統和應用程式繼續運行。
全文摘要
一種計算機應用技術領域的計算機內存數據準確採集系統,該系統包括後啟動虛擬機模塊和虛擬化內存獲取模塊。本發明基於硬體虛擬化技術,在作業系統和應用程式運行時動態加載虛擬機監控器,在物理機器正在運行時被轉換為虛擬機主機處的虛擬機不致招致顯著停機時間,通過控制虛擬機物理內存到真實物理內存的映射和權限管理完成對正在改寫內存區域的識別和讀取相應位置原來內存數據;可以準確獲取指定時刻計算機內存中的數據並且對內存的改動較小且與已有作業系統和應用程式耦合度極低;可以在作業系統和應用程式運行時動態卸載虛擬機監控器,使得之前處於虛擬機主機處的虛擬機在運行時被轉換為物理機器繼續運行並不致招致顯著的停機時間。
文檔編號G06F12/08GK102231138SQ20111019008
公開日2011年11月2日 申請日期2011年7月8日 優先權日2011年7月8日
發明者於淼, 戚正偉, 管海兵 申請人:上海交通大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀