本文只是学习此视频后的一些总结 不当之处还请指出

视频作者:小宝来了

视频连接:http://bbs.pediy.com/showthread.php?t=211973

约定:

本文中出现的名词

虚拟机 客户机 GUEST 都是被监控的操作系统或应用程序

宿主机 HOST Hypervisor都是指监控虚拟机的“原”操作系统

VMM:当客户机发生退出事件时,进入的就是VMM

VM:当客户机正常运行时就是VM

VMM监控VM

1.什么是虚拟机?

自己的理解是:运行在Hypervisor监控下的系统为虚拟机

以下内容摘自看雪论坛两个大牛

首先要说一下VMM(Virtual Machine Monitor),这个是虚拟机的监控器,监控着虚拟机的运行。比如虚拟机想执行一条指令:cpuid,这个时候被VMM捕捉到,然后VMM去模拟执行这条指令(模拟执行的意思是按我们自己的意愿去执行),然后返回给虚拟机,完成了一次vm exit。因为VMM需要执行ring0的指令,所以VMM需要运行在ring0下。
而VT使得CPU进入了一个全新的特殊模式(VMX模式),在这个模式下,CPU可以处于VMX root状态或者VMX non-root状态。处于VMX non-root操作状态下的CPU行为受到了某些方面的限制,关键的共享资源必须运行于VMX root操作状态的监控器的控制之下,并且,对于VMX non-root状态中的任何CPU特权都有效(只要处于VMX non-root状态,ring0 - ring3 都被监控)。因此,将VMM运行于VMX root操作状态,可以轻松监控管理客户操作系统(就是安装在虚拟机里面的操作系统)和客户应用程序(虚拟机里面操作系统里面安装的软件)。

----以上资料摘自看雪论坛海风月影

VT 技术方面, 因为VT技术比较新, 如果你对VT技术还不甚明白, 请先查看intel 文档. 中文不大好可以配合newbluepill那本书看, VT技术方面, 我使用它的下面几个特性. 
重定向中断. 对于1号中断, 属于硬件中断, 我会在windows中搜索0x20一下的中断号给1号中断使用. 对于3号中断属于软中断, 随便在IDT中搜索一个空的就OK了. 
MSR寄存器保护, 我在插件开启的时候会将MSR_IA32_SYSENTER_EIP 0x176 换掉, 换成我们实现的KiFastCallEntry. 在这里判断是否是我们需要出来的SSDT调用, 根据不同的SSDT调用我们转到不同的内核模块中. (我们重定位的模块, 或者是系统本身的模块)
VT技术还有很多特性, 比如CR寄存器访问, DR寄存器访问. 本来都想用上, 但是发现, 不行. 因为在CR寄存器访问, 和DR寄存器访问的时候, 我没有办法确定线程的运行上下文在那个进程, 线程环境中.. 所以针对Cr3的保护, 和DRx寄存器保护没有做. 
另外还有一个比较遗憾的地方是, 本来我决定要给整一个无限断点的. 后面因为项目搁置没有弄. 另外一个是想写一个类似NewBluePill的内存隐藏. 如果给台硬件调试器, 可以试试.

----以上资料摘自看雪论坛Ddvp插件作者JoenChen

2.VT启动流程:

详细见:intel手册 31.5章


VMX退出原因指示器:记录了什么原因导致产生退出事件的(比如触发了CPUID)

VMCS:记录了导致退出事件时的一些信息(寄存器同上下文)

虚拟机状态保存区:记录了当发生退出事件时的信息 用于恢复虚拟机的状态或我们修改

宿主机状态保存区:略

虚拟机运行控制域:定义虚拟机什么情况下发生退出事件

其它省略

3.VMX相关汇编指令






VMREAD当虚拟机发生退出事件时,使用VMREAD读取发生退出事件时的上下文

VMWRITE当虚拟机发生退出事件时,如果需要按我们的意愿执行 则使用次指令修改相关参数

VMCALL一个让虚拟机主动发生退出事件的指令用于关闭VT时

VMLAUNCH:启动虚拟机 并将控制权交于虚拟机

VMRESUME:用于在宿主机中恢复虚拟机运行并将控制权交给虚拟机

VMXOFF:关闭虚拟机

VMXON:启用一些VMX 指令

下一章将将检测CPU是否支持虚拟化

