3 基本框架 VMXON

2021-09-30 01:17:11 字數 3855 閱讀 5523

原理參考 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_cpu

g_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_c

void

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 類庫來進...