首页
社区
课程
招聘
[原创]VT入门---- 闭门造VT [有码]
发表于: 2011-12-24 18:36 61186

[原创]VT入门---- 闭门造VT [有码]

2011-12-24 18:36
61186

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 6
支持
分享
最新回复 (48)
雪    币: 318
活跃值: (41)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
EXIT_REASON 的所有类型注释

VirtualBox\src\VBox\VMM\VMMR3\HWACCM.cpp

EXIT_REASON(VMX_EXIT_EXCEPTION          ,  0, "Exception or non-maskable interrupt (NMI)."),
    EXIT_REASON(VMX_EXIT_EXTERNAL_IRQ       ,  1, "External interrupt."),
    EXIT_REASON(VMX_EXIT_TRIPLE_FAULT       ,  2, "Triple fault."),
    EXIT_REASON(VMX_EXIT_INIT_SIGNAL        ,  3, "INIT signal."),
    EXIT_REASON(VMX_EXIT_SIPI               ,  4, "Start-up IPI (SIPI)."),
    EXIT_REASON(VMX_EXIT_IO_SMI_IRQ         ,  5, "I/O system-management interrupt (SMI)."),
    EXIT_REASON(VMX_EXIT_SMI_IRQ            ,  6, "Other SMI."),
    EXIT_REASON(VMX_EXIT_IRQ_WINDOW         ,  7, "Interrupt window."),
    EXIT_REASON_NIL(),
    EXIT_REASON(VMX_EXIT_TASK_SWITCH        ,  9, "Task switch."),
    EXIT_REASON(VMX_EXIT_CPUID              , 10, "Guest software attempted to execute CPUID."),
    EXIT_REASON_NIL(),
    EXIT_REASON(VMX_EXIT_HLT                , 12, "Guest software attempted to execute HLT."),
    EXIT_REASON(VMX_EXIT_INVD               , 13, "Guest software attempted to execute INVD."),
    EXIT_REASON(VMX_EXIT_INVPG              , 14, "Guest software attempted to execute INVPG."),
    EXIT_REASON(VMX_EXIT_RDPMC              , 15, "Guest software attempted to execute RDPMC."),
    EXIT_REASON(VMX_EXIT_RDTSC              , 16, "Guest software attempted to execute RDTSC."),
    EXIT_REASON(VMX_EXIT_RSM                , 17, "Guest software attempted to execute RSM in SMM."),
    EXIT_REASON(VMX_EXIT_VMCALL             , 18, "Guest software executed VMCALL."),
    EXIT_REASON(VMX_EXIT_VMCLEAR            , 19, "Guest software executed VMCLEAR."),
    EXIT_REASON(VMX_EXIT_VMLAUNCH           , 20, "Guest software executed VMLAUNCH."),
    EXIT_REASON(VMX_EXIT_VMPTRLD            , 21, "Guest software executed VMPTRLD."),
    EXIT_REASON(VMX_EXIT_VMPTRST            , 22, "Guest software executed VMPTRST."),
    EXIT_REASON(VMX_EXIT_VMREAD             , 23, "Guest software executed VMREAD."),
    EXIT_REASON(VMX_EXIT_VMRESUME           , 24, "Guest software executed VMRESUME."),
    EXIT_REASON(VMX_EXIT_VMWRITE            , 25, "Guest software executed VMWRITE."),
    EXIT_REASON(VMX_EXIT_VMXOFF             , 26, "Guest software executed VMXOFF."),
    EXIT_REASON(VMX_EXIT_VMXON              , 27, "Guest software executed VMXON."),
    EXIT_REASON(VMX_EXIT_CRX_MOVE           , 28, "Control-register accesses."),
    EXIT_REASON(VMX_EXIT_DRX_MOVE           , 29, "Debug-register accesses."),
    EXIT_REASON(VMX_EXIT_PORT_IO            , 30, "I/O instruction."),
    EXIT_REASON(VMX_EXIT_RDMSR              , 31, "RDMSR. Guest software attempted to execute RDMSR."),
    EXIT_REASON(VMX_EXIT_WRMSR              , 32, "WRMSR. Guest software attempted to execute WRMSR."),
    EXIT_REASON(VMX_EXIT_ERR_INVALID_GUEST_STATE,  33, "VM-entry failure due to invalid guest state."),
    EXIT_REASON(VMX_EXIT_ERR_MSR_LOAD       , 34, "VM-entry failure due to MSR loading."),
    EXIT_REASON_NIL(),
    EXIT_REASON(VMX_EXIT_MWAIT              , 36, "Guest software executed MWAIT."),
    EXIT_REASON_NIL(),
    EXIT_REASON_NIL(),
    EXIT_REASON(VMX_EXIT_MONITOR            , 39, "Guest software attempted to execute MONITOR."),
    EXIT_REASON(VMX_EXIT_PAUSE              , 40, "Guest software attempted to execute PAUSE."),
    EXIT_REASON(VMX_EXIT_ERR_MACHINE_CHECK  , 41, "VM-entry failure due to machine-check."),
    EXIT_REASON_NIL(),
    EXIT_REASON(VMX_EXIT_TPR                , 43, "TPR below threshold. Guest software executed MOV to CR8."),
    EXIT_REASON(VMX_EXIT_APIC_ACCESS        , 44, "APIC access. Guest software attempted to access memory at a physical address on the APIC-access page."),
    EXIT_REASON_NIL(),
    EXIT_REASON(VMX_EXIT_XDTR_ACCESS        , 46, "Access to GDTR or IDTR. Guest software attempted to execute LGDT, LIDT, SGDT, or SIDT."),
    EXIT_REASON(VMX_EXIT_TR_ACCESS          , 47, "Access to LDTR or TR. Guest software attempted to execute LLDT, LTR, SLDT, or STR."),
    EXIT_REASON(VMX_EXIT_EPT_VIOLATION      , 48, "EPT violation. An attempt to access memory with a guest-physical address was disallowed by the configuration of the EPT paging structures."),
    EXIT_REASON(VMX_EXIT_EPT_MISCONFIG      , 49, "EPT misconfiguration. An attempt to access memory with a guest-physical address encountered a misconfigured EPT paging-structure entry."),
    EXIT_REASON(VMX_EXIT_INVEPT             , 50, "INVEPT. Guest software attempted to execute INVEPT."),
    EXIT_REASON_NIL(),
    EXIT_REASON(VMX_EXIT_PREEMPTION_TIMER   , 52, "VMX-preemption timer expired. The preemption timer counted down to zero."),
    EXIT_REASON(VMX_EXIT_INVVPID            , 53, "INVVPID. Guest software attempted to execute INVVPID."),
    EXIT_REASON(VMX_EXIT_WBINVD             , 54, "WBINVD. Guest software attempted to execute WBINVD."),
    EXIT_REASON(VMX_EXIT_XSETBV             , 55, "XSETBV. Guest software attempted to execute XSETBV."),
    EXIT_REASON_NIL()
