原理參考 3卷 23.7節等本節實施流程參考intel手冊: 3卷 31.5節
上一節,檢測了 vmx 需要的環境;最後乙個 cr4.[13/vmxe] 只檢測了是否已經被開啟(有別的虛擬機器);
但是 沒有在 cr4.[13/vmxe] ==0 的時候去開啟。
所以 這裡 開始 開鎖;開啟 cr4.[13]
放在 驅動載入函式中。
接下來的最簡流程:(參考*** 3卷31.5節)
這裡 紅色部分是需要實現的部分:
即:首先需要一開記憶體來管理 host 資訊(cpu 管理;我們提供記憶體即可)設定 cr4.[13/vmxe] ==0 的時候關閉;然後需要設定版本號
放在驅動解除安裝函式中
.cpp(開啟 、關閉 vmx的函式實現)
#include "stdafx.h"vmx_cpug_vmxcpu;
boolean
isvtenabled()
// 2. check msr 3ah
*((pulong)&
msr) = (ulong) asm_readmsr(msr_ia32_feature_control);// 0x3ah
if(msr.lock
!=1)
// 3. check cr0\cr4
*((pulong)&
ucr0) =
asm_getcr0();
*((pulong)&
ucr4) =
asm_getcr4();
if(ucr0.pe!=1
||ucr0.pg!=1
||ucr0.ne
!=1)
if(ucr4.vmxe
==1)
else
log("checked, the env is prepared!",0);
return
true;}
ntstatus
startvirtualtechnology()
*((pulong)&
ucr4) =
asm_getcr4();//get cr4;
ucr4.vmxe
=1;// vmxe =1 enable
asm_setcr4(*(pulong)&
ucr4); // set
g_vmxcpu.pvmxonregion
=exallocatepoolwithtag(nonpagedpool,0x1000,'vmx');// para@3 is digit value
rtlzeromemory(g_vmxcpu.pvmxonregion,0x1000);// initial memory
*(pulong)g_vmxcpu.pvmxonregion
=1;//set revision; -- the first 32bits of vmxonregion; clear the no.32bit
g_vmxcpu.pvmxonregion_pa
=mmgetphysicaladdress(g_vmxcpu.pvmxonregion);// get physical address
vmx_vmxon(g_vmxcpu.pvmxonregion_pa.lowpart,g_vmxcpu.pvmxonregion_pa.highpart);
*((pulong)&
ueflags) =
asm_geteflags();
if(ueflags.cf
!=0)// the flag to identify state of success or not
return
status_success;}
ntstatus
stopvirtualtechnology()
.c (驅動檔案,呼叫vmx開啟關閉函式)
#include "stdafx.h"extern_cvoid
asm_xx();
extern_c
boolean
isvtenabled();
extern_c
ntstatus
startvirtualtechnology();
extern_c
ntstatus
stopvirtualtechnology();
void
driverunload(pdriver_object
driver)
ntstatus
driverentry(
pdriver_object
driver ,
punicode_string
registrypath)
DirectX 3D 基本框架 四
繼續擴充套件原來的d3d基本框架。這次將新增地形類庫。做出如下修改 1.增加乙個terrain頭 庫檔案。清單 file terrain.h by tianzhihen 2008.10.27,msvc 8.0 ifndef terrainh define terrainh include d3dut...
Poc框架 Pocsuite3簡介 安裝 基本使用
pocsuite3 是由 知道創宇 404實驗室 開發維護的開源遠端漏洞測試和概念驗證開發框架。pocsuite3 採用 python3 編寫,支援驗證,利用 及 shell 三種外掛程式模式,你可以指定單個目標或者從檔案匯入多個目標,使用單個 poc 或者 poc 集合進行漏洞的驗證或利用。可以使...
MFC基本框架
mfc基本框架 by 小戴 發表於 2006 12 21 15 59 00 mfc 應用程式框架 1 mfc 簡介 mfc microsoft foundation class 是由微軟公司編寫的一套專門用於 windows 程式設計的 c 基礎類庫,vc 程式設計基本上都是圍繞著 mfc 類庫來進...