一种数据访问方法、代码调用方法及虚拟机监视器与流程

文档序号:12123195阅读:187来源:国知局
一种数据访问方法、代码调用方法及虚拟机监视器与流程

本发明涉及计算机内存管理技术领域,具体涉及了一种数据访问方法、代码调用方法及虚拟机监视器VMM。



背景技术:

现代操作系统几乎都支持模块的动态插入与卸载,这使得操作系统内核可以按需拓展功能。当目标内核模块插入操作系统内核后,其行为就不再受到监控与限制。被加载的目标内核模块与操作系统内核运行在相同特权级,目标内核模块可以任意调用操作系统内核提供的代码并修改操作系统内核数据,致使操作系统内核完整性面临安全威胁。

以在操作系统内核添加驱动程序模块为例,目前,开发人员一般通过在操作系统内核以及驱动程序模块之间添加一个驱动隔离层,从而达到隔离操作系统内核与驱动程序模块的目的,但是,由于该驱动隔离层位于操作系统内核空间中,与操作系统内核空间中的驱动程序模块位于同一特权级,因此,驱动程序模块可以修改该驱动程序模块的页表中的权限映射关系,修改后的权限映射关系能够使驱动隔离层的隔离功能失效,使得操作系统处于不安全状态,并且由于该驱动隔离层对每个内核设备的驱动程序模块均进行隔离,将严重影响系统性能。



技术实现要素:

本发明实施例提供一种数据访问方法、代码调用方法及VMM,以期提升系统内核数据访问和代码调用的安全性。

本发明实施例第一方面公开了一种数据访问方法,包括:

虚拟机监视器VMM捕获页表中断事件,所述页表中断事件是由中央处理单元CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据 的访问请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

所述VMM通过预存的页表中断处理函数判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据;

当所述VMM通过预存的页表中断处理函数判断出所述目标内核模块有权限访问所述K-SPACE中的内核数据时,所述VMM在所述MPGT中创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述K-SPACE中的内核数据。

本发明实施例第一方面第一种可能的实现方式中,所述VMM通过预存的页表中断处理函数判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据,包括:

所述VMM通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核数据的虚拟地址分布信息;

所述VMM确定所述页表中断事件的事件类型;

所述VMM根据所述预设权限判断策略、所述虚拟地址分布信息以及所述事件类型判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据。

结合本发明实施例第一方面或第一方面第一种可能的实现方式,在本发明实施例第一方面第二种可能的实现方式中,所述VMM捕获页表中断事件之前,所述方法还包括:

所述VMM根据预存的所述虚拟机内核空间的空间页表将所述目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为正整数;

所述VMM基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

所述VMM标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中的内核模块包括所述虚拟机内核空间中的基础内核模块和所述N个内核模块中除所述目标内核模块之外的内核模块

结合本发明实施例第一方面或第一方面第一种或第二种可能的实现方式,在本发明实施例第一方面第三种可能的实现方式中,所述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述M-SPACE中的内核数据。

本发明实施例第二方面公开了一种VMM,包括:

事件捕获单元,用于捕获页表中断事件,所述页表中断事件是由CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

权限判断单元,用于通过预存的页表中断处理函数判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据;

权限创建单元,用于当所述权限判断单元通过预存的页表中断处理函数判断出所述目标内核模块有权限访问所述K-SPACE中的内核数据时,在所述MPGT中创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述K-SPACE中的内核数据。

本发明实施例第二方面第一种可能的实现方式中,所述权限判断单元具体用于:

通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核数据的虚拟地址分布信息;

确定所述页表中断事件的事件类型;

根据所述预设权限判断策略、所述虚拟地址分布信息以及所述事件类型判 断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据。

结合本发明实施例第二方面或第二方面第一种可能的实现方式中,在本发明实施例第二方面第二种可能的实现方式中,所述VMM还包括:

地址映射单元,用于在所述事件捕获单元捕获页表中断事件之前之前,根据预存的所述虚拟机内核空间的空间页表将所述目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为正整数;

空间分隔单元,用于基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

页表创建单元,用于标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中的内核模块包括所述虚拟机内核空间中的基础内核模块和所述N个内核模块中除所述目标内核模块之外的内核模块。

结合本发明实施例第二方面或第二方面第一种或第二种可能的实现方式中,在本发明实施例第二方面第三种可能的实现方式中,所述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述M-SPACE中的内核数据。

本发明实施例中,VMM首先捕获页表中断事件,其次,VMM通过预存的页表中断处理函数判断目标内核模块是否有权限访问K-SPACE中的内核数据,最后,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限访问K-SPACE中的内核数据时,VMM在MPGT中创建目标内核模块对K-SPACE中的内核数据的访问权限映射,以使得目标内核模块有权限访问K-SPACE中的内核数据。由于上述页表中断事件是CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,可见,目标内核模块无权限直接访问K-SPACE空间中内核数据,从而 能够避免目标内核模块在安全性未知的情况下肆意访问K-SPACE中的内核数据,有利于提升系统内核数据访问的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

本发明实施例第三方面公开了一种代码调用方法,包括:

虚拟机监视器VMM捕获页表中断事件,所述页表中断事件是由中央处理单元CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射的情况下生成的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

所述VMM通过预存的页表中断处理函数判断所述目标内核模块是否有权限调用所述K-SPACE中的内核代码;

当所述VMM通过预存的页表中断处理函数判断出所述目标内核模块有权限调用所述K-SPACE中的内核代码时,所述VMM根据所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将所述虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。

本发明实施例第三方面第一种可能的实现方式中,所述VMM通过预存的页表中断处理函数判断所述目标内核模块是否有权限调用所述K-SPACE中的内核代码,包括:

所述VMM通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核代码的虚拟地址分布信息;

所述VMM根据获取的所述预设权限判断策略和所述虚拟地址分布信息判断所述目标内核模块是否有权限访问所述K-SPACE中的内核代码。

结合本发明实施例第三方面或第三方面第一种可能的实现方式,在本发明实施例第三方面第二种可能的实现方式中,所述VMM执行页表页表切换操作,包括:

所述VMM将所述VMM当前加载的页表由所述MPGT切换为内核空间页表KPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中包括所述虚拟机内核空间中的基础内核模块、所述虚拟机内核空间中插入的N个内核模块中除所述目标内核模块之外的内核模块以及所述KPGT,所述N为大于1的正整数。

结合本发明实施例第三方面或第三方面第一种或第二种可能的实现方式,在本发明实施例第三方面第三种可能的实现方式中,所述VMM执行堆栈切换操作,包括:

所述VMM拷贝M-STACK中存储的用于传递所述K-SPACE中的内核代码的代码参数和用于调用所述K-SPACE中的内核代码的返回地址RIP;

所述VMM在所述K-STACK中写入所述代码参数和所述RIP;

所述VMM将所述虚拟机内核空间当前使用的堆栈由esp-old位置转变为esp-new位置,其中,所述esp-old位置为所述RIP在所述M-STACK中的存储位置,所述esp-new位置为所述RIP在所述K-STACK中的存储位置。

结合本发明实施例第三方面或第三方面第一种或第二种或第三种可能的实现方式,在本发明实施例第三方面第四种可能的实现方式中,所述VMM捕获页表中断事件之前,所述方法还包括:

所述VMM根据预存的所述虚拟机内核空间的空间页表将目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为大于1的正整数;

所述VMM基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

所述VMM标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT。

结合本发明实施例第三方面或第三方面第一种或第二种或第三种或第四种可能的实现方式,在本发明实施例第三方面第五种可能的实现方式中,所述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核代码的调用权限映射,以使得所述目标内核模块有权限调用所述M-SPACE中的内核代码。

本发明实施例第四方面公开了一种VMM,包括:

事件捕获单元,用于捕获页表中断事件,所述页表中断事件是由中央处理单元CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射的情况下生成的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

权限判断单元,用于通过预存的页表中断处理函数判断所述目标内核模块是否有权限调用所述K-SPACE中的内核代码;

切换单元,用于当所述权限判断单元通过预存的页表中断处理函数判断出所述目标内核模块有权限调用所述K-SPACE中的内核代码时,根据所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将所述虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。

本发明实施例第四方面第一种可能的实现方式中,所述权限判断单元具体用于:

通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核代码的虚拟地址分布信息;

根据获取的所述预设权限判断策略和所述虚拟地址分布信息判断所述目标内核模块是否有权限访问所述K-SPACE中的内核代码。

结合本发明实施例第四方面或第四方面第一种可能的实现方式,在本发明实施例第四方面第二种可能的实现方式中,所述切换单元具体用于:

将所述VMM当前加载的页表由所述MPGT切换为内核空间页表KPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中包括所述虚拟机内核空间中的基础内核模块、所述虚拟机内核空间中插入的N个内核模块中除所述目标内核模块之外的内核模块以及所述KPGT,所述N为大于1的正整数。

结合本发明实施例第四方面或第四方面第一种或第二种可能的实现方式,在本发明实施例第四方面第三种可能的实现方式中,所述切换单元具体用于:

拷贝M-STACK中存储的用于传递所述K-SPACE中的内核代码的代码参数和用于调用所述K-SPACE中的内核代码的返回地址RIP;

在所述K-STACK中写入所述代码参数和所述RIP;

将所述虚拟机内核空间当前使用的堆栈由esp-old位置转变为esp-new位置,其中,所述esp-old位置为所述RIP在所述M-STACK中的存储位置,所述esp-new位置为所述RIP在所述K-STACK中的存储位置。

结合本发明实施例第四方面或第四方面第一种或第二种或第三种可能的实现方式,在本发明实施例第四方面第四种可能的实现方式中,所述VMM还包括:

地址映射单元,用于在所述事件捕获单元捕获页表中断事件之前,根据预存的所述虚拟机内核空间的空间页表将目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为大于1的正整数;

空间分隔单元,用于基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

页表创建单元,用于标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT。

结合本发明实施例第四方面或第四方面第一种或第二种或第三种或第四 种可能的实现方式,在本发明实施例第四方面第五种可能的实现方式中,所述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核代码的调用权限映射,以使得所述目标内核模块有权限调用所述M-SPACE中的内核代码。

本发明实施例中,VMM首先捕获页表中断事件,其次,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限调用K-SPACE中的内核代码时,VMM根据目标内核模块对K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。其中,上述页表中断事件是CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对K-SPACE中的内核代码的调用权限映射的情况下生成的,可见,目标内核模块无权限直接调用内核代码,能够避免目标内核模块在安全性未知的情况下肆意调用K-SPACE中的内核代码,有利于提升系统内核代码调用的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1.1是本发明实施例公开的一种典型裸机模式虚拟化平台部署架构图;

图1.2是本发明实施例公开的一种典型宿主模式虚拟化平台部署架构图;

图2是本发明实施例公开的一种数据访问方法的流程示意图;

图3是本发明实施例公开的另一种数据访问方法的流程示意图;

图4是本发明实施例公开的有一种数据访问方法的流程示意图;

图5是本发明实施例公开的一种代码调用方法的流程示意图;

图6是本发明实施例公开的另一种代码调用方法的流程示意图;

图7是本发明实施例公开的又一种代码调用方法的流程示意图;

图8是本发明实施例公开的一种用于控制M-SPACE中的目标内核模块对K-SPACE中的内核数据的访问的VMM的结构示意图;

图9是本发明实施例公开的一种用于控制M-SPACE中的目标内核模块对K-SPACE中的内核代码的调用VMM的结构示意图;

图10是本发明实施例公开的一种VMM的实体装置结构示意图;

