首页 / 专利库 / 钟表 / 指针 / 一种虚拟机逃逸检测方法及装置

一种虚拟机逃逸检测方法及装置

阅读:799发布:2021-05-18

专利汇可以提供一种虚拟机逃逸检测方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种 虚拟机 逃逸检测方法及装置,涉及计算机技术领域,通过检测虚拟机的读写 请求 来判断该虚拟机是否存在逃逸行为,以此简化虚拟机逃逸检测流程,提高检测效率。本发明主要的技术方案为:在对虚拟机中的虚拟设备初始化时,获取所述虚拟设备对应的存储区域的地址;根据所述存储区域的地址查找读写函数 指针 ,所述读写函数指针指向处理所述虚拟设备的读写请求对应程序的地址;将所述读写函数指针替换为对应的检测指针,所述检测指针用于指向检测所述虚拟设备的读写请求是否异常的检测程序的地址;通过检测程序检测所述虚拟设备的读写请求是否为异常请求。本发明主要用于检测虚拟机逃逸行为。,下面是一种虚拟机逃逸检测方法及装置专利的具体信息内容。

1.一种虚拟机逃逸检测方法,其特征在于,所述方法包括:
在对虚拟机中的虚拟设备初始化时,获取所述虚拟设备对应的存储区域的地址;
根据所述存储区域的地址查找读写函数指针,所述读写函数指针指向处理所述虚拟设备的读写请求对应程序的地址;
将所述读写函数指针替换为对应的检测指针,所述检测指针用于指向检测所述虚拟设备的读写请求是否异常的检测程序的地址;
通过所述检测程序检测所述虚拟设备的读写请求是否为异常请求。
2.根据权利要求1所述方法,其特征在于,获取所述虚拟设备对应的存储区域的地址包括:
获取所述虚拟设备在初始化时为所述虚拟设备对应的存储区域命名的赋值函数;
解析所述赋值函数,得到所述存储区域的名称以及赋值的地址;
根据所述赋值的地址确定所述存储区域的地址。
3.根据权利要求2所述方法,其特征在于,根据所述存储区域的地址查找读写函数指针包括:
确定所述存储区域中处理所述虚拟设备的读写请求的地址;
在所述地址内查找所述读写请求对应的读写函数指针。
4.根据权利要求1所述方法,其特征在于,在将读写函数指针替换为对应的检测指针之前,所述方法还包括:
预置检测程序,并根据所述检测程序的地址生成所述检测指针。
5.根据权利要求2所述方法,其特征在于,在将读写函数指针替换为对应的检测指针之后,所述方法还包括:
根据所述虚拟设备的读写请求,将所述读写请求中包含的设备名称与所述存储区域的名称相匹配;
若名称不同,则停止对所述读写请求的处理。
6.根据权利要求1所述方法,其特征在于,在通过所述检测程序检测所述虚拟设备的读写请求是否为异常请求之后,所述方法还包括:
当所述虚拟设备的读写请求被检测为正常请求时,将所述读写请求由替换前的所述读写函数指针所指向的程序进行处理;
当所述虚拟设备的读写请求被检测为异常请求时,停止对所述读写请求的处理,并发送报警提示信息。
7.一种虚拟机逃逸检测装置,其特征在于,所述装置包括:
获取单元,用于在对虚拟机中的虚拟设备初始化时,获取所述虚拟设备对应的存储区域的地址;
查找单元,用于根据所述获取单元获取存储区域的地址查找读写函数指针,所述读写函数指针指向处理所述虚拟设备的读写请求对应程序的地址;
替换单元,用于将所述查找单元得到的读写函数指针替换为对应的检测指针,所述检测指针用于指向检测所述虚拟设备的读写请求是否异常的检测程序的地址;
检测单元,用于在所述替换单元替换检测指针后,通过所述检测程序检测所述虚拟设备的读写请求是否为异常请求。
8.根据权利要求7所述装置,其特征在于,所述获取单元包括:
获取模,用于获取所述虚拟设备在初始化时为所述虚拟设备对应的存储区域命名的赋值函数;
解析模块,用于解析所述获取模块获取的赋值函数,得到所述存储区域的名称以及赋值的地址;
确定模块,用于根据所述赋值的地址确定所述存储区域的地址。
9.根据权利要求8所述装置,其特征在于,所述查找单元包括:
确定模块,用于确定所述存储区域中处理所述虚拟设备的读写请求的地址;
查找模块,用于在所述确定模块确定的地址内查找所述读写请求对应的读写函数指针。
10.根据权利要求7所述装置,其特征在于,所述装置还包括:
生成单元,用于在所述替换单元将读写函数指针替换为对应的检测指针之前,预置检测程序,并根据所述检测程序的地址生成所述检测指针。