VT系列一:VT简述相关推荐

  1. CS CK VT系列贴片型铝电解电容器特点

    CS CK VT系列贴片型铝电解电容器就是宽温通用品,也就说电性和RVT贴片电解电容器和RST贴片电解电容器一样,105℃2000小时寿命,用于消费类电子.偶尔CS贴片电解电容器,CK贴片电解电容器和 ...

  2. 佳能各系列数码相机特点简述

    佳能各系列数码相机特点简述 [url]http://www.sina.com.cn[/url] 2005年01月25日 15:29 海龙资讯网 文/温暖的老猫 现在很多用户在购买产品的时候感到十分迷茫 ...

  3. VT系列二:检测是否支持虚拟化

    本文只是学习此视频后的一些总结 不当之处还请指出 视频作者:小宝来了 视频连接:http://bbs.pediy.com/showthread.php?t=211973 约定: 本文中出现的名词 虚拟 ...

  4. 虚拟机开启以后电脑非常卡_专主开VT电脑版手机安卓模拟器开启VT 模拟器开启VT 虚拟机打开VT...

    1.BIOS中的虚拟化技术 本文介绍了如何在主板BIOS中启用虚拟化技术(VT).要运行一些操作系统,虚拟化软件和虚拟机,硬件虚拟化就需要启用.大多数情况下,不需要虚拟化技术的操作系统可以正常运行在启 ...

  5. 服务器如何修改vt,云服务器vt

    云服务器vt 内容精选 换一换 待挂载的云硬盘与云服务器属于同一可用区.如果是非共享盘,待挂载的云硬盘为"可用"状态.如果是共享盘,待挂载的云硬盘为"正在使用" ...

  6. 干趴面试官系列 | 请你简述一下Kafka中的分区分配

    欢迎跳转到本文的原文链接:https://honeypps.com/mq/kafka-basic-knowledge-of-partition-assignors/ "请你简述一下Kafka ...

  7. MKS SERVO4257D 闭环步进电机_系列1 产品简述

    第1部分 产品概述 1.1 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品.具备脉冲接口,RS485接口和CAN接口,内置高 ...

  8. 【SOAP-WebService系列】SOAP简述

    文章目录 SOAP是什么? SOAP消息实例 SOAP和HTTP SOAP对HTTP的误用 w3c-Simple Object Access Protocol (SOAP) 1.1 w3school: ...

  9. python cnn模型_CNN系列模型发展简述(附github代码——已全部跑通)

    目录: 1 LeNet 2 AlexNet 3 VGG 4 GoogLeNet 5 ResNet 6 DenseNet 7 Non-Local Networks 8 Deformable Convol ...

最新文章

  1. iOS-ARC_Xcode检测循环引用
  2. php的echo 和 return的区别
  3. asp.net程序调用NTFS分区下Oracle客户端
  4. 抽了几天用Flex写了个上传小工具,支持批量上传,支持配置
  5. 在线检测PR值,外链,批量
  6. Uber无人车正式分拆:估值72.5亿美元,获孙正义和丰田10亿美元投资
  7. 简述开发Android2D图形,2D图形开发(一)(高级).pdf
  8. docker部署java项目_JAVA项目如何通过Docker实现持续部署
  9. php json对象转为字符串,JSON对象转化为字符串(附上代码详细解答)
  10. 计算机时间无法保存更改,怎样更改电脑右下角时间设置 不能修改怎么办
  11. Wlan学习—无线网络安全
  12. linux服务器系统时间和bios时间,Linux系统时间, 硬件BIOS时间的校准与同步
  13. Katana程序集列表
  14. AutoJs学习-变声器模板
  15. Oracle计算两个日期的月份
  16. 练习:数字时钟(Python 自定义类)
  17. Vue中为对象添加字段
  18. NUMA与英特尔下一代Xeon处理器学习心得
  19. F1-F12键的作用
  20. Python 接入飞书端口API - 实现共享空间的Excel更新

热门文章

  1. ODM 对象文档映射
  2. 周末愉快——程序猿的浪漫css画玫瑰礼盒
  3. STM32之音乐播放器
  4. 大数据学习——克隆虚拟机
  5. TreeSet,海康威视java校招面试题
  6. 软件工程第五章——总体设计
  7. w7电脑蓝屏怎么解决_win7家用版_电脑老是蓝屏怎么办? - Win7之家
  8. linux防火墙富规则,Firewalld防火墙富规则策略-实践案例下
  9. Cross_entropy和softmax
  10. win7 查看php版本信息,window_Windows系统版本怎么看?2种查看windows版本的方法介绍,前段时间微软正式开始向Win7和 - phpStudy...