图11是本发明实施例公开的一种VMM的实体装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明实施例提供一种数据访问方法、代码调用方法及虚拟机监视器(Virtual Machine Monitor,VMM),以期提升系统内核数据访问和代码调用的安全性。

为了便于理解本发明实施例,下面先对本发明实施例的网络架构进行描述。请参阅图1.1和图1.2,图1.1是本发明实施例公开的一种典型裸机模式虚拟化平台部署架构图,图1.2是本发明实施例公开的一种典型宿主模式虚拟化平台部署架构图。如图1.1和图1.2所示,两种模式中的虚拟机操作系统都运行在VMM之上,VMM拥有比虚拟机操作系统更高的执行权限,且两者之间相互隔离。虚拟机操作系统内核可以进一步划分为代码部分、数据部分、内核运行所需堆栈以及动态可加载的内核模块。附图1.1所示的典型的裸机虚拟化模式(比如Xen)中,VMM直接运行在物理机之上,操作物理硬件,向上对虚拟机提 供服务。附图1.2所示的典型宿主模式(比如KVM)中,VMM运行在宿主机操作系统之上,其虚拟化功能需要借助于宿主机实现,宿主机直接控制下层硬件资源。

参阅图2,图2是本发明实施例公开的一种数据访问方法的流程示意图,如图2所示,该数据访问方法是从VMM单侧进行描述的,具体包括以下步骤:

S201,VMM捕获页表中断事件,所述页表中断事件是由CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

本发明实施例中,上述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述M-SPACE中的内核数据。

S202,所述VMM通过预存的页表中断处理函数判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据;

本发明实施例中,上述VMM通过预存的页表中断处理函数判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据的具体方式为:

所述VMM首先通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核数据的虚拟地址分布信息;其次,VMM确定所述页表中断事件的事件类型;最后,VMM根据所述预设权限判断策略、所述虚拟地址分布信息以及所述事件类型判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据。

S203,当所述VMM通过预存的页表中断处理函数判断出所述目标内核模块有权限访问所述K-SPACE中的内核数据时,所述VMM在所述MPGT中创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述K-SPACE中的内核数据。

可以看出,本发明实施例中,VMM首先捕获页表中断事件,其次,VMM 通过预存的页表中断处理函数判断目标内核模块是否有权限访问K-SPACE中的内核数据,最后,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限访问K-SPACE中的内核数据时,VMM在MPGT中创建目标内核模块对K-SPACE中的内核数据的访问权限映射,以使得目标内核模块有权限访问K-SPACE中的内核数据。由于上述页表中断事件是CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,可见,目标内核模块无权限直接访问K-SPACE空间中内核数据,从而能够避免目标内核模块在安全性未知的情况下肆意访问K-SPACE中的内核数据,有利于提升系统内核数据访问的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

可选的,本发明实施例中,上述VMM捕获页表中断事件之前,还可以执行以下操作以针对目标内核模块创建内核空间隔离机制:

所述VMM根据预存的所述虚拟机内核空间的空间页表将所述目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为正整数;

所述VMM基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

所述VMM标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中的内核模块包括所述虚拟机内核空间中的基础内核模块和所述N个内核模块中除所述目标内核模块之外的内核模块。

参阅图3,图3是本发明实施例公开的一种数据访问方法的流程示意图,如图3所示,该数据访问方法是从VMM单侧进行描述的,具体包括以下步骤:

S301,虚拟机监视器VMM捕获页表中断事件,所述页表中断事件是由中央处理单元CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

本发明实施例中,上述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述M-SPACE中的内核数据。

S302,所述VMM通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核数据的虚拟地址分布信息;

S303,所述VMM确定所述页表中断事件的事件类型;

S304,所述VMM根据所述预设权限判断策略、所述虚拟地址分布信息以及所述事件类型判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据;

S305,当所述VMM通过预存的页表中断处理函数判断出所述目标内核模块有权限访问所述K-SPACE中的内核数据时,所述VMM在所述MPGT中创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述K-SPACE中的内核数据。

可以看出,本发明实施例中,VMM首先捕获页表中断事件,其次,VMM通过预存的页表中断处理函数判断目标内核模块是否有权限访问K-SPACE中的内核数据,最后,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限访问K-SPACE中的内核数据时,VMM在MPGT中创建目标内核模块对K-SPACE中的内核数据的访问权限映射,以使得目标内核模块有权限访问K-SPACE中的内核数据。由于上述页表中断事件是CPU在检测到目标内核模块 发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,可见,目标内核模块无权限直接访问K-SPACE空间中内核数据,从而能够避免目标内核模块在安全性未知的情况下肆意访问K-SPACE中的内核数据,有利于提升系统内核数据访问的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

可选的,本发明实施例中,上述VMM捕获页表中断事件之前,还可以执行以下操作以针对目标内核模块创建内核空间隔离机制:

所述VMM根据预存的所述虚拟机内核空间的空间页表将所述目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为正整数;

所述VMM基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

所述VMM标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中的内核模块包括所述虚拟机内核空间中的基础内核模块和所述N个内核模块中除所述目标内核模块之外的内核模块。

可选的,本发明实施例中,上述VMM捕获页表中断事件之前,还可以执行以下操作以针对目标内核模块创建内核空间隔离机制:

所述VMM根据预存的所述虚拟机内核空间的空间页表将所述目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模 块,所述N为正整数;

所述VMM基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

所述VMM标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中的内核模块包括所述虚拟机内核空间中的基础内核模块和所述N个内核模块中除所述目标内核模块之外的内核模块。

参阅图4,图4是本发明实施例公开的一种数据访问方法的流程示意图,如图4所示,该数据访问方法是从VMM单侧进行描述的,具体包括以下步骤:

S401,VMM根据预存的所述虚拟机内核空间的空间页表将所述目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为正整数;

S402,所述VMM基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

S403,所述VMM标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中的内核模块包括所述虚拟机内核空间中的基础内核模块和所述N个内核模块中除所述目标内核模块之外的内核模块;

本发明实施例中,上述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述M-SPACE中的内核数据。

S404,VMM捕获页表中断事件,所述页表中断事件是由CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,其中,所述VMM对应的虚拟机内核 空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

S405,所述VMM通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核数据的虚拟地址分布信息;

S406,所述VMM确定所述页表中断事件的事件类型;

S407,所述VMM根据所述预设权限判断策略、所述虚拟地址分布信息以及所述事件类型判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据;

本发明实施例中,上述权限判断策略可以由用户预先设置并存储在内存空间中,上述页表中断事件对应的事件类型包括数据读取类型和数据写入类型。

举例来说,假设目标内核模块对K-SPACE中的内核数据的数据读取类型对应的权限判断策略中包括以下子策略:若目标内核模块向CPU的内存管理单元请求数据读取的内核数据为K-SPACE中的中断向量表,则内存管理单元拒绝目标内核模块本次的数据读取请求。

S408,当所述VMM通过预存的页表中断处理函数判断出所述目标内核模块有权限访问所述K-SPACE中的内核数据时,所述VMM在所述MPGT中创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述K-SPACE中的内核数据。

可以看出,本发明实施例中,VMM首先捕获页表中断事件,其次,VMM通过预存的页表中断处理函数判断目标内核模块是否有权限访问K-SPACE中的内核数据,最后,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限访问K-SPACE中的内核数据时,VMM在MPGT中创建目标内核模块对K-SPACE中的内核数据的访问权限映射,以使得目标内核模块有权限访问K-SPACE中的内核数据。由于上述页表中断事件是CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,可见,目标内核模块无权限直接访问K-SPACE空间中内核数据,从而能够避免目标内核模块在安全性未知的情况下肆意访问 K-SPACE中的内核数据,有利于提升系统内核数据访问的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

进一步可选的,本发明实施例中,上述VMM根据预存的虚拟机内核空间的空间页表将目标内核模块的虚拟地址分布信息映射为物理地址分布信息之前,VMM还可以执行以下操作:

VMM获取所述虚拟机内核空间中的客户代理模块发送的目标内核模块在虚拟机内核空间中的虚拟地址分布信息。

其中,该客户代理模块设置于K-SAPCE中,用于获取需要目标内核模块在虚拟机内核空间中的虚拟地址分布信息,并向VMM发送获取的上述虚拟地址分布信息,以便于VMM基于上述虚拟地址分布信息建立上述目标内核模块的隔离地址空间。其中,上述客户代理获取虚拟地址分布信息的具体实现方式包括以下两种:

当检测到上述目标内核模块在虚拟机中尚未开始运行时,上述客户代理模块拦截该目标内核模块插入时所调用的相关的系统调用,当检测到目标内核模块插入时所调用的相关的系统调用时,客户代理模块获取目标内核模块在加载进入虚拟机内核空间后的虚拟地址分布信息{virt1,virt2}。例如,Windows虚拟机可以通过注册回调函数的方式来获取虚拟机中的内存映像插入事件,根据映像名称判断是否是目标内核模块被加载到虚拟机内核空间中。

当检测到上述目标内核模块在虚拟机中已经开始运行时,上述客户代理模块需要遍历虚拟机内核空间中的内核模块链表,获取目标内核模块在虚拟机内核空间中的虚拟地址分布信息{virt1,virt2}。

可以看出,本发明实施例中,上述客户代理模块位于K-SPACE中,与M-SPACE中的目标内核模块运行于不同内核空间,因而不会受到来自目标内核模块的攻击,有利于进一步提升系统内核的安全性。

进一步可选的,本发明实施例中,上述VMM基于所述物理地址分布信息创建隔离空间页表MPGT之后,上述VMM还可以执行以下操作:

所述VMM删除所述KPGT中存储的所述K-SPACE中的内核模块所述M-SPACE中的内核数据的访问权限映射,以使得所述K-SPACE中的内核模块无法直接访问M-SPACE中的内核数据,进一步增强系统内核数据访问的安全性。

请参阅图5,图5是本发明实施例公开的一种代码调用方法的流程示意图,如图5所示,该代码调用方法是从VMM单侧进行描述的,具体包括以下步骤:

S501,虚拟机监视器VMM捕获页表中断事件,所述页表中断事件是由中央处理单元CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射的情况下生成的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

本发明实施例中,所述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核代码的调用权限映射,以使得所述目标内核模块有权限调用所述M-SPACE中的内核代码。

S502,所述VMM通过预存的页表中断处理函数判断所述目标内核模块是否有权限调用所述K-SPACE中的内核代码;

本发明实施例中,上述VMM通过预存的页表中断处理函数判断所述目标内核模块是否有权限调用所述K-SPACE中的内核代码的具体实施方式为:

所述VMM通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核代码的虚拟地址分布信息;

所述VMM根据获取的所述预设权限判断策略和所述虚拟地址分布信息判断所述目标内核模块是否有权限访问所述K-SPACE中的内核代码。

S503,当所述VMM通过预存的页表中断处理函数判断出所述目标内核模块有权限调用所述K-SPACE中的内核代码时,所述VMM根据所述目标内核模 块对所述K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将所述虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。

本发明实施例中,上述VMM执行页表页表切换操作的具体实施方式为:

所述VMM将所述VMM当前加载的页表由所述MPGT切换为内核空间页表KPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中包括所述虚拟机内核空间中的基础内核模块、所述虚拟机内核空间中插入的N个内核模块中除所述目标内核模块之外的内核模块以及所述KPGT,所述N为大于1的正整数。

上述VMM执行堆栈切换操作的具体实施方式为:

所述VMM拷贝M-STACK中存储的用于传递所述K-SPACE中的内核代码的代码参数和用于调用所述K-SPACE中的内核代码的返回地址RIP;

所述VMM在所述K-STACK中写入所述代码参数和所述RIP;

所述VMM将所述虚拟机内核空间当前使用的堆栈由esp-old位置转变为esp-new位置,其中,所述esp-old位置为所述RIP在所述M-STACK中的存储位置,所述esp-new位置为所述RIP在所述K-STACK中的存储位置。

可以看出,本发明实施例中,VMM首先捕获页表中断事件,其次,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限调用K-SPACE中的内核代码时,VMM根据目标内核模块对K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。其中,上述页表中断事件是CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对K-SPACE中的内核代码的调用权限映射的情况下生成的,可见,目标内核模块无权限直接调用K-SPACE中的内核代码,能够避免目标内核模块在安全性未知的情况下肆意调用K-SPACE中的内核代码,有利于提升系统内核代码调用的安 全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

可选的,本发明实施例中,上述VMM捕获页表中断事件之前,还可以执行以下操作以创建针对目标内核模块的隔离机制:

所述VMM根据预存的所述虚拟机内核空间的空间页表将目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为大于1的正整数;

所述VMM基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

所述VMM标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT。

请参阅图6,图6是本发明实施例公开的一种代码调用方法的流程示意图,如图6所示,该代码调用方法是从VMM单侧进行描述的,具体包括以下步骤:

S601,虚拟机监视器VMM捕获页表中断事件,所述页表中断事件是由中央处理单元CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射的情况下生成的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

本发明实施例中,所述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核代码的调用权限映射,以使得所述目标内核模块有权限调用所述M-SPACE中的内核代码。

S602,所述VMM通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核代码的虚拟地址分布信息;

S603,所述VMM根据获取的所述预设权限判断策略和所述虚拟地址分布信息判断所述目标内核模块是否有权限访问所述K-SPACE中的内核代码;

S604,当所述VMM通过预存的页表中断处理函数判断出所述目标内核模块有权限调用所述K-SPACE中的内核代码时,所述VMM根据所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将所述虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。

本发明实施例中,上述VMM执行页表页表切换操作的具体实施方式为:

所述VMM将所述VMM当前加载的页表由所述MPGT切换为内核空间页表KPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中包括所述虚拟机内核空间中的基础内核模块、所述虚拟机内核空间中插入的N个内核模块中除所述目标内核模块之外的内核模块以及所述KPGT,所述N为大于1的正整数。

上述VMM执行堆栈切换操作的具体实施方式为:

所述VMM拷贝M-STACK中存储的用于传递所述K-SPACE中的内核代码的代码参数和用于调用所述K-SPACE中的内核代码的返回地址RIP;

所述VMM在所述K-STACK中写入所述代码参数和所述RIP;

所述VMM将所述虚拟机内核空间当前使用的堆栈由esp-old位置转变为esp-new位置,其中,所述esp-old位置为所述RIP在所述M-STACK中的存储位置,所述esp-new位置为所述RIP在所述K-STACK中的存储位置。

可以看出,本发明实施例中,VMM首先捕获页表中断事件,其次,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限调用K-SPACE中的内核代码时,VMM根据目标内核模块对K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于 切换后的所述K-STACK调用所述K-SPACE中的内核代码。其中,上述页表中断事件是CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对K-SPACE中的内核代码的调用权限映射的情况下生成的,可见,目标内核模块无权限直接调用K-SPACE中的内核代码,能够避免目标内核模块在安全性未知的情况下肆意调用K-SPACE中的内核代码,有利于提升系统内核代码调用的安全性。

可以看出,本发明实施例中,VMM首先捕获页表中断事件,其次,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限调用K-SPACE中的内核代码时,VMM根据目标内核模块对K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。其中,上述页表中断事件是CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对K-SPACE中的内核代码的调用权限映射的情况下生成的,可见,目标内核模块无权限直接调用内核代码,能够避免目标内核模块在安全性未知的情况下肆意调用K-SPACE中的内核代码,有利于提升系统内核代码调用的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

可选的,本发明实施例中,上述VMM捕获页表中断事件之前,还可以执行以下操作以创建针对目标内核模块的隔离机制:

所述VMM根据预存的所述虚拟机内核空间的空间页表将目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所 述N为大于1的正整数;

所述VMM基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

所述VMM标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT。

参阅图7,图7是本发明实施例公开的一种代码调用方法的流程示意图,如图7所示,该代码调用方法是从VMM单侧进行描述的,具体包括以下步骤:

S701,所述VMM根据预存的所述虚拟机内核空间的空间页表将目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为大于1的正整数;

S702,所述VMM基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

S703,所述VMM标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT;

本发明实施例中,所述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核代码的调用权限映射,以使得所述目标内核模块有权限调用所述M-SPACE中的内核代码。

S704,虚拟机监视器VMM捕获页表中断事件,所述页表中断事件是由中央处理单元CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射的情况下生成的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

S705,所述VMM通过预存的页表中断处理函数判断所述目标内核模块是否有权限调用所述K-SPACE中的内核代码;

S706,当所述VMM通过预存的页表中断处理函数判断出所述目标内核模 块有权限调用所述K-SPACE中的内核代码时,所述VMM根据所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将所述虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。

本发明实施例中,上述VMM执行页表页表切换操作的具体实施方式为:

所述VMM将所述VMM当前加载的页表由所述MPGT切换为内核空间页表KPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中包括所述虚拟机内核空间中的基础内核模块、所述虚拟机内核空间中插入的N个内核模块中除所述目标内核模块之外的内核模块以及所述KPGT,所述N为大于1的正整数。

上述VMM执行堆栈切换操作的具体实施方式为:

所述VMM拷贝M-STACK中存储的用于传递所述K-SPACE中的内核代码的代码参数和用于调用所述K-SPACE中的内核代码的返回地址RIP;

所述VMM在所述K-STACK中写入所述代码参数和所述RIP;

所述VMM将所述虚拟机内核空间当前使用的堆栈由esp-old位置转变为esp-new位置,其中,所述esp-old位置为所述RIP在所述M-STACK中的存储位置,所述esp-new位置为所述RIP在所述K-STACK中的存储位置。

