首页
论坛
课程
招聘
[原创]VT虚拟化架构编写视频教程①~⑥课(已修复链接)
2016-8-2 13:05 57824

[原创]VT虚拟化架构编写视频教程①~⑥课(已修复链接)

2016-8-2 13:05
57824

前言:
虚拟化技术(VT)自被那个300W的滴水调试器利用之后终于被挖掘出在软件调试方面的强大功能。
坛友海风月影也有对VT这门Intel处理器技术做了简单介绍,当时我看到他的文章后,感觉VT这门技术很厉害的样子,然而当时我也只是初入内核编程,并没有考虑太多。
但是,近来VT已经被应用到游戏保护上面去了,所以我决定找点资料,研究这门技术。
在这里特别感谢Ddvp插件作者JoenChen做的OD插件,利用VT来构建自己的调试体系简直无人能敌。
然而后来我发现国内VT的资料几乎没有,找了很久,终于找到某论坛自己出的VT视频教程,看他们的教程目录,几乎是把VT的全部潜力给挖掘了出来,但我一看到价格(他们还要收报名费!)杠杠的,这门技术真的值这么多钱?
没有资料就算了吧,自己看Intel手册来学习,同样也要感谢论坛上一些网友写的VT代码,没有他们的代码,我也就只能在BugCheck中徘徊了。
出于以上原因,我自己弄了一套写VT虚拟化框架的教程,也算是对这门VT技术的贡献了吧。


本套教程仅仅只是构建了VT的框架而已,并不深入研究VT的具体功能(内存隐藏技术、无限硬件断点技术、接管系统中断和异常处理技术、构建新内核调试体系技术、内核重载技术等),但在教程里我会稍微提一下,并没有写具体功能的代码。至少,通过构建虚拟化体系能做到虚拟机占坑,*但仍然不能处理掉当前使用VT保护的大型游戏*。

视频目录如下:
第①课:汇编代码以及虚拟化知识讲解。
第②课:搭建驱动环境、检测当前处理器是否支持虚拟化技术。
第③课:构建VM-EXIT退出事件系统。
第④课:装载VMXON、VMCS区域的各个部分,运行虚拟机。
第⑤课:移植VT到Win7以及多核模式VT实现。(*)
第⑥课:将VT移植到64位Win7系统中。(*)


2016年8月28日 更正:
第⑥课的exithandler有点问题,课程里面写错了,这里纠正下:
HandleMsrWrite的rax和rdx进行或操作时,rdx应该向左移动32位 而我的代码用了向右移动32位。
64位系统下宿主机读取/写入MSR寄存器时,有几个特殊的要从VMCS表里读取/写入

void HandleMsrRead()
{
	ULONG64 uCPUID;
	uCPUID = KeGetCurrentProcessorNumber();
	switch(g_GuestRegs[uCPUID].rcx)
	{
	case MSR_IA32_SYSENTER_CS:
		{
			g_GuestRegs[uCPUID].rax = Vmx_VmRead(GUEST_SYSENTER_CS);
			g_GuestRegs[uCPUID].rdx = Vmx_VmRead(GUEST_SYSENTER_CS) >> 32;
			break;
		}
	case MSR_IA32_SYSENTER_ESP:
		{
			g_GuestRegs[uCPUID].rax = Vmx_VmRead(GUEST_SYSENTER_ESP);
			g_GuestRegs[uCPUID].rdx = Vmx_VmRead(GUEST_SYSENTER_ESP) >> 32;
			break;
		}
	case MSR_IA32_SYSENTER_EIP:	// KiFastCallEntry
		{
			g_GuestRegs[uCPUID].rax = Vmx_VmRead(GUEST_SYSENTER_EIP);
			g_GuestRegs[uCPUID].rdx = Vmx_VmRead(GUEST_SYSENTER_EIP) >> 32;
			break;
		}
	case MSR_FS_BASE:
		{
			g_GuestRegs[uCPUID].rax = Vmx_VmRead(GUEST_FS_BASE);
			g_GuestRegs[uCPUID].rdx = Vmx_VmRead(GUEST_FS_BASE) >> 32;
			break;
		}
	case MSR_GS_BASE:
		{
			g_GuestRegs[uCPUID].rax = Vmx_VmRead(GUEST_GS_BASE);
			g_GuestRegs[uCPUID].rdx = Vmx_VmRead(GUEST_GS_BASE) >> 32;
			break;
		}
	case MSR_EFER:
		{
			g_GuestRegs[uCPUID].rax = Asm_ReadMsr(MSR_EFER);
			g_GuestRegs[uCPUID].rdx = Asm_ReadMsr(MSR_EFER) >> 32;
			break;
		}
	default:
// ##########################################################
		g_GuestRegs[uCPUID].rax = Asm_ReadMsr(g_GuestRegs[uCPUID].rcx);
		g_GuestRegs[uCPUID].rdx = Asm_ReadMsr(g_GuestRegs[uCPUID].rcx) >> 32;
// ##########################################################
	}

}

