首页
社区
课程
招聘
[原创]开源一份WIN7x64VT源码
发表于: 2015-12-4 20:52 13305

[原创]开源一份WIN7x64VT源码

2015-12-4 20:52
13305

支持X64下EPT开启,代码仿照joen的VT源码写的,在硬盘一年啦,没一点用,发出来给新手学习下,下代码的请点个赞,谢谢~!
交流QQ群,请去John大神的DdvpDbg群

写一下关于DR寄存器拦截
//DR寄存器字段结构如下
typedef struct _MOV_DR_QUALIFICATION {
        unsigned DebugRegIndex : 3;//记录访问的dr调试寄存器
        unsigned Reserved1 : 1;
        unsigned DirectionAccess : 1;//读还是写
        unsigned Reserved2 : 3;
        unsigned GeneralReg : 4;//记录使用的通用寄存器
        unsigned Reserved3 : 20;
} MOV_DR_QUALIFICATION, *PMOV_DR_QUALIFICATION;
//DR寄存器访问
BOOLEAN HandleDrAccess(PCPU pCpu, PGUEST_REGS pGuestRegs)
{
        ULONG32 Exit;
        ULONG32 DrREW = 0;
        ULONG64 Dr,RegDrn;
        ULONG64 Reg;
        HANDLE Thireaid,ProcessID;
        ULONG64 InstructionLength;
        ULONG64 GuestCr3;
        PMOV_DR_QUALIFICATION pExitQualification;
        ULONG64 RegDr0, RegDr1, RegDr2, RegDr3, RegDr6, RegDr7;
        //nt!KiSaveDebugRegisterState nt!KiRestoreDebugRegisterState:
        //只有这2个函数访问时候才有陷阱帧
        PKTRAP_FRAME TrapFrame = (PKTRAP_FRAME)(pGuestRegs->rbp - 0x80);
        ULONG64 GuestDr7;// = (ULONG32)TrapFrame->Dr7;
        PDEBUG_DR7 pRegDr7;// = (PDEBUG_DR7)&GuestDr7;
        ULONG64 GuestRip = ReadVMCS(GUEST_RIP);
        RegDr0 = RegGetDrn(0);
        RegDr1 = RegGetDrn(1);
        RegDr2 = RegGetDrn(2);
        RegDr3 = RegGetDrn(3);
        RegDr6 = RegGetDrn(6);
        RegDr7 = RegGetDrn(7);
        Thireaid = PsGetCurrentThreadId();
        ProcessID = PsGetCurrentProcessId();
        GuestCr3 = ReadVMCS(GUEST_CR3);
       
        Exit = (ULONG32)ReadVMCS(EXIT_QUALIFICATION);
        pExitQualification = (PMOV_DR_QUALIFICATION)&Exit;
       
        if (MOV_FROM_DR == pExitQualification->DirectionAccess)//判断读 从
        {
                Dr = RegGetDrn(pExitQualification->DebugRegIndex);
                SetReg(pGuestRegs, pExitQualification->GeneralReg, Dr);
        }
        if (MOV_TO_DR == pExitQualification->DirectionAccess)//判断写
        {
                Reg = GetReg(pGuestRegs, pExitQualification->GeneralReg);
            RegSetDrn(pExitQualification->DebugRegIndex, Reg);
        }
        InstructionLength = ReadVMCS(VM_EXIT_INSTRUCTION_LEN);
        WriteVMCS(GUEST_RIP, ReadVMCS(GUEST_RIP) + InstructionLength);
        return TRUE;
}
拦截DR寄存器在虚拟机里不能同时拦截INT3异常或者INT1一起开启,
如果同时拦截,当产生int1 int3异常,虚拟机会卡死,个人觉得是虚拟机的BUG


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 3
支持
分享
最新回复 (51)
雪    币: 62
活跃值: (971)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
赞一个,下载看看
2015-12-4 21:06
0
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
嗯,没看懂
2015-12-5 01:14
0
雪    币: 284
活跃值: (3574)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
4
thx4share
2015-12-5 03:03
0
雪    币: 191
活跃值: (848)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
5
支持支持支持支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持支持支持
支持支持支持支持▓▓▓▓▓▓▓支▓▓▓支持▓▓▓▓▓支持支持支持支持支持支
支持支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓支持支持支持支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓支持支持支持支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持支▓▓▓▓▓▓▓▓▓▓▓支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持▓▓▓▓▓▓▓▓▓▓支持支持支▓▓▓▓▓▓支持支▓▓▓▓▓▓▓支持支持
支持支持支持支持▓▓▓▓支持支持支▓▓▓▓支持支持支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓支持支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓▓支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓▓支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓支持▓▓▓▓支持▓▓▓▓▓支持支持支
支持▓▓支持支▓▓▓▓▓支持支持▓▓▓支持▓▓▓支持支▓▓▓▓▓支持支持支
支持▓▓▓▓▓▓▓▓▓▓支持支持支▓▓支持▓▓支持支持▓▓▓▓▓支持支持支
支持支▓▓▓▓▓▓▓▓▓支持支持支持支持▓▓▓支持支持支▓▓▓▓支持支持支
支持支持支▓▓▓▓▓▓▓支持支持支持支持▓▓▓支▓▓▓▓支持支持支持支持支
支持支持支持▓▓▓▓▓▓支持支持支持支▓▓▓▓支持▓▓▓▓▓支持支持支持支
支持支持支持支持支▓▓▓支持支持支持▓▓▓▓▓支持支▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持▓▓▓▓▓▓支持支持支▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支▓▓▓▓▓▓支持支持支持▓▓▓▓▓▓▓支持支
支持支持支持支持支持支持支持▓▓▓▓▓支持支持支持支持支▓▓▓▓▓▓支持支
支持支持支持支持支持支持支▓▓▓▓▓支持支持支持支持支持支▓▓▓▓支持支持
支持支持支持支持支持支持▓▓▓支持支持支持支持支持支持支持支▓▓▓支持支持
2015-12-17 20:35
0
雪    币: 12310
活跃值: (5068)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
多谢楼主分享哟
2015-12-17 21:19
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢
2015-12-18 11:46
0
雪    币: 302
活跃值: (246)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
8
支持大神,居然开启了EPT
2015-12-18 16:17
0
雪    币: 10939
活跃值: (2895)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
9
支持支持支持支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持支持支持
支持支持支持支持▓▓▓▓▓▓▓支▓▓▓支持▓▓▓▓▓支持支持支持支持支持支
支持支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓支持支持支持支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓支持支持支持支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持支▓▓▓▓▓▓▓▓▓▓▓支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持▓▓▓▓▓▓▓▓▓▓支持支持支▓▓▓▓▓▓支持支▓▓▓▓▓▓▓支持支持
支持支持支持支持▓▓▓▓支持支持支▓▓▓▓支持支持支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓支持支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓▓支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓▓支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓支持▓▓▓▓支持▓▓▓▓▓支持支持支
支持▓▓支持支▓▓▓▓▓支持支持▓▓▓支持▓▓▓支持支▓▓▓▓▓支持支持支
支持▓▓▓▓▓▓▓▓▓▓支持支持支▓▓支持▓▓支持支持▓▓▓▓▓支持支持支
支持支▓▓▓▓▓▓▓▓▓支持支持支持支持▓▓▓支持支持支▓▓▓▓支持支持支
支持支持支▓▓▓▓▓▓▓支持支持支持支持▓▓▓支▓▓▓▓支持支持支持支持支
支持支持支持▓▓▓▓▓▓支持支持支持支▓▓▓▓支持▓▓▓▓▓支持支持支持支
支持支持支持支持支▓▓▓支持支持支持▓▓▓▓▓支持支▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持▓▓▓▓▓▓支持支持支▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支▓▓▓▓▓▓支持支持支持▓▓▓▓▓▓▓支持支
支持支持支持支持支持支持支持▓▓▓▓▓支持支持支持支持支▓▓▓▓▓▓支持支
支持支持支持支持支持支持支▓▓▓▓▓支持支持支持支持支持支▓▓▓▓支持支持
支持支持支持支持支持支持▓▓▓支持支持支持支持支持支持支持支▓▓▓支持支持
2015-12-18 17:03
0
雪    币: 10939
活跃值: (2895)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
10
顶了,大大,能不能稍微说下环境和适用情况啊。实际应用需要注意什么呢
2015-12-18 17:11
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢!学习
2015-12-18 17:25
0
雪    币: 281
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
看不懂耶。。。。
2015-12-20 15:15
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
好人一身平安    0。0
2015-12-21 22:54
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
看看大神的作品
2015-12-21 23:38
0
雪    币: 764
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
Thank you so much!
2015-12-22 00:01
0
雪    币: 24953
活跃值: (1028)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
赞一下.支持.
2015-12-22 08:14
0
雪    币: 89
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
看雪里牛B的人好多啊
2015-12-22 09:11
0
雪    币: 1392
活跃值: (5142)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
18
VT MARK 谢谢
2015-12-22 09:31
0
雪    币: 677
活跃值: (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
大牛你好,这个代码在Win10 x64运行会出错,不停出现Page Fault,请问您在这里有研究吗?
2015-12-29 15:53
0
雪    币: 69
活跃值: (242)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wmg
20
VT,,屌~
2015-12-29 15:59
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
感谢分享,收藏了
2015-12-29 16:13
0
雪    币: 6976
活跃值: (1467)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
22
呵呵.. 早就应该放出来了!!
2015-12-29 17:13
0
雪    币: 3725
活跃值: (614)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
23
果然是厉害角色啊. 赞一个.
2015-12-29 18:14
0
雪    币: 231
活跃值: (2631)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
24
应该是么个字段你没填对
2015-12-29 19:21
0
雪    币: 1722
活跃值: (729)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
支持开源!!!
2015-12-29 19:53
0
游客
登录 | 注册 方可回帖
返回
//