可以看出,本发明实施例中,VMM首先捕获页表中断事件,其次,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限调用K-SPACE中的内核代码时,VMM根据目标内核模块对K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。其中,上述页表中断事件是CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对K-SPACE中的内核代码的调用权限映射的情况下生成的,可见,目标内核模块无权限直接调用K-SPACE中的内核代码,能够避免目标内核模块在安全性未知 的情况下肆意调用K-SPACE中的内核代码,有利于提升系统内核代码调用的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

进一步可选的,本发明实施例中,上述步骤S706中所述目标内核模块基于切换为K-STACK的所述堆栈调用所述K-SPACE中的内核代码之后,上述代码调用执行流程需要从K-SPACE返回到目标内核模块中,具体包括如下过程:

上述K-SPACE中的内核代码所属的内核模块CPU执行ret指令,请求返回到目标内核模块中;

CPU中的内存管理模块检测到上述ret指令,判断KPGT中是否创建有K-SPACE中的内核模块对目标内核模块中的内核代码的调用权限映射;

CPU中的内存管理模块判断出KPGT中未创建有K-SPACE中的内核模块对目标内核模块中的内核代码的调用权限映射,产生页表中断事件M3,

VMM捕捉到上述页表中断事件M3,响应该页表中断事件M3,通过预存的页表中断处理函数判断K-SPACE中的内核模块是否有权限调用目标内核模块的内核代码,若判断出有权限,则所述VMM在KPGT中创建K-SPACE中的内核模块对目标内核模块的内核代码的调用权限映射,将当前加载的页表由所述KPGT切换为MPGT,以及执行堆栈切换操作以将虚拟机内核空间加载的堆栈由隔离空间堆栈K-STACK切换回内核空间堆栈M-STACK,此时执行流程返回到M-SPACE,可以继续在目标内核空间调用内核代码。

进一步可选的,本发明实施例中,上述VMM执行堆栈切换操作之后,还可以执行以下操作:VMM删除所述KPGT中存储的所述K-SPACE中的内核模块所述M-SPACE中的内核代码的调用权限映射。

进一步可选的,本发明实施例中,上述VMM在删除所述KPGT中存储的所述K-SPACE中的内核模块所述M-SPACE中的内核代码的调用权限映射之后, K-SPACE中的内核模块请求调用目标内核模块中的内核代码,具体执行过程如下:

CPU检测到K-SPACE中的内核模块发出的针对目标内核模块中的内核代码的代码调用指令,则判断KPGT中是否创建有K-SPACE中的内核模块对目标内核模块的内核代码的调用权限映射;

CPU判断出KPGT中未创建有K-SPACE中的内核模块对目标内核模块的内核代码的调用权限映射,则产生页表中断事件M1;

VMM捕捉到上述页表中断事件M1,通过预存的页表中断处理函数判断所述K-SPACE中的内核模块是否有权限调用目标内核模块的内核代码,若判断出有权限,则所述VMM根据所述K-SPACE中的内核模块对目标内核模块的内核代码的调用权限映射,将所述VMM当前加载的页表由所述KPGT切换为MPGT,以及执行堆栈切换操作以将虚拟机内核空间加载的堆栈由隔离空间堆栈K-STACK切换为内核空间堆栈M-STACK,此时,系统的代码调用执行流程处于M-SPACE,执行目标内核模块的内核代码。

进一步可选的,上述M-SPACE中的目标内核模块执行完K-SPACE中的内核模块所调用的内核代码之后,虚拟机代码调用执行流程需要从目标内核模块返回到K-SPACE中,具体包括以下步骤:

CPU检测到目标内核模块发出的返回ret指令,判断MPGT中是否创建有目标内核模块对K-SPACE中的内核代码的调用权限映射;

CPU判断出MPGT中未创建目标内核模块对K-SPACE中的内核代码的调用权限映射,产生页表中断事件M2;

VMM捕捉到上述页表中断事件M2,通过预存的页表中断处理函数判断所述目标内核模块是否有权限调用上述K-SPACE中的内核模块中的内核代码,若判断出有权限,则上述VMM根据所述目标内核模块对K-SPACE中的内核代码的调用权限映射,将所述VMM当前加载的页表由所述MPGT切换为所述KPGT,以及执行堆栈切换操作以将虚拟机内核空间加载的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,此时,虚拟机的代码调用执行流程返回到K-SPACE中。

参阅图8,图8是本发明实施例公开的一种VMM的结构示意图,用于控制M-SPACE中的目标内核模块对K-SPACE中的内核数据的访问,如图8所示,该VMM包括事件捕获单元801、权限判断单元802、权限创建单元803,其中,

所述事件捕获单元801,用于捕获页表中断事件,所述页表中断事件是由CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

本发明实施例中,上述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述M-SPACE中的内核数据。

所述权限判断单元802,用于通过预存的页表中断处理函数判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据;

所述权限创建单元803,用于当所述权限判断单元通过预存的页表中断处理函数判断出所述目标内核模块有权限访问所述K-SPACE中的内核数据时,在所述MPGT中创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述K-SPACE中的内核数据。

可以理解的是,本发明实施例的VMM的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

可以看出,本发明实施例中,VMM首先捕获页表中断事件,其次,VMM通过预存的页表中断处理函数判断目标内核模块是否有权限访问K-SPACE中的内核数据,最后,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限访问K-SPACE中的内核数据时,VMM在MPGT中创建目标内核模块对K-SPACE中的内核数据的访问权限映射,以使得目标内核模块有权限访问K-SPACE中的内核数据。由于上述页表中断事件是CPU在检测到目标内核模块 发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,可见,目标内核模块无权限直接访问K-SPACE空间中内核数据,从而能够避免目标内核模块在安全性未知的情况下肆意访问K-SPACE中的内核数据,有利于提升系统内核数据访问的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

