CN106293873A - 一种准确获取虚拟机控制块(vmcs)中关键数据位置的方法 - Google Patents

一种准确获取虚拟机控制块(vmcs)中关键数据位置的方法 Download PDF

Info

Publication number
CN106293873A
CN106293873A CN201610619153.3A CN201610619153A CN106293873A CN 106293873 A CN106293873 A CN 106293873A CN 201610619153 A CN201610619153 A CN 201610619153A CN 106293873 A CN106293873 A CN 106293873A
Authority
CN
China
Prior art keywords
vmcs
particular values
critical data
target data
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610619153.3A
Other languages
English (en)
Other versions
CN106293873B (zh
Inventor
阳晓宇
党艳平
刘生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing VRV Software Corp Ltd
Original Assignee
Beijing VRV Software Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing VRV Software Corp Ltd filed Critical Beijing VRV Software Corp Ltd
Priority to CN201610619153.3A priority Critical patent/CN106293873B/zh
Publication of CN106293873A publication Critical patent/CN106293873A/zh
Application granted granted Critical
Publication of CN106293873B publication Critical patent/CN106293873B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种准确获取虚拟机控制块(VMCS)中关键数据位置的方法,该方法步骤如下:(1)生成8个数值为奇数的特殊数值;(2)读取一个VMCS关键数据作为待定位目标数据;(3)保存目标数据的数值;(4)根据目标数据的数值长度选择对应的特殊数值;(5)将选取的特殊数值写入目标数据中;(6)在VMCS所在内存中搜索写入的特殊数值,对应位置就是目标数据在VMCS中的位置;(7)目标数据中重新写入保存的原始数据;(8)重复(2)‑(7)步骤则可获得VMCS中所有关键数据的位置。本申请的技术方案根据关键数据长度不同写入对应的特殊数值从而在VMCS内存中仅会有唯一特殊数值,通过在VMCS中搜索写入的特殊数值便可准确判定关键数据的位置,极大提升了获取VMCS中关键数据位置的准确性。

Description

一种准确获取虚拟机控制块(VMCS)中关键数据位置的方法
技术领域
本发明申请的技术属于计算机芯片虚拟化分析和管理领域,特别是涉及针对英特尔的芯片工作模式中通常采用的虚拟机控制块(VMCS)中关键核心数据实现定位的方法。
背景技术
在处理器技术的发展中,虚拟技术是一项重大的技术改进。传统的IA32处理器架构并不是一个十分可靠的虚拟化架构,为了解决这个问题,英特尔通过VT-x技术对原有架构进行了扩展补充。在虚拟化环境中,需要频繁切换不同虚拟CPU和宿主机CPU的寄存器及相关信息,这类运算最早由软件来完成。VT-x技术的核心就是在宿主机内存中开辟一块专门的空间用于保存虚拟CPU寄存器及相关数据,并由硬件指令来完成不同CPU的切换工作,以此来提升虚拟化的效率。这个专门的空间被称为虚拟机控制块(Virtual MachineControl Block,VMCS)。每个VMCS对应一个虚拟CPU(VCPU),而VMCS在使用时要与逻辑CPU绑定,一个逻辑CPU在任意的一个时间点都只能绑定一个VMCS,而VMCS在不同的时刻是可以和不同的逻辑CPU绑定的。VMCS用来绑定和解除绑定的命令分别是VMPTRLD和VMCLEAR,而用来对VMCS数据域进行读写的指令分别为VMREAD和VMWRITE。VMCS结构是一个4KB大小的内存空间,其中在偏移0处是VMCS版本标识,偏移4处是VMX失败指示,这里将存放因VM-Exit执行不成功而产生的VMX失败原因,而在偏移8处的VMCS数据域,这个数据域分成三部分:状态区域,控制区域和VM退出信息区域,如下表。
客户机状态域是用来保存非根模式VCPU运行状态的,当发生VM-Exit时,VCPU的当前运行状态将写入客户机状态域(并非全部,另有一部分为VMM控制的软件部分,下同),而当VM-Entry发生时,CPU会将客户机状态域中保存的状态加载到自己身上从而保证顺利地切换到非 根操作模式。而宿主机状态域则用来保存在根操作模式下CPU的运行状态,它仅仅在发生VM-Exit时将状态值写入CPU中,而在VMEntry发生时不进行保存操作。控制区域中VM-Entry控制域和VM-Exit控制域是对VM-Entry和VM-Exit操作的具体行为进行控制规定的地方,如VM-Entry控制域中的MSR加载、事件注入控制和VM-Exit控制域中的主机地址空间等,而VM执行控制域的作用是控制VM-Exit操作发生时的行为,比如某些敏感指令、异常和中断是否产生VM-Exit操作,也就是说只要是在这个控制域里列明的指令,都是可根据实际情况进行VM-Exit操作的开启和关闭操作的。当然没有写入控制域的一些指令也会产生VM-Exit操作,那些指令可以称之为无条件VM-Exit指令,凡是产生VM-Exit操作的指令都会由VMM来模拟完成。VM-Exit信息域比较简单,存放的是VM-Exit产生的原因和具体的分类细化指标。
研究人员通常需要获取保存在VMCS数据结构中的关键数据来分析虚拟机内部信息。获取的通常方法是首先读出特定关键数据的值,再搜索整个VMCS所处内存空间,寻找和读出的数值一致的位置,最后将该位置判定为关键数据的位置。该方法有一个致命问题,即同一个数值可能在VMCS中存在多处,遇到这种情况就无法判定关键数据在VMCS中的位置,即如果内存中有多个同样的数值,上述VMCS数据结构中的关键数据获取方法就完全失效。本申请的技术方案就是为了解决上述问题提出将根据关键数据长度不同写入对应的特殊数值,由于关键数据的应用特性,导致写入的特殊数值在一般工作场景中是非法的,即VMCS中不应该出 现该类数据。当这类数值被刻意写入关键数据中后,VMCS所在内存中仅会有一个特殊数值,通过在VMCS中搜索写入的特殊数值便可准确判定关键数据的位置。
发明内容
本申请的技术方案就是为了解决同一数值在VMCS中存在多处时无法唯一确定其位置的缺陷,提出一种判定关键数据在VMCS中的位置的方法。实现上述发明目的的步骤为:(1)生成8个数值为奇数的特殊数值;(2)读取一个VMCS关键数据作为待定位目标数据;(3)保存目标数据的数值;(4)根据目标数据的数值长度选择对应的特殊数值;(5)将选取到的特殊数值写入目标数据中;(6)在VMCS所在内存中搜索写入的特殊数值,对应位置就是目标数据在VMCS中的位置;(7)目标数据中重新写入保存的原始数据;(8)重复(2)-(7)步骤则可获得VMCS中所有关键数据的位置。上述方法中,生成的8特殊数值为长度分别为1、2、3、4、5、6、7、8个字节。该方法的核心技术包括特殊数值的赋值与数值搜索两部分:第一,特殊数值选取。在VMCS中保存的关键数据几乎都是地址数据,由于操作系统的特性,使得这些地址所指向的数据都是以2的N次幂(N>=1)对齐,所以这些地址一定是偶数。因此本专利中选取较大的奇数作为特殊数值。同时,由于关键数据的长度范围是1字节至8字节,因此本专利分别针对不同长度的关键数据设置长度为1字节到8字节的8个较大奇数作为特殊数值。第二,数值搜索。本专利不同于其它方式搜索获取到的合法数据,而是先根据关键数据长度不同写入对应的特殊数值,之后再在VMCS所在内存中搜索写入的特殊数值。由于写入特殊数值的非法性,这保证了搜索结果的唯一性。因此可以准确判定关键数据在VMCS中的位置。
本申请的技术方案针对Intel芯片中添加了硬件辅助虚拟化技术(VT-x)的虚拟化环境中进行的定位方法,VMCS关键数据的读取指令为VMREAD,特殊数值写入目标数据中的指令为VMWRITE均为INTEl 芯片VMCS标准控制命令。
申请技术方案根据关键数据长度不同写入对应的特殊数值,由于关键数据的应用特性,导致写入的特殊数值在一般工作场景中是非法的,即VMCS中不应该出现该类数据。因此当这类数值被刻意写入关键数据中后,VMCS所在内存中仅会有一个特殊数值,通过在VMCS中搜索写入的特殊数值便可准确判定关键数据的位置。极大提升了获取VMCS中关键数据位置的准确性。
具体实施方式
为更清楚说明本发明技术方案,下面具体进行介绍。准确获取虚拟机控制块(VMCS)中关键数据位置的方法,该方法步骤如下:(1)生成长度从1个字节到8个字节的数值为奇数的特殊数值;(2)根据Intel提供的VMCS关键数据操作指令VMREAD读取一个关键数据作为目标数据;(3)将读取目标数据的数值并保存;(4)根据获取到的数据数值的长度选择对应的特殊数值;(5)将选取到的特殊数值通过命令VMWRITE写入目标数据中;(6)在VMCS所在内存中搜索写入的特殊数值,对应位置就是是目标数据在VMCS中的位置;(7)在目标数据中重新写入保存的原始数据;(8)通过对VMCS中每个关键数据执行(2)-(7)步骤则可获得VMCS中所有关键数据的位置。
整个技术方案的核心在于特殊数值的赋值与数值搜索两部分:第一,特殊数值选取。在VMCS中保存的关键数据几乎都是地址数据,由于操作系统的特性,使得这些地址所指向的数据都是以2的N次幂(N>=1)对齐,所以这些地址一定是偶数。因此本专利中选取较大的奇数作为特殊数值。同时,由于关键数据的长度范围是1字节至8字节,因此本专利分别针对不同长度的关键数据设置长度为1字节到8字节的8个较大奇数作为特殊数值。第二,数值搜索。本专利不同于其它方式搜索获取到的合法数据,而是先根据关键数据长度不同写入对应的特殊数值,之后再在VMCS 所在内存中搜索写入的特殊数值。由于写入特殊数值的非法性,这保证了搜索结果的唯一性,可以准确判定关键数据在VMCS中的位置。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明实质内容上所作的任何修改、等同替换和简单改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种准确获取虚拟机控制块(VMCS)中关键数据位置的方法,其特征在于,该方法步骤如下:(1)生成8个数值为奇数的特殊数值;(2)读取一个VMCS关键数据作为待定位目标数据;(3)保存目标数据的数值;(4)根据目标数据的数值长度选择对应的特殊数值;(5)将选取的特殊数值写入目标数据中;(6)在VMCS所在内存中搜索写入的特殊数值,对应位置就是目标数据在VMCS中的位置;(7)目标数据中重新写入保存的原始数据;(8)重复(2)-(7)步骤获得VMCS中所有关键数据位置。
2.根据权利要求1所述的准确获取虚拟机控制块(VMCS)中关键数据位置的方法,其特征在于,步骤(1)中生成的8特殊数值为长度分别为1、2、3、4、5、6、7、8个字节。
3.根据权利要求1所述的准确获取虚拟机控制块(VMCS)中关键数据位置的方法,其特征在于,VMCS关键数据的读取指令为VMREAD。
4.根据权利要求1所述的准确获取虚拟机控制块(VMCS)中关键数据位置的方法,其特征在于,特殊数值写入目标数据中的指令为VMWRITE。
5.根据权利要求1所述的准确获取虚拟机控制块(VMCS)中关键数据位置的方法,其特征在于,步骤(5)将选取到的特殊数值写入目标数据中后,其在VMCS所在内存中的特殊数值是唯一的。
6.根据权利要求1所述的准确获取虚拟机控制块(VMCS)中关键数据位置的方法,其特征在于,该方法是针对Intel芯片中添加了硬件辅助虚拟化技术(VT-x)的虚拟化环境中进行的定位方法。
CN201610619153.3A 2016-07-29 2016-07-29 一种准确获取虚拟机控制块(vmcs)中关键数据位置的方法 Active CN106293873B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610619153.3A CN106293873B (zh) 2016-07-29 2016-07-29 一种准确获取虚拟机控制块(vmcs)中关键数据位置的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610619153.3A CN106293873B (zh) 2016-07-29 2016-07-29 一种准确获取虚拟机控制块(vmcs)中关键数据位置的方法

Publications (2)

Publication Number Publication Date
CN106293873A true CN106293873A (zh) 2017-01-04
CN106293873B CN106293873B (zh) 2019-11-05

Family

ID=57663765

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610619153.3A Active CN106293873B (zh) 2016-07-29 2016-07-29 一种准确获取虚拟机控制块(vmcs)中关键数据位置的方法

Country Status (1)

Country Link
CN (1) CN106293873B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107436810A (zh) * 2017-07-03 2017-12-05 北京东土科技股份有限公司 一种计算机系统资源调度方法及装置
CN109901911A (zh) * 2018-11-22 2019-06-18 海光信息技术有限公司 一种信息设置方法、控制方法、装置及相关设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1679853A1 (fr) * 2005-01-07 2006-07-12 Société ALPARFI Procédé de téléchargement de données à partir d'une borne de téléchargement
CN1815438A (zh) * 2005-02-04 2006-08-09 国际商业机器公司 信息处理方法和系统
CN1833225A (zh) * 2002-12-17 2006-09-13 英特尔公司 控制虚拟机的方法和系统
CN102622309A (zh) * 2011-01-30 2012-08-01 成都市华为赛门铁克科技有限公司 数据安全擦除方法及装置
WO2015108521A1 (en) * 2014-01-16 2015-07-23 Hewlett-Packard Development Company, L. P. Latch-free concurrent searching

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1833225A (zh) * 2002-12-17 2006-09-13 英特尔公司 控制虚拟机的方法和系统
EP1679853A1 (fr) * 2005-01-07 2006-07-12 Société ALPARFI Procédé de téléchargement de données à partir d'une borne de téléchargement
CN1815438A (zh) * 2005-02-04 2006-08-09 国际商业机器公司 信息处理方法和系统
CN102622309A (zh) * 2011-01-30 2012-08-01 成都市华为赛门铁克科技有限公司 数据安全擦除方法及装置
WO2015108521A1 (en) * 2014-01-16 2015-07-23 Hewlett-Packard Development Company, L. P. Latch-free concurrent searching

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107436810A (zh) * 2017-07-03 2017-12-05 北京东土科技股份有限公司 一种计算机系统资源调度方法及装置
CN109901911A (zh) * 2018-11-22 2019-06-18 海光信息技术有限公司 一种信息设置方法、控制方法、装置及相关设备

Also Published As

Publication number Publication date
CN106293873B (zh) 2019-11-05

Similar Documents

Publication Publication Date Title
US11061833B2 (en) Apparatus and method for handling page protection faults in a computing system
US7886293B2 (en) Optimizing system behavior in a virtual machine environment
KR101296025B1 (ko) 컴퓨터 시스템에서의 네스티드 가상화 성능의 개선
US8352670B2 (en) Execute-only memory and mechanism enabling execution from execute-only memory for minivisor
US8032897B2 (en) Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization
US8127098B1 (en) Virtualization of real mode execution
US6009261A (en) Preprocessing of stored target routines for emulating incompatible instructions on a target processor
EP0217068A2 (en) Method of emulating the instructions of a target computer
US7996833B2 (en) Method and system for replacing instructions and instruction blocks in computer code
US8887139B2 (en) Virtual system and method of analyzing operation of virtual system
US11087001B2 (en) Determining location of speculation denial instructions for memory access vulnerabilities
CN107368739B (zh) 一种内核驱动的监视方法和装置
CN111556996A (zh) 控制存储器访问中的守卫标签检查
CN106293873A (zh) 一种准确获取虚拟机控制块(vmcs)中关键数据位置的方法
US20060026387A1 (en) Method and system for recognizing instructions and instruction blocks in computer code
EP3783513A1 (en) Apparatus, system and method to define memory information leak zones in a computing system
US20070156386A1 (en) Linearization of page based memory for increased performance in a software emulated central processing unit
TWI787451B (zh) 用於資料處理的方法、設備、電腦程式、與儲存器媒體
CN104007956B (zh) 一种操作系统进程识别跟踪及信息获取的方法和装置
US8091090B2 (en) Method for providing scratch registers for use by a virtual-machine monitor
CN111433742A (zh) 多保护标签设置指令
US11544201B2 (en) Memory tracing in an emulated computing system
CN114265775B (zh) 一种硬件辅助虚拟化环境核心检测方法及系统
JP7369720B2 (ja) アクションをトリガするための装置及び方法
Martinsen Implementation of Intel virtual machine extension root operation on the NPS least privilege separation kernel

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant