VT系列一:VT簡述

本文只是學習此視頻後的一些總結 不當之處還請指出

視頻作者:小寶來了

視頻連接:http://bbs.pediy.com/showthread.php?t=211973 

約定:

本文中出現的名詞

虛擬機 客戶機 GUEST 都是被監控的操作系統或應用程序

宿主機 HOST Hypervisor都是指監控虛擬機的“原”操作系統


VMM:當客戶機發生退出事件時,進入的就是VMM

VM:當客戶機正常運行時就是VM


VMM監控VM



1.什麼是虛擬機?

自己的理解是:運行在Hypervisor監控下的系統爲虛擬機


以下內容摘自看雪論壇兩個大牛

首先要說一下VMMVirtual Machine Monitor),這個是虛擬機的監控器,監控着虛擬機的運行。比如虛擬機想執行一條指令:cpuid,這個時候被VMM捕捉到,然後VMM模擬執行這條指令(模擬執行的意思是按我們自己的意願去執行),然後返回給虛擬機,完成了一次vm exit。因爲VMM需要執行ring0的指令,所以VMM需要運行在ring0下。
VT使得CPU進入了一個全新的特殊模式(VMX模式),在這個模式下,CPU可以處於VMX root狀態或者VMX non-root狀態。處於VMX non-root操作狀態下的CPU行爲受到了某些方面的限制,關鍵的共享資源必須運行於VMX root操作狀態的監控器的控制之下,並且,對於VMX non-root狀態中的任何CPU特權都有效(只要處於VMX non-root狀態,ring0 - ring3 都被監控)。因此,將VMM運行於VMX root操作狀態,可以輕鬆監控管理客戶操作系統(就是安裝在虛擬機裏面的操作系統)和客戶應用程序(虛擬機裏面操作系統裏面安裝的軟件)。

                                                                                                                                                                        ----以上資料摘自看雪論壇海風月影

 

VT 技術方面因爲VT技術比較新如果你對VT技術還不甚明白請先查看intel 文檔中文不大好可以配合newbluepill那本書看, VT技術方面我使用它的下面幾個特性
重定向中斷對於1號中斷屬於硬件中斷我會在windows中搜索0x20一下的中斷號給1號中斷使用對於3號中斷屬於軟中斷隨便在IDT中搜索一個空的就OK
MSR
寄存器保護我在插件開啓的時候會將MSR_IA32_SYSENTER_EIP 0x176 換掉換成我們實現的KiFastCallEntry. 在這裏判斷是否是我們需要出來的SSDT調用根據不同的SSDT調用我們轉到不同的內核模塊中. (我們重定位的模塊或者是系統本身的模塊)
VT
技術還有很多特性比如CR寄存器訪問, DR寄存器訪問本來都想用上但是發現不行因爲在CR寄存器訪問DR寄存器訪問的時候我沒有辦法確定線程的運行上下文在那個進程線程環境中.. 所以針對Cr3的保護DRx寄存器保護沒有做
另外還有一個比較遺憾的地方是本來我決定要給整一個無限斷點的後面因爲項目擱置沒有弄另外一個是想寫一個類似NewBluePill的內存隱藏如果給臺硬件調試器可以試試

 

                                                                                                                                            ----以上資料摘自看雪論壇Ddvp插件作者JoenChen



2.VT啓動流程:

詳細見:intel手冊 31.5章






VMX退出原因指示器:記錄了什麼原因導致產生退出事件的(比如觸發了CPUID)

VMCS:記錄了導致退出事件時的一些信息(寄存器同上下文)





虛擬機狀態保存區:記錄了當發生退出事件時的信息 用於恢復虛擬機的狀態或我們修改

宿主機狀態保存區:略

虛擬機運行控制域:定義虛擬機什麼情況下發生退出事件

其它省略



3.VMX相關彙編指令






VMREAD當虛擬機發生退出事件時,使用VMREAD讀取發生退出事件時的上下文

VMWRITE當虛擬機發生退出事件時,如果需要按我們的意願執行 則使用次指令修改相關參數

VMCALL一個讓虛擬機主動發生退出事件的指令用於關閉VT時

VMLAUNCH:啓動虛擬機 並將控制權交於虛擬機

VMRESUME:用於在宿主機中恢復虛擬機運行並將控制權交給虛擬機

VMXOFF:關閉虛擬機

VMXON:啓用一些VMX 指令


下一章將將檢測CPU是否支持虛擬化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章