可选的,本发明实施例中,上述权限判断单元802具体用于:

通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核数据的虚拟地址分布信息;

确定所述页表中断事件的事件类型;

根据所述预设权限判断策略、所述虚拟地址分布信息以及所述事件类型判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据。

可选的,本发明实施例中,上述VMM还包括:

地址映射单元,用于在所述事件捕获单元捕获页表中断事件之前之前,根据预存的所述虚拟机内核空间的空间页表将所述目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为正整数;

空间分隔单元,用于基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

页表创建单元,用于标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中的内核模块包括所述虚拟机内核空间中的基础内核模块和所述N个内核模块中除所述目标内核 模块之外的内核模块。

参阅图9,图9是本发明实施例公开的一种VMM的结构示意图,用于控制M-SPACE中的目标内核模块对K-SPACE中的内核代码的调用,如图9所示,该VMM包括事件捕获单元901、权限判断单元902、切换单元903,其中,

所述事件捕获单元901,用于捕获页表中断事件,所述页表中断事件是由中央处理单元CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射的情况下生成的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

本发明实施例中,上述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核代码的调用权限映射,以使得所述目标内核模块有权限调用所述M-SPACE中的内核代码。

所述权限判断单元902,用于通过预存的页表中断处理函数判断所述目标内核模块是否有权限调用所述K-SPACE中的内核代码;

所述切换单元903,用于当所述权限判断单元通过预存的页表中断处理函数判断出所述目标内核模块有权限调用所述K-SPACE中的内核代码时,根据所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将所述虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。

可以看出,本发明实施例中,VMM首先捕获页表中断事件,其次,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限调用K-SPACE中的内核代码时,VMM根据目标内核模块对K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。其中,上述页表中 断事件是CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对K-SPACE中的内核代码的调用权限映射的情况下生成的,可见,目标内核模块无权限直接调用K-SPACE中的内核代码,能够避免目标内核模块在安全性未知的情况下肆意调用K-SPACE中的内核代码,有利于提升系统内核代码调用的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

可选的,本发明实施例中,上述权限判断单元902具体用于:

通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核代码的虚拟地址分布信息;

根据获取的所述预设权限判断策略和所述虚拟地址分布信息判断所述目标内核模块是否有权限访问所述K-SPACE中的内核代码。

可选的,本发明实施例中,上述切换单元903具体用于:

将所述VMM当前加载的页表由所述MPGT切换为内核空间页表KPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中包括所述虚拟机内核空间中的基础内核模块、所述虚拟机内核空间中插入的N个内核模块中除所述目标内核模块之外的内核模块以及所述KPGT,所述N为大于1的正整数。

可选的,本发明实施例中,上述切换单元903具体用于:

拷贝M-STACK中存储的用于传递所述K-SPACE中的内核代码的代码参数和用于调用所述K-SPACE中的内核代码的返回地址RIP;

在所述K-STACK中写入所述代码参数和所述RIP;

将所述虚拟机内核空间当前使用的堆栈由esp-old位置转变为esp-new位置,其中,所述esp-old位置为所述RIP在所述M-STACK中的存储位置,所述 esp-new位置为所述RIP在所述K-STACK中的存储位置。

可选的,本发明实施例中,上述VMM还包括:

地址映射单元,用于在所述事件捕获单元捕获页表中断事件之前,根据预存的所述虚拟机内核空间的空间页表将目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为大于1的正整数;

空间分隔单元,用于基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

页表创建单元,用于标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT。

参阅图10,图10是本发明实施例公开的一种VMM的结构示意图,如图10所示,该VMM可以包括:至少一个处理器1001,例如CPU,至少一个存储器1002,至少一个通信总线1003。通信总线1003用于实现处理器1001和存储器1002之间的连接通信,其中,存储器1002可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

在一些实施方式中,存储器1002存储了如下的元素(可执行模块或者数据结构,或者他们的子集,或者他们的扩展集):

操作系统10021,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;

应用程序10022,包含设备控制服务程序、设备识别服务程序等各种应用程序,用于实现各种应用业务。

具体地,处理器1001用于调用存储器1002中存储的程序,执行以下操作:

上述处理器1001捕获页表中断事件,所述页表中断事件是由CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标 内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

本发明实施例中,上述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述M-SPACE中的内核数据。

上述处理器1001通过预存的页表中断处理函数判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据;

上述处理器1001当通过预存的页表中断处理函数判断出所述目标内核模块有权限访问所述K-SPACE中的内核数据时,在所述MPGT中创建所述目标内核模块对所述K-SPACE中的内核数据的访问权限映射,以使得所述目标内核模块有权限访问所述K-SPACE中的内核数据。

可以看出,本发明实施例中,VMM首先捕获页表中断事件,其次,VMM通过预存的页表中断处理函数判断目标内核模块是否有权限访问K-SPACE中的内核数据,最后,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限访问K-SPACE中的内核数据时,VMM在MPGT中创建目标内核模块对K-SPACE中的内核数据的访问权限映射,以使得目标内核模块有权限访问K-SPACE中的内核数据。由于上述页表中断事件是CPU在检测到目标内核模块发送的针对内核空间K-SPACE中的内核数据的访问请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对所述K-SPACE中的内核数据的访问权限映射的情况下产生的,可见,目标内核模块无权限直接访问K-SPACE空间中内核数据,从而能够避免目标内核模块在安全性未知的情况下肆意访问K-SPACE中的内核数据,有利于提升系统内核数据访问的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

可选的,本发明实施例中,上述处理器1001通过预存的页表中断处理函数判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据的具体方 式为:处理器1001首先通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核数据的虚拟地址分布信息;其次,处理器1001确定所述页表中断事件的事件类型;最后,处理器1001根据所述预设权限判断策略、所述虚拟地址分布信息以及所述事件类型判断所述目标内核模块是否有权限访问所述K-SPACE中的内核数据。