说明书全文

一种虚拟机逃逸检测方法及装置

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种虚拟机逃逸检测方法及装置。

背景技术

[0002] 虚拟化指的是将一个物理计算机划分为一个或多个完全孤立的“虚拟机”。对于操作系统而言,实际上把他们看作是在自己身上运行的一个程序,但他们实际上会共享机器的物理硬件,比如CPU、内存、磁盘和网络设备。虚拟机的使用提供了两个主要的好处:资源共享和隔离。在非虚拟环境中,所有的资源在物理计算机上专用。如果系统有2GB的内存,运行任务使用了其中1GB,那么其余的就会被闲置,不能充分利用。
[0003] 虚拟机提供的环境,看起来就像是独立并存的数个计算机,而实际上是在一个物理主机上模拟运行的。虽然虚拟机的隔离程度依赖于底层的虚拟化技术,但是在没有进行特殊配置的情况下,虚拟机之间并不允许互相交流。
[0004] 虚拟机能够分享主机的资源并提供隔离。在理想的环境中,一个程序运行在虚拟机里,应该无法影响其他虚拟机。但是,由于技术的限制和虚拟化软件的一些程序漏洞,这种理想环境并不存在。在虚拟机里运行的程序能够通过这些漏洞会绕过底层,从而利用宿主机,这种技术叫做虚拟机逃逸技术,由于宿主机的特权地位,其结果将使整个虚拟环境下所有虚拟机的安全性受到威胁。为了防止虚拟机逃逸行为的出现,就需要对虚拟机所运行的程序进行检测判断,尤其是对共享资源的操作请求加以识别。而目前的主要判断方式是通过分析主机内核所生成的操作指令是否会造成虚拟机逃逸,但这种方式的处理过程十分复杂,且没有成熟可行的实现方案,其理论实现方式在实际测试应用中的检测效率十分低下。

发明内容

[0005] 有鉴于此,本发明提供一种虚拟机逃逸检测方法及装置,通过虚拟机自行检测其生成的操作请求来判断该虚拟机是否逃逸,以此简化虚拟机逃逸检测流程,提高检测效率。
[0006] 依据本发明的一个方面,提出了一种虚拟机逃逸检测方法,该方法包括:
[0007] 在对虚拟机中的虚拟设备初始化时,获取所述虚拟设备对应的存储区域的地址;
[0008] 根据所述存储区域的地址查找读写函数指针,所述读写函数指针指向处理所述虚拟设备的读写请求对应程序的地址;
[0009] 将所述读写函数指针替换为对应的检测指针,所述检测指针用于指向检测所述虚拟设备的读写请求是否异常的检测程序的地址;
[0010] 通过所述检测程序检测所述虚拟设备的读写请求是否为异常请求。
[0011] 依据本发明的另一个方面,提出了一种虚拟机逃逸检测装置,该装置包括:
[0012] 获取单元,用于在对虚拟机中的虚拟设备初始化时,获取所述虚拟设备对应的存储区域的地址;
[0013] 查找单元,用于根据所述获取单元获取存储区域的地址查找读写函数指针,所述读写函数指针指向处理所述虚拟设备的读写请求对应程序的地址;
[0014] 替换单元,用于将所述查找单元得到的读写函数指针替换为对应的检测指针,所述检测指针用于指向检测所述虚拟设备的读写请求是否异常的检测程序的地址;
[0015] 检测单元,用于在所述替换单元替换检测指针后,通过所述检测程序检测所述虚拟设备的读写请求是否为异常请求。
[0016] 本发明所采用的一种虚拟机逃逸检测方法及装置,通过在虚拟机初始化各个虚拟设备时获取各虚拟设备的存储区域的地址,并将该存储区域中保存的处理虚拟设备读写请求的读写函数指针替换为用于检测读写请求是否存在异常的检测程序的检测指针,以此来检测该虚拟机中的各个虚拟设备是否存在有逃逸行为。同现有的虚拟机逃逸检测方式相比,本发明所采用的检测方法无需在主机内核中分析虚拟机中各个虚拟设备的操作指令,而是由虚拟机对本机中的虚拟设备进行实时检测,简化了检测流程,提高了检测的效率。同时,由于目前的开源虚拟化解决方案中针对处理虚拟设备的读写请求的读写函数指针还无法直接获取,因此,本发明也是针对在虚拟机侧针对其中的各虚拟设备,尤其是各虚拟设备所生成的读写请求,给出了检测虚拟机逃逸的具体实现方式,解决了虚拟机无法获取各虚拟设备处理读写请求的读写函数指针的问题。
[0017] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明
[0018] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0019] 图1示出了本发明实施例提出的一种虚拟机逃逸检测方法流程图
[0020] 图2示出了本发明实施例提出的另一种虚拟机逃逸检测方法流程图;
[0021] 图3示出了本发明实施例提出的一种虚拟机逃逸检测装置的组成框图
[0022] 图4示出了本发明实施例提出的另一种虚拟机逃逸检测装置的组成框图。