void HandleMsrWrite()
{
	ULONG64 uCPUID;
	uCPUID = KeGetCurrentProcessorNumber();
	switch(g_GuestRegs[uCPUID].rcx)
	{
	case MSR_IA32_SYSENTER_CS:
		{
			Vmx_VmWrite(GUEST_SYSENTER_CS,g_GuestRegs[uCPUID].rax|(g_GuestRegs[uCPUID].rdx<<32));
			break;
		}
	case MSR_IA32_SYSENTER_ESP:
		{
			Vmx_VmWrite(GUEST_SYSENTER_ESP,g_GuestRegs[uCPUID].rax|(g_GuestRegs[uCPUID].rdx<<32));
			break;
		}
	case MSR_IA32_SYSENTER_EIP:	// KiFastCallEntry
		{
			Vmx_VmWrite(GUEST_SYSENTER_EIP,g_GuestRegs[uCPUID].rax|(g_GuestRegs[uCPUID].rdx<<32));
			break;
		}
	case MSR_FS_BASE:
		{
			Vmx_VmWrite(GUEST_FS_BASE,(g_GuestRegs[uCPUID].rax)|(g_GuestRegs[uCPUID].rdx<<32));
			break;
		}
	case MSR_GS_BASE:
		{
			Vmx_VmWrite(GUEST_GS_BASE,(g_GuestRegs[uCPUID].rax)|(g_GuestRegs[uCPUID].rdx<<32));
			break;
		}
	case MSR_EFER:
		{
			Asm_WriteMsr(MSR_EFER,(g_GuestRegs[uCPUID].rax)|(g_GuestRegs[uCPUID].rdx<<32));
			break;
		}
	default:
// ##########################################################
		Asm_WriteMsr(g_GuestRegs[uCPUID].rcx,(g_GuestRegs[uCPUID].rax)|(g_GuestRegs[uCPUID].rdx<<32));
// ##########################################################
	}

}



下载链接:
前四课解压密码:Xiaobao
其他课程解压密码在压缩包注释内,回答问题即可知道密码。
百度云 https://pan.baidu.com/s/10sr91DcHLJTxrHdFOjp21A 密码:0vmp


【看雪培训】《Adroid高级研修班》2022年夏季班招生中!

最后于 2018-6-23 08:04 被小宝来了编辑 ,原因: 修复链接
收藏
点赞10
打赏
分享
最新回复 (162)
雪    币: 1079
活跃值: 活跃值 (445)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
小宝来了 活跃值 1 2016-8-2 13:06
2
0
沙发就自己坐啦
雪    币: 95
活跃值: 活跃值 (21)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
xiaohouhui 活跃值 1 2016-8-2 13:07
3
0
我草,楼主太给力了
雪    币: 23
活跃值: 活跃值 (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
靴子 活跃值 2016-8-2 13:08
4
0
有兴趣 mark一下~!
雪    币: 31
活跃值: 活跃值 (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
网瘾犯了 活跃值 2016-8-2 13:16
5
0
谢谢分享 对于我这样还没入门的人来说太给力了
雪    币: 42
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zzxxaa 活跃值 2016-8-2 13:27
6
0
支持一下谢谢
雪    币: 608
活跃值: 活跃值 (263)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
ugvjewxf 活跃值 2016-8-2 13:27
7
0
https://github.com/tandasat/DdiMon   其实能讲解下这个代码也不错的,里面还是有很多代码看不大懂,
雪    币: 773
活跃值: 活跃值 (73)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
ghostway 活跃值 1 2016-8-2 13:31
8
0
这个都做视频教程了
雪    币: 26
活跃值: 活跃值 (303)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lhb天羽 活跃值 2016-8-2 13:33
9
0
怎么能这么流弊!
雪    币: 4694
活跃值: 活跃值 (4699)
能力值: ( LV17,RANK:787 )
在线值:
发帖
回帖
粉丝
无名侠 活跃值 12 2016-8-2 13:34
10
0
小宝太给力。
雪    币: 135
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ntDownload 活跃值 2016-8-2 13:55
11
0
我草楼主,太给力了
雪    币: 345
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
OnlyForU 活跃值 2016-8-2 14:08
12
0
狂赞!!!!
雪    币: 345
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
OnlyForU 活跃值 2016-8-2 14:10
13
0
楼主说的VT视频教程是什么论坛的啊?
雪    币: 4904
活跃值: 活跃值 (1101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
blindtiger 活跃值 1 2016-8-2 14:12
14
0
先支持100个
雪    币: 90
活跃值: 活跃值 (424)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
loveqiao 活跃值 2016-8-2 14:29
15
0
谢谢楼主分享   来学习学习
雪    币: 215
活跃值: 活跃值 (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qqsunqiang 活跃值 2016-8-2 14:50
16
0
谢谢楼主的分享。
雪    币: 152
活跃值: 活跃值 (613)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Yecate 活跃值 2016-8-2 14:56
17
0
解压密码呢
雪    币: 26
活跃值: 活跃值 (303)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lhb天羽 活跃值 2016-8-2 15:07
18
0
居然有个压缩密码?
雪    币: 6904
活跃值: 活跃值 (601)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
JoenChen 活跃值 4 2016-8-2 15:13
20
0
图文并茂哈!
雪    币: 1079
活跃值: 活跃值 (445)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
小宝来了 活跃值 1 2016-8-2 15:19
21
0
膜拜大神,感谢你发的OD插件,没有你,哪能有今天!
雪    币: 135
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ntDownload 活跃值 2016-8-2 15:34
22
0
楼上那些问要压缩密码的都是盲人?
对得起楼主吗?
雪    币: 78
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZChameleon 活跃值 2016-8-2 15:50
23
0
QQ群真的没写错么
雪    币: 198
活跃值: 活跃值 (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lwykj 活跃值 2016-8-2 15:57
24
0
这的支持!
雪    币: 1079
活跃值: 活跃值 (445)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
小宝来了 活跃值 1 2016-8-2 16:06
25
0
写错了 不好意思。
应该是555087477
游客
登录 | 注册 方可回帖
返回