可选的,本发明实施例中,上述处理器1001捕获页表中断事件之前,还可以执行以下操作以针对目标内核模块创建内核空间隔离机制:

上述处理器1001根据预存的所述虚拟机内核空间的空间页表将所述目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为正整数;

上述处理器1001基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

上述处理器1001标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中的内核模块包括所述虚拟机内核空间中的基础内核模块和所述N个内核模块中除所述目标内核模块之外的内核模块。

参阅图11,图11是本发明实施例公开的一种代码调用装置的结构示意图,如图11所示,该代码调用装置可以包括:至少一个处理器1001,例如CPU,至少一个存储器1002,至少一个通信总线1003。通信总线1003用于实现处理器1001和存储器1002之间的连接通信,其中,存储器1002可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

在一些实施方式中,存储器1002存储了如下的元素(可执行模块或者数据结构,或者他们的子集,或者他们的扩展集):

操作系统10021,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;

应用程序10022,包含设备控制服务程序、设备识别服务程序等各种应用程序,用于实现各种应用业务。

具体地,处理器1001用于调用存储器1002中存储的程序,执行以下操作:

上述处理器1001捕获页表中断事件,所述页表中断事件是由中央处理单元CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的调用请求之后、且判断出隔离空间页表MPGT中未创建所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射的情况下生成的,其中,所述VMM对应的虚拟机内核空间包括所述K-SPACE和隔离空间M-SPACE,所述M-SPACE包括所述目标内核模块和所述MPGT,所述MPGT用于支持所述目标内核模块的运行;

本发明实施例中,上述MPGT中创建有所述目标内核模块对所述M-SPACE中的内核代码的调用权限映射,以使得所述目标内核模块有权限调用所述M-SPACE中的内核代码。

上述处理器1001通过预存的页表中断处理函数判断所述目标内核模块是否有权限调用所述K-SPACE中的内核代码;

上述处理器1001当所述VMM通过预存的页表中断处理函数判断出所述目标内核模块有权限调用所述K-SPACE中的内核代码时,所述VMM根据所述目标内核模块对所述K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将所述虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。

可选的,本发明实施例中,VMM首先捕获页表中断事件,其次,当VMM通过预存的页表中断处理函数判断出目标内核模块有权限调用K-SPACE中的内核代码时,VMM根据目标内核模块对K-SPACE中的内核代码的调用权限映射,执行页表切换操作和堆栈切换操作以将虚拟机内核空间的堆栈由隔离空间堆栈M-STACK切换为内核空间堆栈K-STACK,以使得所述目标内核模块基于切换后的所述K-STACK调用所述K-SPACE中的内核代码。其中,上述页表中断事件是CPU在检测到目标内核模块针对内核空间K-SPACE中的内核代码的 调用请求之后、且判断出隔离空间页表MPGT中未创建目标内核模块对K-SPACE中的内核代码的调用权限映射的情况下生成的,可见,目标内核模块无权限直接调用K-SPACE中的内核代码,能够避免目标内核模块在安全性未知的情况下肆意调用K-SPACE中的内核代码,有利于提升系统内核代码调用的安全性。

同时,由于VMM相对于虚拟机操作系统拥有更高的运行权限,故而在虚拟化环境下,具备更高特权级VMM在执行权限上与虚拟机之间相互隔离,不会受到虚拟机的直接攻击。

同时,由于VMM具有客户机平台无关性,可以同时对多个不同类型的客户操作系统的内核模块进行隔离。

可选的,本发明实施例中,上述处理器1001VMM捕获页表中断事件之前,还可以执行以下操作以创建针对目标内核模块的隔离机制:

上述处理器1001根据预存的所述虚拟机内核空间的空间页表将目标内核模块的虚拟地址分布信息映射为物理地址分布信息,其中,所述目标内核模块为从所述虚拟机内核空间中插入的N个内核模块中选取的需要被隔离的内核模块,所述N为大于1的正整数;

上述处理器1001基于所述物理地址分布信息分隔所述虚拟机内核空间为所述M-SPACE和所述K-SPACE;

上述处理器1001标记所述虚拟机内核空间的空间页表为内核空间页表KPGT,并基于所述物理地址分布信息创建所述MPGT。

可选的,本发明实施例中,上述处理器1001通过预存的页表中断处理函数判断所述目标内核模块是否有权限调用所述K-SPACE中的内核代码的具体实施方式为:上述处理器1001通过预存的页表中断函数获取所述页表中断事件对应的预设权限判断策略,并获取所述K-SPACE中的内核代码的虚拟地址分布信息;根据获取的所述预设权限判断策略和所述虚拟地址分布信息判断所述目标内核模块是否有权限访问所述K-SPACE中的内核代码。

可选的,本发明实施例中,上述处理器1001执行页表页表切换操作的具体实施方式为:上述处理器1001将所述VMM当前加载的页表由所述MPGT切换 为内核空间页表KPGT,其中,所述KPGT用于支持所述K-SPACE中的内核模块的运行,所述K-SPACE中包括所述虚拟机内核空间中的基础内核模块、所述虚拟机内核空间中插入的N个内核模块中除所述目标内核模块之外的内核模块以及所述KPGT,所述N为大于1的正整数。

可选的,本发明实施例中,上述处理器1001执行堆栈切换操作的具体实施方式为:上述处理器1001拷贝M-STACK中存储的用于传递所述K-SPACE中的内核代码的代码参数和用于调用所述K-SPACE中的内核代码的返回地址RIP;在所述K-STACK中写入所述代码参数和所述RIP;将所述虚拟机内核空间当前使用的堆栈由esp-old位置转变为esp-new位置,其中,所述esp-old位置为所述RIP在所述M-STACK中的存储位置,所述esp-new位置为所述RIP在所述K-STACK中的存储位置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。

以上对本发明实施例公开的一种模块隔离、数据访问、代码调用方法、相关装置及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1