1. 基于IntelVt技术的Linux内核调试器- 引言与IntelVT-x 技术简介
来源:互联网 发布:如何提高软件质量 编辑:程序博客网 时间:2024/06/06 03:19
1.1 引言
硬件辅助虚拟技术,顾名思义就是硬件支持虚拟化,一般特指CPU的虚拟化。物理CPU虚拟出一个虚拟CPU给客户机使用,并且提供特权级保护支持,虚拟机软件不必关心指令的解析以及特权指令造成的安全问题。这种技术方便了虚拟机的开发,同时也提升了虚拟机的性能。
硬件虚拟化技术除了可以提高虚拟机性能外还有很多其它的用途,例如软件加密与保护,还可以被恶意程序利用。在2006年8月3日的拉斯韦加斯的黑帽大会上,COSEINC的安全研究员JoannaRutkowska演示了一个叫做BluePill的恶意程序,该程序使用硬件虚拟化技术侵入Windows操作系统底层并完美地隐藏起来,所有的AntiRootkit工具均无法检测其存在。
硬件虚拟化技术还可以应用到调试与反调试领域。很多恶意程序都有反调试功能,而基于硬件虚拟化技术的调试器作为VMM,可以优于操作系统响应并拦截调试异常,完美地将自己隐藏起来,被调试的代码很难进行反调试。难以被检测是基于硬件虚拟化技术的调试器最主要的优点。
图1-1传统内核调试器、虚拟化调试器与操作系统层次对比
2010年AristideFattori等人建立hyperdbg开源项目,该项目基于NewBlue Pill部分代码,最初实现了一个基于IntelVT-x技术的Windows内核调试器,后来又支持Linux操作系统,但一直以来该项目进度迟缓,调试器功能单一且Bug太多,无法进行实际应用。本文重新设计了一个基于IntelVT-x的内核调试器,名字叫VMXICE,实现了调试器的基本功能以及符号的解析,满足对Linux内核模块的调试需求。
1.2 Intel VT-x技术简介
支持VT-x技术的CPU有两种运行模式,VMX模式和非VMX模式。VMX模式就是支持VT技术的主要模式,而非VMX模式则与不支持VT-x技术的CPU运行模式完全相同。而VMX模式又分为两种操作模式,VMXroot模式和为VMXnon-root模式,VMXroot模式是提供给VMM使用的,在这种模式下可以调用VMX指令集,VMM用以创建和管理虚拟机。而VMXnon-root模式就是虚拟机运行的模式,这种模式不支持VMX指令集。
VT技术有两种转换,分别为VMEntry和VMExit。VMEntry就是从VMXroot模式切换到VMXnon-root模式,简单的说,就是VMM切换到虚拟机这个转换过程。VMExit就是从VMXnon-root模式切换到VMXroot模式,同理可理解为从虚拟机返回到VMM这个过程。
图1-2VMM与客户机的切换
另外每个硬件虚拟的CPU都有一个表示其状态以及控制其特性的结构,VT-x技术的叫做VMCS。该结构包含3个部分:版本标志、VMX退出原因、数据区。而数据区则包含大量与CPU状态和控制相关的信息,包括虚拟机状态保存区(各种寄存器)、宿主机状态保存区、虚拟机运行控制域、VMEntry行为控制域、VMExit行为控制域、VMExit信息域。
支持VT-x技术的指令集叫做VMX指令集,该指令集总共有10条指令,如表1.1所示。
表1-1VMX指令集
指令
作用
VMPTRLD
加载一个VMCS结构体指针作为当前操作对象
VMPTRST
保存当前VMCS结构体指针
VMCLEAR
清除当前VMCS结构体
VMREAD
读VMCS结构体指定域
VMWRITE
写VMCS结构体指定域
VMCALL
引发一个VMExit事件,返回到VMM
VMLAUNCH
启动一个虚拟机
VMRESUME
从VMM返回到虚拟机继续运行
VMXOFF
退出VMX操作模式
VMXON
进入VMX操作模式
- 1. 基于IntelVt技术的Linux内核调试器- 引言与IntelVT-x 技术简介
- 2.基于IntelVt技术的Linux内核调试器- 调试器主要原理与环境搭建
- 4 基于IntelVt技术的Linux内核调试器- 调试器设计与实现(2):调试核心
- 3.基于IntelVt技术的Linux内核调试器- 调试器设计与实现(1):基本框架
- 5 基于IntelVt技术的Linux内核调试器主要问题以及解决
- linux内核的调试技术
- Linux 内核调试技术
- Linux内核调试技术
- linux 内核调试技术
- Linux内核调试技术
- 开源项目-基于Intel VT技术的Linux内核调试器
- 开源项目-基于Intel VT技术的Linux内核调试器
- linux内核调试平台与内核调试技术
- linux 内核oops调试技术
- Linux内核调试技术指南
- Linux内核调试技术指南
- Linux内核Kprobes调试技术
- linux 内核oops调试技术
- linux命令ln
- Ubuntu: PPA
- bit-map
- osg 学习之十六:osgconv工具(android支持的纹理格式)
- 又见一帘幽梦
- 1. 基于IntelVt技术的Linux内核调试器- 引言与IntelVT-x 技术简介
- openssl安装配置
- POJ 3834 Graph Game 博弈 dfs+并查集剪枝
- 用C与脚本的混合编程来处理配置文件
- bash 脚本编程二十 GlassFishV3自动部署
- Core Data 编程指南
- Redhat linux 双显示器设置( dual monitor )
- Codeforces Round #139 (Div. 2)
- Box2D 像素(pixels)