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

[原创]开源一份WIN7x64VT源码

2015-12-4 20:52
12758
支持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

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 3
打赏
分享
最新回复 (51)
雪    币: 62
活跃值: (901)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
wonderzdh 1 2015-12-4 21:06
2
0
赞一个,下载看看
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
轩辕追命 2015-12-5 01:14
3
0
嗯,没看懂
雪    币: 284
活跃值: (3269)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
囧囧 2015-12-5 03:03
4
0
thx4share
雪    币: 191
活跃值: (848)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
Netfairy 11 2015-12-17 20:35
5
0
支持支持支持支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持支持支持
支持支持支持支持▓▓▓▓▓▓▓支▓▓▓支持▓▓▓▓▓支持支持支持支持支持支
支持支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓支持支持支持支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓支持支持支持支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持支▓▓▓▓▓▓▓▓▓▓▓支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持▓▓▓▓▓▓▓▓▓▓支持支持支▓▓▓▓▓▓支持支▓▓▓▓▓▓▓支持支持
支持支持支持支持▓▓▓▓支持支持支▓▓▓▓支持支持支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓支持支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓▓支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓▓支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓支持▓▓▓▓支持▓▓▓▓▓支持支持支
支持▓▓支持支▓▓▓▓▓支持支持▓▓▓支持▓▓▓支持支▓▓▓▓▓支持支持支
支持▓▓▓▓▓▓▓▓▓▓支持支持支▓▓支持▓▓支持支持▓▓▓▓▓支持支持支
支持支▓▓▓▓▓▓▓▓▓支持支持支持支持▓▓▓支持支持支▓▓▓▓支持支持支
支持支持支▓▓▓▓▓▓▓支持支持支持支持▓▓▓支▓▓▓▓支持支持支持支持支
支持支持支持▓▓▓▓▓▓支持支持支持支▓▓▓▓支持▓▓▓▓▓支持支持支持支
支持支持支持支持支▓▓▓支持支持支持▓▓▓▓▓支持支▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持▓▓▓▓▓▓支持支持支▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支▓▓▓▓▓▓支持支持支持▓▓▓▓▓▓▓支持支
支持支持支持支持支持支持支持▓▓▓▓▓支持支持支持支持支▓▓▓▓▓▓支持支
支持支持支持支持支持支持支▓▓▓▓▓支持支持支持支持支持支▓▓▓▓支持支持
支持支持支持支持支持支持▓▓▓支持支持支持支持支持支持支持支▓▓▓支持支持
雪    币: 11585
活跃值: (4343)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xie风腾 2015-12-17 21:19
6
0
多谢楼主分享哟
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bnbsoft 2015-12-18 11:46
7
0
感谢
雪    币: 302
活跃值: (246)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
一二三六 2015-12-18 16:17
8
0
支持大神,居然开启了EPT
雪    币: 10416
活跃值: (2445)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
joker陈 2015-12-18 17:03
9
0
支持支持支持支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持支持▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持支持支持
支持支持支持支持▓▓▓▓▓▓▓支▓▓▓支持▓▓▓▓▓支持支持支持支持支持支
支持支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓支持支持支持支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓支持支持支持支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持支▓▓▓▓▓▓▓▓▓▓▓支持支持支持
支▓▓▓▓▓▓▓▓▓▓▓▓支持支持支持▓▓▓▓▓▓▓▓▓▓▓▓▓▓支持支持
支持▓▓▓▓▓▓▓▓▓▓支持支持支▓▓▓▓▓▓支持支▓▓▓▓▓▓▓支持支持
支持支持支持支持▓▓▓▓支持支持支▓▓▓▓支持支持支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓支持支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓▓支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓▓支▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支持▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓▓支▓▓▓▓支持▓▓▓▓▓支持支持支
支持支持支持支持▓▓▓▓支持支持▓▓▓支持▓▓▓▓支持▓▓▓▓▓支持支持支
支持▓▓支持支▓▓▓▓▓支持支持▓▓▓支持▓▓▓支持支▓▓▓▓▓支持支持支
支持▓▓▓▓▓▓▓▓▓▓支持支持支▓▓支持▓▓支持支持▓▓▓▓▓支持支持支
支持支▓▓▓▓▓▓▓▓▓支持支持支持支持▓▓▓支持支持支▓▓▓▓支持支持支
支持支持支▓▓▓▓▓▓▓支持支持支持支持▓▓▓支▓▓▓▓支持支持支持支持支
支持支持支持▓▓▓▓▓▓支持支持支持支▓▓▓▓支持▓▓▓▓▓支持支持支持支
支持支持支持支持支▓▓▓支持支持支持▓▓▓▓▓支持支▓▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支持▓▓▓▓▓▓支持支持支▓▓▓▓▓▓支持支持
支持支持支持支持支持支持支持支▓▓▓▓▓▓支持支持支持▓▓▓▓▓▓▓支持支
支持支持支持支持支持支持支持▓▓▓▓▓支持支持支持支持支▓▓▓▓▓▓支持支
支持支持支持支持支持支持支▓▓▓▓▓支持支持支持支持支持支▓▓▓▓支持支持
支持支持支持支持支持支持▓▓▓支持支持支持支持支持支持支持支▓▓▓支持支持
雪    币: 10416
活跃值: (2445)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
joker陈 2015-12-18 17:11
10
0
顶了,大大,能不能稍微说下环境和适用情况啊。实际应用需要注意什么呢
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kkmv 2015-12-18 17:25
11
0
谢谢!学习
雪    币: 281
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
QuebecJY 2015-12-20 15:15
12
0
看不懂耶。。。。
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
starea紫眸 2015-12-21 22:54
13
0
好人一身平安    0。0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jkld 2015-12-21 23:38
14
0
看看大神的作品
雪    币: 764
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dagangwood 2015-12-22 00:01
15
0
Thank you so much!
雪    币: 22617
活跃值: (983)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
suiyingjie 2015-12-22 08:14
16
0
赞一下.支持.
雪    币: 89
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
骑着蚂蚁 2015-12-22 09:11
17
0
看雪里牛B的人好多啊
雪    币: 1412
活跃值: (4484)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
IamHuskar 4 2015-12-22 09:31
18
0
VT MARK 谢谢
雪    币: 677
活跃值: (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fishgs 2015-12-29 15:53
19
0
大牛你好,这个代码在Win10 x64运行会出错,不停出现Page Fault,请问您在这里有研究吗?
雪    币: 69
活跃值: (242)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wmg 2015-12-29 15:59
20
0
VT,,屌~
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
luskyc 2015-12-29 16:13
21
0
感谢分享,收藏了
雪    币: 6991
活跃值: (1272)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
JoenChen 4 2015-12-29 17:13
22
0
呵呵.. 早就应该放出来了!!
雪    币: 3687
活跃值: (564)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
逻辑错误 1 2015-12-29 18:14
23
0
果然是厉害角色啊. 赞一个.
雪    币: 231
活跃值: (2631)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
sxpp 1 2015-12-29 19:21
24
0
应该是么个字段你没填对
雪    币: 1667
活跃值: (666)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qqmcb 2015-12-29 19:53
25
0
支持开源!!!
游客
登录 | 注册 方可回帖
返回