吾无法无天
刚毕业的大学生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[VT虚拟化驱动]利用EPT实现无痕HOOK
本章利用讲EPT无痕HOOK原创 2020-12-06 23:02:04 · 16929 阅读 · 40 评论 -
[VT虚拟化驱动]启用EPT
文章目录前言一、EPT概述二、构建EPT1.思路2.代码实现三、本章代码前言一、EPT概述其实也就相当于r0与r3,在r3层的地址并不是真正对应到内存里的物理地址,而是虚拟地址,需要通过内核里对应的页表来查找才能得到真正的物理地址,但如果加载了VT,在r0层查出来的物理地址也变成了虚拟的,也需要通过一个页表来查得真正的物理地址,也就是EPT,有了EPT机制,就能在一台电脑里运行多个操作系统,就像一个操作系统里运行多个应用程序一原创 2020-12-05 16:19:22 · 3711 阅读 · 9 评论 -
[VT虚拟化驱动]正式启动VT
文章目录前言一、vmlaunch正式开始虚拟化二、使用步骤1.引入库2.读入数据总结前言本章开始真正实现一个最简单的VT框架,当然,只是能跑起来一个VT驱动了,没有并包括EPT,EPT后面再讲提示:以下是本篇文章正文内容,下面案例可供参考一、vmlaunch正式开始虚拟化执行VMLAUNCH指令执行后,就正式进入虚拟化了,再该指令执行之前,得先保存Guest当前的环境,执行完VMLAUNCH后,要恢复Guest的环境,让Guest就像什么都没发生一样,所以需要保存和恢复Guest的各种寄存器的值原创 2020-12-03 23:25:26 · 3307 阅读 · 8 评论 -
[VT虚拟化驱动]初始化VMCS
文章目录前言一些控制信息的字段说明1.基于针脚的vm执行控制信息域2.基于处理器的VM执行控件3.基于处理器的辅助vm执行控制信息域4.VM-EXIT控制域5.VM-ENTRY控制域代码编写工具函数1.用于获取段寄存器的各种信息(后面初始化GUEST区域要用到)2.用于填充各种控制区域3.读取段寄存器,GDT等开始初始化VMCS区域前言这是虚拟化驱动编写过程里最麻烦且最容易出错的部分,需要拦截的大多数功能也是在这里进行定义一些控制信息的字段说明VMCS中包含guest区域和host区域和虚拟机控原创 2020-11-22 22:07:52 · 1677 阅读 · 2 评论 -
[VT虚拟化驱动]VMXON
文章目录引入头文件一、执行VMXON1.文档说明2.代码编写二、退出HOST三、ia32.h引入头文件需要引入一个头文件(ia32.h),里面定义了很多我们需要用到的结构头文件下载地址:https://github.com/wbenny/ia32-doc/tree/master/out只需要ia32.h即可,下载后引入项目中,然后在def.h中包含,网速较慢不方便下载的话可以复制文章末尾的(有一点中文注释)一、执行VMXON1.文档说明31.5 VMM SETUP & TEAR D原创 2020-11-21 18:08:12 · 2081 阅读 · 9 评论 -
[VT虚拟化驱动] 定义类及初始化内存区域
文章目录前言框架整体流程图类的定义初始化内存区域本章代码前言为什么不用C而用C++呢?在单核的情况下,用C还比较方便些,但在多核的情况下,每个核心都需要分配有对应的一个VMX区域,VMCS区域,MsrBitmap区域和栈空间,以及对应的初始化函数,如果使用安装DPC回调的方式在多核情况下进行初始化,只使用同一个初始化函数,当函数被多个CPU核心同时执行,会出现很多意想不到的的错误,我用自旋锁试了一下是依照各种错误,所以果断用C++了,把这些每个核心都需要一份的封装到一个类里框架整体流程图类的定义原创 2020-11-12 18:38:27 · 1643 阅读 · 3 评论 -
[VT虚拟化驱动]安装DPC回调检测CPU对VT的支持
文章目录前言一、驱动基本框架二、安装DPC回调三、检测CPU对VT的支持本章代码def.h:DriverEntry.cpputil.cpp前言对于VT的介绍网上有很多详细的介绍,这里不再赘述,只需要知道它有比操作系统还高的权限,可以利用这一点进行某些操作,如内存隐藏, 无痕HOOK ,MSR HOOK, 调试或者反调试, 这里直奔主题一、驱动基本框架虚拟机设置里虚拟化引擎设置:新建一个空的WDM工程,平台设置为x64平台,右键属性——>Inf2Cat——>Run Inf2Cat设置原创 2020-11-10 14:11:34 · 3614 阅读 · 12 评论