具体实施方式

[0023] 下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
[0024] 本发明实施例提供了一种虚拟机逃逸检测方法,该方法基于当前的开源虚拟化解决方案无法获取虚拟机中处理各虚拟设备读写操作的读写函数指针。而虚拟机逃逸行为多是通过虚拟机中的各虚拟设备发起的读写操作请求利用虚拟机机程序中的漏洞所实现的。因此本发明实施例所述的方法就是在虚拟机侧监控各虚拟设备的读写操作是否存在异常,进而判断该虚拟机是否有逃逸行为。该方法具体步骤如图1所示,包括:
[0025] 101、在对虚拟机中的虚拟设备初始化时,获取虚拟设备对应的存储区域的地址。
[0026] 在虚拟化环境中创建虚拟机时,需要为虚拟机分配对应的处理资源,如分配内存大小、配置虚拟机的虚拟处理器个数、确定操作系统类型等。也就是对该虚拟机中的各虚拟设备进行初始化设置。在对各虚拟设备初始化时,获取各虚拟设备对应的存储区域的地址,该存储区域用于记载虚拟机处理该虚拟设备的名称以及各操作请求的处理函数指针等信息。
[0027] 102、根据存储区域的地址查找读写函数指针。
[0028] 由于虚拟设备所对应的存储区域中存储有该虚拟设备所产生的各操作请求所对应的处理函数指针,而本发明实施例中主要是通过判断读写操作是否异常,因此,需要在各种处理函数指针中查找出用于处理读写操作的读写函数指针。需要说明的是,该读写函数指针分为读函数指针与写函数指针,且分别对应于读操作请求与写操作请求。它们各自指向处理读操作请求或写操作请求所对应程序的地址。
[0029] 103、将读写函数指针替换为对应的检测指针。
[0030] 在得到虚拟设备所对应的读函数指针与写函数指针后,将这些指针替换为各自对应的检测指针,其中,检测读操作的检测指针指向检测虚拟设备的读操作请求是否为异常请求的检测程序地址,检测写操作的检测指针则指向检测虚拟设备的写操作请求是否为异常请求的检测程序地址。
[0031] 在本发明实施例中,替换检测指针的目的在于虚拟机处理虚拟设备的读写操作之前,对该虚拟设备的读写请求进行检测,因此,除了替换对应的检测指针外也可以根据读写函数指针的地址将检测指针插入读写函数指针之前,并设置通过检测程序检测合格的读写操作请求继续执行该读写函数指针所指向的处理程序。
[0032] 104、通过检测程序检测虚拟设备的读写请求是否为异常请求。
[0033] 通过上述三个步骤,使得虚拟机在执行虚拟设备的读写操作请求时,将会对该读写操作请求进行检测,即在虚拟设备初始化时完成对该虚拟设备的读写函数指针的替换处理。之后,在虚拟设备产生读写操作请求时,虚拟机将根据检测程序对读写操作请求进行检测,判断该请求是否为异常请求,其中,异常请求是指通过对该请求的处理可能会造成该虚拟机逃逸的操作请求。具体的检测程序本发明实施例不做具体限定,可以是通过建立异常请求库进行对比的方式,也可以是判断请求中的具体参数或特征信息的方式。
[0034] 最终虚拟机根据检测的结果来确定对该请求的进一步操作,正常则继续执行相应的读写操作,异常则停止该操作请求,并发送报警信息提示该操作可能会造成虚拟机逃逸。
[0035] 本发明实施例提供的一种虚拟机逃逸检测方法,通过在虚拟机初始化各个虚拟设备时获取各虚拟设备的存储区域的地址,并将该存储区域中保存的处理虚拟设备读写请求的读写函数指针替换为用于检测读写请求是否存在异常的检测程序的检测指针,以此来检测该虚拟机中的各个虚拟设备是否存在有逃逸行为。同现有的虚拟机逃逸检测方式相比,本发明实施例所采用的检测方法无需在主机内核中分析虚拟机中各个虚拟设备的操作指令,而是由虚拟机对本机中的虚拟设备进行实时检测,简化了检测流程,提高了检测的效率。同时,由于目前的开源虚拟化解决方案中针对处理虚拟设备的读写请求的读写函数指针还无法直接获取,因此,本发明也是针对在虚拟机侧针对其中的各虚拟设备,尤其是各虚拟设备所生成的读写请求,给出了检测虚拟机逃逸的具体实现方式,解决了虚拟机无法获取各虚拟设备处理读写请求的读写函数指针的问题。
[0036] 进一步的,为了更加详细的说明上述的虚拟机逃逸检测方法在应用中的具体实现,本发明实施例还提供了一种虚拟机逃逸检测方法,如图2所示,该方法的步骤包括:
[0037] 201、在对虚拟机中的虚拟设备初始化时,获取虚拟设备对应的存储区域的地址。
[0038] 目前所采用的开源虚拟化解决方案中,较为主流的包括:KVM(全称是Kernel-based Virtual Machine),是Linux下x86硬件平台上的全功能虚拟化解决方案;Xen,是一个开放源代码虚拟机监视器,由剑桥大学开发;OpenVZ,是基于Linux内核和作业系统的操作系统级虚拟化技术;VirtualBox,是一款功能强大的x86虚拟机软件。这些开源虚拟化解决方案中,针对应用的开源代码并无法获取到虚拟机中处理具体操作请求的代码,因此很难获取到虚拟机中虚拟设备的操作请求,尤其是读写操作请求。
[0039] 本发明实施例则是重点针对该问题,通过在对虚拟机中的虚拟设备初始化时,获取虚拟设备对应的存储区域的地址。由于虚拟设备初始化时,会分配一个存储区域,同时系统会为该存储区域进行命名,例如,在KVM中是通过调用函数g_strdup为虚拟设备的存储区域进行名称赋值的。通过获取该名称赋值函数,并对该函数分析,能够得到该赋值函数的值以及赋值的具体位置,即存储区域的名称及存储该名称的地址。在实际应用中,由于存储区域保存在RBX寄存器中,而该寄存器属于非易失性寄存器,因此,g_strdup函数的值可以由hook g_strdup获取。通过得到的存储名称的地址可以进一步确定该存储区域的首地址。
[0040] 202、根据存储区域的地址查找读写函数指针。
[0041] 在确定虚拟设备的存储区域的首地址后,通过该地址查找存储区域中用于处理虚拟设备的读写请求的地址,并根据该地址确定对应的读写函数指针,分别包括读函数指针和写函数指针。本发明实施例对于具体的地址查找方式和指针的确定方式均不做具体限定。
[0042] 203、预置检测程序,并根据所述检测程序的地址生成所述检测指针。
[0043] 根据预置的检测程序生成对应的检测指针,其中,检测程序是根据不同的操作请求所预置的不同检测程序,具体到本发明实施例中则分为读操作检测程序与写操作检测程序。根据所预置检测程序的不同地址,将生成与检测程序所对应的检测指针。
[0044] 其中,预置的检测程序用于检测虚拟设备所生成的操作请求是否异常,该检测程序对应于不同的操作请求将预置不同的检测程序,例如,检测读操作请求的检测程序和检测写操作请求的检测程序。
[0045] 204、将读写函数指针替换为对应的检测指针。
[0046] 将步骤203中得到的检测指针分别对应地替换步骤202中得到读函数指针与写函数指针。
[0047] 需要说明的是,本步骤中被替换的读写函数指针在完成替换操作后,仍会保留该指针以便在确定虚拟设备的操作请求为正常的读写操作时,利用该指针执行后续的读写操作。
[0048] 205、获取虚拟设备的读写请求。
[0049] 在完成检测指针的替换后,虚拟设备一旦产生读写操作的请求,该请求将根据对应的检测指针由相应的检测程序进行判断。而在进行该判断前,为了确保该读写请求是由该虚拟设备所生成。有必要对该请求进行进一步验证。本发明实施例中所采用的具体方式是查找读写请求中所包含的设备名称,并与存储区域的名称相匹配,若读写请求中存在与存储区域的名称相同的名称则确定该读写请求是由虚拟设备所生成的,并继续后续的执行流程,而当读写请求中不存在与存储区域名称相同的名称时,则停止对该读写请求的继续处理,并发送报警信息提示该请求的执行主体存在错误。其中,本发明实施例在匹配名称时,可以通过对存放读写操作请求的寄存器中的内容进行遍历查询,根据不同偏移量查找是否存在存储区域名称的字段。
[0050] 206、通过检测程序检测虚拟设备的读写请求是否为异常请求。
[0051] 最后,将验证确认后的读写请求通过检测指针交由检测程序进行识别判断:当虚拟设备的读写请求被检测为正常请求时,说明该读写请求不会造成虚拟机逃逸,因此,将该读写请求交由替换前的读写函数指针所指向的程序进行处理,其中,发送至读写请求的处理程序可以由检测程序直接指向该处理程序,也可以通过向虚拟机返回一个检测结果,由虚拟机根据该检测结果将读写请求执行原读写函数指针将读写请求发送至对应的处理程序进行读写处理。而当虚拟设备的读写请求被检测为异常请求时,说明该读写请求可能会造成虚拟机逃逸,此时,虚拟机将停止对该读写请求的处理,同时,发出报警提示信息以提示虚拟机使用者该操作请求存在异常,并将该报警提示信息生成相应的报警日志信息。
[0052] 作为实现上述方法的具体装置,本发明实施例提供了一种虚拟机逃逸检测装置,如图3所示,该装置包括:
[0053] 获取单元31,用于在对虚拟机中的虚拟设备初始化时,获取所述虚拟设备对应的存储区域的地址;
[0054] 查找单元32,用于根据所述获取单元31获取存储区域的地址查找读写函数指针,所述读写函数指针指向处理所述虚拟设备的读写请求对应程序的地址;
[0055] 替换单元33,用于将所述查找单元32得到的读写函数指针替换为对应的检测指针,所述检测指针用于指向检测所述虚拟设备的读写请求是否异常的检测程序的地址;
[0056] 检测单元34,用于在所述替换单元33替换检测指针后,通过检测程序检测所述虚拟设备的读写请求是否为异常请求。
[0057] 进一步的,如图4所示,所述获取单元31包括:
[0058] 获取模311,用于获取所述虚拟设备在初始化时为所述虚拟设备对应的存储区域命名的赋值函数;
[0059] 解析模块312,用于解析所述获取模块311获取的赋值函数,得到所述存储区域的名称以及赋值的地址;
[0060] 确定模块313,用于根据所述赋值的地址确定所述存储区域的地址。
[0061] 进一步的,如图4所示,所述查找单元32包括:
[0062] 确定模块321,用于确定所述存储区域中处理所述虚拟设备的读写请求的地址;
[0063] 查找模块322,用于在所述确定模块321确定的地址内查找所述读写请求对应的读写函数指针。
[0064] 进一步的,如图4所示,所述装置还包括:
[0065] 生成单元35,用于在所述替换单元33将读写函数指针替换为对应的检测指针之前,预置检测程序,并根据所述检测程序的地址生成所述检测指针。
[0066] 进一步的,如图4所示,所述装置还包括:
[0067] 匹配单元36,用于在替换单元33将读写函数指针替换为对应的检测指针之后,根据所述虚拟设备的读写请求,将所述读写请求中包含的设备名称与所述存储区域的名称相匹配;
[0068] 停止单元37,用于当所述匹配单元36匹配的名称不同时,停止对所述读写请求的处理。
[0069] 进一步的,如图4所示,所述装置还包括:
[0070] 处理单元38,用于当所述虚拟设备的读写请求被所述检测单元34检测为正常请求时,将所述读写请求由替换前的所述读写函数指针所指向的程序进行处理;
[0071] 所述停止单元37还用于,当所述虚拟设备的读写请求被所述检测单元34检测为异常请求时,停止对所述读写请求的处理,并发送报警提示信息。
[0072] 综上所述,本发明实施例所提供的一种虚拟机逃逸检测方法及装置,通过在虚拟机初始化各个虚拟设备时获取各虚拟设备的存储区域的地址,并将该存储区域中保存的处理虚拟设备读写请求的读写函数指针替换为用于检测读写请求是否存在异常的检测程序的检测指针,以此来检测该虚拟机中的各个虚拟设备是否存在有逃逸行为。同现有的虚拟机逃逸检测方式相比,本发明实施例所采用的检测方法无需在主机内核中分析虚拟机中各个虚拟设备的操作指令,而是由虚拟机对本机中的虚拟设备进行实时检测,简化了检测流程,提高了检测的效率。同时,由于目前的开源虚拟化解决方案中针对处理虚拟设备的读写请求的读写函数指针还无法直接获取,因此,本发明也是针对在虚拟机侧针对其中的各虚拟设备,尤其是各虚拟设备所生成的读写请求,给出了检测虚拟机逃逸的具体实现方式,解决了虚拟机无法获取各虚拟设备处理读写请求的读写函数指针的问题。此外,由于本发明实施例是通过预置的检测程序对虚拟设备的读写请求进行的检测判断,该检测程序可根据具体的检测条件进行实时的更新,因此,本发明实施例对于虚拟机逃逸的检测标准的更新更加简便,通过对检测程序的实时更新使得检测的时效性更高。
[0073] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0074] 可以理解的是,上述服务器及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
[0075] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述云端服务器实施例中的对应过程,在此不再赘述。
[0076] 在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0077] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的云端服务器、结构和技术,以便不模糊对本说明书的理解。
[0078] 类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的云端服务器解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0079] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何云端服务器或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0080] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0081] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的云端服务器的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0082] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0083] 本发明还公开了如下方案:
[0084] A1、一种虚拟机逃逸检测方法,所述方法包括:
[0085] 在对虚拟机中的虚拟设备初始化时,获取所述虚拟设备对应的存储区域的地址;
[0086] 根据所述存储区域的地址查找读写函数指针,所述读写函数指针指向处理所述虚拟设备的读写请求对应程序的地址;
[0087] 将所述读写函数指针替换为对应的检测指针,所述检测指针用于指向检测所述虚拟设备的读写请求是否异常的检测程序的地址;
[0088] 通过所述检测程序检测所述虚拟设备的读写请求是否为异常请求。
[0089] A2、根据A1所述方法,获取所述虚拟设备对应的存储区域的地址包括:
[0090] 获取所述虚拟设备在初始化时为所述虚拟设备对应的存储区域命名的赋值函数;
[0091] 解析所述赋值函数,得到所述存储区域的名称以及赋值的地址;
[0092] 根据所述赋值的地址确定所述存储区域的地址。
[0093] A3、根据A2所述方法,根据所述存储区域的地址查找读写函数指针包括:
[0094] 确定所述存储区域中处理所述虚拟设备的读写请求的地址;
[0095] 在所述地址内查找所述读写请求对应的读写函数指针。
[0096] A4、根据A1所述方法,在将读写函数指针替换为对应的检测指针之前,所述方法还包括:
[0097] 预置检测程序,并根据所述检测程序的地址生成所述检测指针。
[0098] A5、根据A2所述方法,在将读写函数指针替换为对应的检测指针之后,所述方法还包括:
[0099] 根据所述虚拟设备的读写请求,将所述读写请求中包含的设备名称与所述存储区域的名称相匹配;
[0100] 若名称不同,则停止对所述读写请求的处理。
[0101] A6、根据A1所述方法,在通过所述检测程序检测所述虚拟设备的读写请求是否为异常请求之后,所述方法还包括:
[0102] 当所述虚拟设备的读写请求被检测为正常请求时,将所述读写请求由替换前的所述读写函数指针所指向的程序进行处理;
[0103] 当所述虚拟设备的读写请求被检测为异常请求时,停止对所述读写请求的处理,并发送报警提示信息。
[0104] B7、一种虚拟机逃逸检测装置,所述装置包括:
[0105] 获取单元,用于在对虚拟机中的虚拟设备初始化时,获取所述虚拟设备对应的存储区域的地址;
[0106] 查找单元,用于根据所述获取单元获取存储区域的地址查找读写函数指针,所述读写函数指针指向处理所述虚拟设备的读写请求对应程序的地址;
[0107] 替换单元,用于将所述查找单元得到的读写函数指针替换为对应的检测指针,所述检测指针用于指向检测所述虚拟设备的读写请求是否异常的检测程序的地址;
[0108] 检测单元,用于在所述替换单元替换检测指针后,通过所述检测程序检测所述虚拟设备的读写请求是否为异常请求。
[0109] B8、根据B7所述装置,所述获取单元包括:
[0110] 获取模块,用于获取所述虚拟设备在初始化时为所述虚拟设备对应的存储区域命名的赋值函数;
[0111] 解析模块,用于解析所述获取模块获取的赋值函数,得到所述存储区域的名称以及赋值的地址;
[0112] 确定模块,用于根据所述赋值的地址确定所述存储区域的地址。
[0113] B9、根据B8所述装置,所述查找单元包括:
[0114] 确定模块,用于确定所述存储区域中处理所述虚拟设备的读写请求的地址;
[0115] 查找模块,用于在所述确定模块确定的地址内查找所述读写请求对应的读写函数指针。
[0116] B10、根据B7所述装置,所述装置还包括:
[0117] 生成单元,用于在所述替换单元将读写函数指针替换为对应的检测指针之前,预置检测程序,并根据所述检测程序的地址生成所述检测指针。
[0118] B11、根据B8所述装置,所述装置还包括:
[0119] 匹配单元,用于在替换单元将读写函数指针替换为对应的检测指针之后,根据所述虚拟设备的读写请求,将所述读写请求中包含的设备名称与所述存储区域的名称相匹配;
[0120] 停止单元,用于当所述匹配单元匹配的名称不同时,停止对所述读写请求的处理。
[0121] B12、根据B11所述装置,所述装置还包括:
[0122] 处理单元,用于当所述虚拟设备的读写请求被所述检测单元检测为正常请求时,将所述读写请求由替换前的所述读写函数指针所指向的程序进行处理;
[0123] 所述停止单元还用于,当所述虚拟设备的读写请求被所述检测单元检测为异常请求时,停止对所述读写请求的处理,并发送报警提示信息。
相关专利内容
标题 发布/更新时间 阅读量
指针仪表 2020-05-13 35
一种反向指针 2020-05-11 983
一种三色指针 2020-05-11 671
一种盘状指针 2020-05-11 457
指针钟表 2020-05-13 688
一种汽车仪表指针组件 2020-05-11 799
新型汽车仪表指针 2020-05-12 204
一种新型指针 2020-05-11 875
一种减少漏光的指针 2020-05-11 563
一种防漏光指针 2020-05-12 682
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