发明名称 |
一种Windows平台下检测虚拟机监视器存在的方法 |
摘要 |
本发明公开了一种Windows平台下检测虚拟机监视器存在的方法,目的是针对恶意代码利用VMM作为隐藏自身行为与提供恶意服务的平台的问题,提出一种通过资源差异来检测VMM存在的方法。技术方案是:先给页表Allocated PTEs和页表项Special PTE分配内存空间;对Allocated PTEs写入更改映射前地址A;对Special PTE写入更改映射后地址B;对Allocated PTEs依次进行访问,使所有指向地址A的页表项都存入页表缓冲寄存器中;把Allocated PTEs指针内容依次改为Special PTE所指向的地址B;执行Windows系统中的特权指令RDMSR;设置计数器,遍历页表缓冲寄存器内的全部页表项,通过判定计数器的数值是否跟N一致来则判定当前系统内是否存在VMM。采用本发明可对VMM进行有效检测,提高系统安全性。 |
申请公布号 |
CN102063594B |
申请公布日期 |
2012.08.22 |
申请号 |
CN201110003479.0 |
申请日期 |
2011.01.10 |
申请人 |
中国人民解放军国防科学技术大学 |
发明人 |
宁剑;刘波;陈林;肖枫涛;王天佐;陈新;张静;马晓龙;彭磊 |
分类号 |
G06F21/00(2006.01)I;G06F9/455(2006.01)I |
主分类号 |
G06F21/00(2006.01)I |
代理机构 |
国防科技大学专利服务中心 43202 |
代理人 |
郭敏 |
主权项 |
一种Windows平台下检测虚拟机监视器VMM存在的方法,其特征在于包括以下步骤:第一步、根据页表缓冲寄存器大小N,通过Windows提供的函数Malloc()为页表项Allocated PTEs和Special PTE分配内存空间,Allocated PTEs为分配好内存空间且大小为N的一组页表项;Special PTE为分配好内存空间且大小为1的页表项;页表项是页表中的基本组成单位,其内容是当前页表项对应的物理地址;第二步、对Allocated PTEs通过Windows提供的函数Memset()写入更改映射前地址A即页表项中存储的原始物理地址;对Special PTE写入更改映射后地址B,即页表项中存储的更改以后的物理地址;第三步、对Allocated PTEs依次进行访问,使所有指向地址A的页表项都存入页表缓冲寄存器中,也就是说页表缓冲寄存器内全部的N条记录都指向更改映射前地址A;第四步、在不改变页表缓冲寄存器内容的前提下,把Allocated PTEs指针内容依次改为Special PTE所指向的地址B;第五步、执行Windows系统中的特权指令RDMSR,如果存在VMM,该指令引起系统控制权的下陷,即系统控制权转换给VMM;第六步、设置一个计数器Counter,初始值为N;设置指针i,并使该指针指向页表缓冲寄存器的起始地址;第七步、若i>=起始地址+N,转第十步;否则转第八步;第八步、对指针i所指向的页表项内的指针地址进行判定:若当前页表 项内的指针地址为更改映射前的地址A,i加1,转第七步;若当前页表项内的指针地址不为更改映射前的地址A,转第九步;第九步、使计数器Counter数值减1,i加1,并转第七步;第十步、判定计数器Counter的数值是否跟页表缓冲寄存器大小N一致,如果计数器Counter的数值为N,则判定当前系统内不存在VMM;如果计数器Counter的数值小于N,判定当前系统内存在VMM。 |
地址 |
410073 湖南省长沙市开福区德雅路109号 |