2011-12-24 18:39
0
雪    币: 100
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
这个必须得顶!!!
2011-12-24 19:00
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这是神马????
2011-12-24 19:04
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
强帖留名啊...我的天啊..膜拜啊...
2011-12-24 19:08
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
虽然看不懂,但是觉得好牛逼
2011-12-24 19:12
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
cpuid是拦截个什么过程呀??楼主可不可以详细说明一下。
要是代码加个缩进就好了。
2011-12-24 20:11
0
雪    币: 1602
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
是好东西,不知道怎么看
后面的可以拦截CPU指令是什么意思?在虚拟机中拦截?
2011-12-25 04:28
0
雪    币: 318
活跃值: (41)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
后面是VMM已经启动, VMM 监控操作系统的运行
而CPUID这个指令是会主动触发#VMExit的,不用配置VMCS

1 无条件事件CPUID GETSEC INVD XSETBV 所有 VMX指令

如果事件ID == VMX_EXIT_CPUID 就代表执行的是 CPUID
2011-12-25 17:23
0
雪    币: 51
活跃值: (61)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
不错 顶    .
2011-12-25 19:30
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
11
学习。谢谢分享
2011-12-25 22:48
0
雪    币: 405
活跃值: (2280)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
虽然已经很老了,但还是不错。
2011-12-26 14:13
0
雪    币: 405
活跃值: (2280)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
参考很久以前 ROOTKIT.COM上的例子,在VMEXIT里处理,修改GUEST各寄存器的返回值,来达到修改CPUID结果的效果。
2011-12-26 14:16
0
雪    币: 287
活跃值: (583)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
VMM不是只能接管虚拟机环境中执行的指令而引发的#VMExit,你那个CPUID好象直接就是在R3真实机下的一个程序,这难道也能被VMM接管?
2011-12-26 16:25
0
雪    币: 1737
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
虽然看不懂,但是还想要留个名儿~~
2011-12-26 16:53
0
雪    币: 318
活跃值: (41)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
VT就是对硬件的一个虚拟化 , VMM 就是管理这个抽象的硬件平台,其权限是大于真机系统的,
所以真机执行的一些指令是要经过VMM的处理的,
除cpuid指令外还有很多,比如
LGDT, LIDT, SGDT,  SIDT ,LLDT, LTR, SLDT,  STR

另外还可以轻松接管 int 1  , int 3  , 所以昆山滴水VT可以实现那样强大的调试功能,
2011-12-26 17:59
0
雪    币: 287
活跃值: (583)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
17
以前只知道由 VMX root进入到VMX non-root之后,VMX non-root的虚拟环境才会被VMM给监视,VMX non-root会根据VM-execution control的信息会判断那些指令的执行该产生#VMEXIT,还真不知道VMM能直接监控真实机的指令执行
2011-12-26 18:41
0
雪    币: 318
活跃值: (41)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
18
cpuid 是无条件触发,跟VMX指令一样,不用设置VM-execution control
所以实验起来比较简单
2011-12-26 19:04
0
雪    币: 287
活跃值: (583)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
19
看样子是我错误理解LZ的意思了,LZ也错误理解我的意思了,我之前以为LZ说的是VMM能监控到非VMX non-root模式下指令执行。
LZ再接再厉把软VT也写了吧!
2011-12-26 20:10
0
雪    币: 615
活跃值: (585)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
20
好开头,高端实验室产品
2012-1-1 22:03
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
进来就顶下了。
2012-1-3 06:46
0
雪    币: 106
活跃值: (276)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
22
这篇文章威力很强大啊,准备深度拜读......
2012-1-3 19:27
0
雪    币: 237
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
ding VT~~~~~~~~~~~~~
2012-1-8 00:04
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
强帖 看不懂 留名~~
2012-1-8 17:35
0
雪    币: 6976
活跃值: (1482)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
25
VT技术可以开始研究了. 哈哈.. 这个必须得顶啊
2012-1-17 13:43
0
游客
登录 | 注册 方可回帖
返回
//