[发明专利]一种硬件辅助虚拟化环境核心检测方法及系统在审
申请号: | 202111576319.5 | 申请日: | 2021-12-21 |
公开(公告)号: | CN114265775A | 公开(公告)日: | 2022-04-01 |
发明(设计)人: | 王鹤;郑超;任军帅;杨倩;王建凯;陶小结 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 金怡 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 硬件 辅助 虚拟 环境 核心 检测 方法 系统 | ||
1.一种硬件辅助虚拟化环境核心检测方法,其特征在于,包括:
步骤S1:当检测程序拥有普通权限对VMCALL操作时,基于VMCALL虚拟化扩展指令主动地进行VMExit,向Hypervisor中Hypercall处理函数发送调用,根据默认返回值,从而判断虚拟化环境是否存在;
步骤S2:当检测程序拥有特权权限对VMCALL操作时,调用VMCALL并通过通用寄存器传递参数,可以获得不同VMCALL参数对应的特定Hypercall处理函数的返回值,根据所述返回值,从而判断虚拟化环境是否存在;
步骤S3:当检测程序拥有特权权限对CR0操作时,通过改变CR0寄存器的CD位来检查对系统性能的影响,从而判断虚拟化环境是否存在;
步骤S4:当检测程序拥有特权权限对L2C操作时,通过驱逐特定的L2C的Cache组,根据所述Cache组的驱逐情况,从而判断虚拟化环境是否存在。
2.根据权利要求1所述的硬件辅助虚拟化环境核心检测方法,其特征在于,所述步骤S1:当检测程序拥有普通权限对VMCALL操作时,基于VMCALL虚拟化扩展指令主动地进行VMExit,向Hypervisor中Hypercall处理函数发送调用,根据默认返回值,从而判断虚拟化环境是否存在,具体包括:
当检测程序拥有普通权限对VMCALL操作时,在本地环境中主动地调用VMCALL会引发硬件异常,从而导致程序出错;而在虚拟化环境中调用VMCALL时可以顺利执行,并且经过VMExit陷入到Hypervisor之后可获得默认返回值,根据所述默认返回值,从而判断虚拟化环境是否存在。
3.根据权利要求1所述的硬件辅助虚拟化环境核心检测方法,其特征在于,所述步骤S2:当检测程序拥有特权权限对VMCALL操作时,调用VMCALL并通过通用寄存器传递不同参数,可以获得不同VMCALL参数对应的特定Hypercall处理函数的返回值,根据所述返回值,从而判断虚拟化环境是否存在,具体包括:
当检测程序拥有特权权限对VMCALL操作时,在调用VMCALL指令时在虚拟寄存器上附上特定的参数值,根据不同的所述参数值调用不同的Hypercall处理函数,并得到不同的返回值;当所述检测程序运行在本地环境时,由于指令的不兼容会导致错误,无法获得返回值;根据所述返回值,从而判断虚拟化环境是否存在。
4.根据权利要求1所述的硬件辅助虚拟化环境核心检测方法,其特征在于,所述步骤S3:当检测程序拥有特权权限对CR0操作时,通过改变CR0寄存器的CD位来检查对系统性能的影响,从而判断虚拟化环境是否存在,具体包括:
当检测程序拥有特权权限对CR0操作时,在虚拟化环境中对CR0寄存器的CD位进行置位不会实际影响到物理CPU;当所述检测程序运行在本地环境,则对CD位的置位会实际地影响到物理CPU,导致物理Cache状态改变,从而会导致访存时间变长;通过比较CD置位前后访存的时间,从而判断虚拟化环境是否存在。
5.根据权利要求1所述的硬件辅助虚拟化环境核心检测方法,其特征在于,所述步骤S4:当检测程序拥有特权权限对L2C操作时,通过驱逐特定的L2C的Cache组,根据所述Cache组的驱逐情况,从而判断虚拟化环境是否存在,具体包括:
当检测程序运行在本地环境时,通过pagemap接口获取的就是真实的物理内存地址,从而定位正确索引到Cache组,在目标Cache组平均访存时间会具有明显的峰值,当检测程序运行在虚拟化环境中时,获取的物理地址并不是真实物理内存的地址,因此所定位的Cache组不是预期目标Cache组,通过对目标Cache组与全部Cache组的平均访问时间对比,检测程序可以判断所处的运行环境。
6.一种硬件辅助虚拟化环境核心检测系统,其特征在于,包括下述模块:
VMCALL普通权限检测模块,用于当检测程序拥有普通权限对VMCALL操作时,基于VMCALL虚拟化扩展指令主动地进行VMExit,向Hypervisor中Hypercall处理函数发送调用,根据默认返回值,从而判断虚拟化环境是否存在;
VMCALL特权权限检测模块,用于当检测程序拥有特权权限对VMCALL操作时,调用VMCALL并通过通用寄存器传递参数,可以获得不同VMCALL参数对应的特定Hypercall处理函数的返回值,根据所述返回值,从而判断虚拟化环境是否存在;
CR0特权权限检测模块,用于当检测程序拥有特权权限对CR0操作时,通过改变CR0寄存器的CD位来检查对系统性能的影响,从而判断虚拟化环境是否存在;
L2C特权权限检测模块,用于通过驱逐特定的L2C的Cache组,根据所述Cache组的驱逐情况,从而判断虚拟化环境是否存在。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111576319.5/1.html,转载请声明来源钻瓜专利网。