发明名称 一种在虚拟机内部的驱动隔离系统与方法
摘要 本发明公开了一种在虚拟机内部的驱动隔离系统与方法,涉及计算机容错技术,通过被隔离驱动程序的授权表,实现简单、有效、兼容已有操作系统和驱动程序架构的基于全虚拟化技术在虚拟机内部隔离驱动程序的系统,一种在虚拟机内部的驱动隔离系统包括运行于虚拟机用户态的驱动隔离加载模块、虚拟机内核态的内存信息监视模块以及虚拟机管理器内部的内存访问控制模块,所述虚拟机内核态的内存信息监视模块包括:包装函数库、隔离控制子模块以及消息通信子模块。
申请公布号 CN102938035B 申请公布日期 2015.05.27
申请号 CN201210442752.4 申请日期 2012.11.08
申请人 西安交通大学;山东高效能服务器和存储研究院 发明人 董小社;郑豪;张兴军;王恩东;辛龙;张东;陈宝可;王强
分类号 G06F21/50(2013.01)I;G06F9/455(2006.01)I 主分类号 G06F21/50(2013.01)I
代理机构 西安通大专利代理有限责任公司 61200 代理人 陆万寿
主权项 一种在虚拟机内部的驱动隔离系统,其特征在于:包括运行于虚拟机用户态的驱动隔离加载模块、虚拟机内核态的内存信息监视模块以及虚拟机管理器内部的内存访问控制模块,其中,所述运行于虚拟机用户态的驱动隔离加载模块:将驱动模块文件中监视未定义符号与内存信息监视模块中监视包装函数建立联系,使得驱动以隔离方式运行,并向内存信息监视模块中的隔离控制子模块发出被隔离驱动程序提醒消息,以使得进入内核的驱动为被隔离驱动程序;所述监视未定义符号包括内存管理函数的未定义符号和驱动注册函数的未定义符号;所述虚拟机内核态的内存信息监视模块包括:包装函数库、隔离控制子模块以及消息通信子模块,其中,所述包装函数库:为虚拟机内核中所监控的函数建立内核包装函数,并为虚拟机内核中驱动接口中的接口函数建立驱动包装函数,以使得被隔离驱动与内核和驱动包装函数链接,并进入隔离运行模式;所述内核包装函数包括内存包装函数和注册包装函数,所述内存包装函数是指内核中内存管理函数的包装函数,所述注册包装函数是指内核中驱动注册函数的包装函数;所述隔离控制子模块:接收运行于虚拟机用户态的驱动隔离加载模块发出的被隔离驱动程序提醒消息,建立被隔离驱动程序的相关信息,并指示消息通信子模块向所述虚拟机管理器内部的内存访问控制模块发送设置被隔离驱动授权表的指令,同时,根据需要获取可信任的虚拟机内核的地址范围,注入到内存访问控制模块,并发出设置虚拟机管理器中影子页表的指令;所述可信任的虚拟机内核的地址范围包括虚拟机内核代码和未被隔离的驱动程序代码的内存起始地址及其大小;所述消息通信子模块:向内存访问控制模块实时报告被隔离驱动所使用内存信息、可信任的虚拟机内核的地址范围、及发送建立被隔离驱动授权表的指令;所述消息通信子模块被所述包装函数库和所述隔离控制子模块调用;所述内存访问控制模块:用于控制被隔离驱动程序写操作,包括:授权表管理子模块、页面设置子模块以及缺页处理子模块,其中,所述授权表管理子模块:接收所述内存信息监视模块发出的设置被隔离驱动授权表的指令后,设置被隔离驱动程序可写内存范围的授权表,并负责确认写操作地址是否在授权表中;所述页面设置子模块:接收所述内存信息监视模块发出的设置虚拟机管理器中影子页表的指令,并根据所述被隔离驱动所在虚拟机的内核空间在虚拟机管理器中所对应的影子页表,将影子页表设置为只读;另外,当缺页处理子模块允许写操作时,还接收所述缺页处理子模块发出的允许写操作段的指令,并设置写操作目标地址对应的影子页表,在写操作结束后,重新将影子页表设置为只读;所述缺页处理子模块:当被隔离驱动所在虚拟机内核出现写操作时,根据写操作指令的来源和被隔离驱动对应的授权表,判断和控制是否允许进行写操作。
地址 710049 陕西省西安市咸宁西路28号