虚拟机进程监控方法和装置制造方法

文档序号:6515602阅读:298来源:国知局
虚拟机进程监控方法和装置制造方法
【专利摘要】本发明提供一种虚拟机进程监控方法和装置,其中,方法包括:获取虚拟机的操作系统类型;根据操作系统类型确定与操作系统类型对应的内核数据结构偏移数组,内核数据结构偏移数组中包括:操作系统类型对应的虚拟机的进程链表数据结构以及操作系统类型对应的虚拟机中各进程的进程信息在各进程对应的结构体中的偏移量;根据进程链表数据结构确定操作系统类型对应的虚拟机中各进程对应的结构体的虚拟地址;根据各进程对应的结构体的虚拟地址以及各进程的进程信息在各进程对应的结构体中的偏移量确定操作系统类型对应的虚拟机中各进程的进程信息,解决了现有技术中难以对宿主机上安装有不同操作系统的多个虚拟机同时进行监控,降低监控效率的问题。
【专利说明】虚拟机进程监控方法和装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种虚拟机进程监控方法和装置。
【背景技术】
[0002]现有技术中,通过在宿主机上的虚拟机监控器中安装监控程序,实现对宿主机上的虚拟机的进程进行监控。
[0003]然而现有技术中,由于不同种类的操作系统的语义不同,因此虚拟机监控器中的监控程序只能分析一种操作系统的语义,获取安装有同一种操作系统的多个虚拟机的进程,难以对宿主机上安装有不同操作系统的多个虚拟机同时进行监控,降低了监控效率。

【发明内容】

[0004]本发明提供一种虚拟机进程监控方法和装置,用于解决现有技术中难以对宿主机上安装有不同操作系统的多个虚拟机同时进行监控,降低监控效率的问题。
[0005]本发明的第一个方面是提供一种虚拟机进程监控方法,包括:
[0006]获取虚拟机的操作系统类型;
[0007]根据所述操作系统类型,查询预设的内核数据结构偏移集合,确定与所述操作系统类型对应的内核数据结构偏移数组,所述内核数据结构偏移数组中包括:所述操作系统类型对应的虚拟机的进程链表数据结构以及所述操作系统类型对应的虚拟机中各进程的进程信息在各进程对应的结构体中的偏移量;
[0008]根据所述进程链表数据结构确定所述操作系统类型对应的虚拟机中各进程对应的结构体的虚拟地址;
[0009]根据所述各进程对应的结构体的虚拟地址以及所述各进程的进程信息在各进程对应的结构体中的偏移量获取所述操作系统类型对应的虚拟机中各进程的进程信息。
[0010]本发明的另一个方面提供一种虚拟机进程监控装置,包括:
[0011]获取模块,用于获取虚拟机的操作系统类型;
[0012]确定模块,用于根据所述操作系统类型,查询预设的内核数据结构偏移集合,确定与所述操作系统类型对应的内核数据结构偏移数组,所述内核数据结构偏移数组中包括:所述操作系统类型对应的虚拟机的进程链表数据结构以及所述操作系统类型对应的虚拟机中各进程的进程信息在各进程对应的结构体中的偏移量;
[0013]所述确定模块还用于,根据所述进程链表数据结构确定所述操作系统类型对应的虚拟机中各进程对应的结构体的虚拟地址;
[0014]所述获取模块还用于,根据所述各进程对应的结构体的虚拟地址以及所述各进程的进程信息在各进程对应的结构体中的偏移量获取所述操作系统类型对应的虚拟机中各进程的进程信息。
[0015]本发明通过获取虚拟机的操作系统类型,根据虚拟机的操作系统类型确定与操作系统类型对应的内核数据结构偏移数组,根据内核数据结构偏移数组获取虚拟机中各进程的进程信息,从而能够对宿主机上安装有不同操作系统的多个虚拟机同时进行监控,提高了监控效率。
【专利附图】

【附图说明】
[0016]图1为本发明提供的虚拟机进程监控方法一个实施例的流程图;
[0017]图2为本发明提供的虚拟机进程监控方法又一个实施例的流程图;
[0018]图3为在待终止进程对应的结构体中保存终止待终止进程指令的工作流程示意图;
[0019]图4为本发明提供的虚拟机进程监控方法另一个实施例的流程图;
[0020]图5为本发明提供的虚拟机进程监控装置一个实施例的结构示意图。
【具体实施方式】
[0021]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0022]图1为本发明提供的虚拟机进程监控方法一个实施例的流程图,如图1所示,包括:
[0023]101、获取虚拟机的操作系统类型。
[0024]本发明的执行主体为虚拟机进程监控装置,虚拟机进程监控装置具体可以位于宿主机上的虚拟监控器(Virtual Machine Monitor)中,例如位于虚拟监控器KVM(Kernel-based Virtual Machine,)或者虚拟监控器XEN中。虚拟监控器可以位于虚拟机操作系统和宿主机之间。
[0025]对于本宿主机上正在运行的虚拟机或者刚从其他宿主机迁移到本宿主机的虚拟机,虚拟机进程监控装置可以获取中断描述符表(Interrupt Descriptor Table, IDT)寄存器的base数值;对于在本宿主机启动的虚拟机,由于启动过程需要一定的时间,每次CR3控制寄存器切换时虚拟机进程监控装置可以读取IDT寄存器的limit数值,当limit数值为“Oxff”时表示IDT寄存器已初始化完成,此时虚拟机进程监控装置可以获取IDT寄存器的base数值。获取到虚拟机的IDT寄存器的base数值之后,虚拟机进程监控装置可以根据base数值判断虚拟机的操作系统类型。
[0026]虚拟机进程监控装置可以通过创建装有操作系统的虚拟机镜像,使用qemu-system-x86_64命令的-monitor stdio选项启动虚拟机,在标准输入输出控制台执行info register命令来获取IDT寄存器的base数值。
[0027]102、根据操作系统类型,查询预设的内核数据结构偏移集合,确定与操作系统类型对应的内核数据结构偏移数组,内核数据结构偏移数组中包括:操作系统类型对应的虚拟机的进程链表数据结构以及操作系统类型对应的虚拟机中各进程的进程信息在各进程对应的结构体中的偏移量。
[0028]其中,虚拟机进程监控装置根据操作系统类型,查询预设的内核数据结构偏移集合,确定与操作系统类型对应的内核数据结构偏移数组之前,虚拟机进程监控装置还需要创建内核数据结构偏移集合,内核数据结构偏移集合中包括宿主机支持的各虚拟机的操作系统类型以及与各虚拟机的操作系统类型对应的内核数据结构偏移数组。
[0029]当虚拟机的操作系统类型为Windows XP或Windows7等操作系统时,虚拟机进程监控装置创建内核数据结构偏移集合中的内核数据结构偏移数组的过程具体可以为:虚拟机进程监控装置可以将IDT寄存器的base数值作为虚拟机的操作系统类型对应的内核数据结构偏移数组的首个元素;虚拟机进程监控装置还可以使用Windbg中的命令dt获取进程标识号(UniqueProcessID)、进程名称(ImageFi IeName )、进程链表数据结构(ActiveProcessLinks)和 DirectoryTableBase 在 EPR0CESS 结构体中的偏移量、ApcState在KTHREAD结构体中的偏移量以及Process在ApcState结构体中的偏移量,将 UniqueProcessID、ImageFiIeName、ActiveProcessLinks 和 DirectoryTableBase 在EPR0CESS结构体中的偏移量、ApcState在KTHREAD结构体中的偏移量以及Process在Ap c S t a t e结构体中的偏移量按照一定的顺序依次作为虚拟机的操作系统类型对应的内核数据结构偏移数组的元素。其中,KTHREAD结构体位于Windows内核数据结构处理器控制区(KPCR)结构体内的 PrcbData 变量中的 Current Process 中。UniqueProcessID、ImageFi I eName、ActiveProcessLinks、DirectoryTableBase > ApcState 和 Process 均为支持Windows XP或Windows7等操作系统的虚拟机的进程信息可以包括的参数。
[0030]对应的,当虚拟机进程监控装置根据IDT寄存器的base数值判断得知虚拟机的操作系统类型为Windows XP或Wind0ws7等时,虚拟机进程监控装置可以根据IDT寄存器的base数值查询预设的内核数据结构偏移集合,确定与操作系统类型对应的内核数据结构偏移数组。
[0031]当虚拟机的操作系统类型为Linux虚拟机支持的Debian、Ubuntu> Fedora或CentOS等操作系统时,虚拟机进程监控装置创建内核数据结构偏移集合中的内核数据结构偏移数组的过程具体可以为:虚拟机进程监控装置可以执行x/2x IDTR.base+0x400指令获取0x80号中断描述符,即系统调用表入口地址,将系统调用表入口地址作为虚拟机的操作系统类型对应的内核数据结构偏移数组的首个元素;在虚拟机内部安装内核模块工具,采用内核模块工具来获取进程标识号(pid)、进程名称(comm)、内存结构体(mm_struct)、进程链表数据结构(tasks)和待处理信号(pending_signal)等在task_struct结构体中的偏移量及页目录入口地址Pgd和内存启动代码(start_code )在mm_struct结构体中的偏移量,将 pid、comm、mm_st;ruct、tasks、pending_signal 等结构在 task_struct 结构体中的偏移量及pgd、start_code在mm_struct结构体中的偏移按照一定的顺序依次作为虚拟机的操作系统类型对应的内核数据结构偏移数组的元素。其中,pid、comm、mm_struct、tasks、pending_signal、pgd 和 start_code 均为支持 Debian、Ubuntu、Fedora 或 CentOS 等操作系统的虚拟机的进程信息可以包括的参数。
[0032]对应的,当虚拟机进程监控装置根据IDT寄存器的base数值判断得知虚拟机的操作系统类型为Linux虚拟机支持的Debian、Ubuntu> Fedora或CentOS等操作系统时,虚拟机进程监控装置可以执行x/2x IDTR.base+0x400指令获取0x80号中断描述符,即系统调用表入口地址,根据系统调用表入口地址查询预设的内核数据结构偏移集合,确定与操作系统类型对应的内核数据结构偏移数组。
[0033]103、根据进程链表数据结构确定操作系统类型对应的虚拟机中各进程对应的结构体的虚拟地址。
[0034]其中,根据进程链表数据结构确定操作系统类型对应的虚拟机中各进程对应的结构体的虚拟地址之前,还包括:获取操作系统类型对应的虚拟机中正在运行的进程对应的结构体的虚拟地址;对应的,步骤103具体可以为:根据正在运行的进程对应的结构体的虚拟地址查询进程链表数据结构,确定操作系统类型对应的虚拟机中除正在运行的进程之外的其他进程对应的结构体的虚拟地址。
[0035]具体地,当虚拟机内部进行进程切换时,虚拟机的状态将会存放在虚拟监控器维护的虚拟机控制结构体(Virtual Machine Control Structure, VMCS)中,因此虚拟机进程监控装置可以从虚拟监控器维护的VMCS中获取进程切换之前虚拟机内部正在运行的进程对应的结构体的虚拟地址。
[0036]104、根据各进程对应的结构体的虚拟地址以及各进程的进程信息在各进程对应的结构体中的偏移量获取操作系统类型对应的虚拟机中各进程的进程信息。
[0037]进一步地,步骤104之后,还可以包括:创建与操作系统类型对应的虚拟机对应的数据结构,数据结构包括:操作系统类型,操作系统类型对应的内核数据结构偏移数组,操作系统类型对应的虚拟机的进程链表数据结构。
[0038]例如,虚拟机进程监控装置可以为虚拟机创建对应的数据结构vm_info。若虚拟机的操作系统类型为Windows XP,ffindows7等,虚拟机进程监控装置还需要将FS寄存器在内核态的数值写入vm_info结构体的fs_base变量中。另外,vm_info结构体中还可以包括下一个vm_info结构体指针。
[0039]更进一步地,步骤104中根据各进程对应的结构体的虚拟地址以及各进程的进程信息在各进程对应的结构体中的偏移量确定操作系统类型对应的虚拟机中各进程的进程信息的过程具体可以为,虚拟机进程监控装置可以先根据正在运行的进程对应的结构体的虚拟地址和正在运行的进程的进程信息在该进程对应的结构体中的偏移量确定正在运行的进程的进程信息;然后根据正在运行的进程对应的结构体的虚拟地址查询进程链表数据结构,获取下一进程对应的结构体的虚拟地址,采用与获取正在运行的进程的进程信息的方法,获取下一进程的进程信息。
[0040]例如,对于支持Debian、Ubuntu> Fedora、CentOS等操作系统的Linux虚拟机,虚拟机进程监控装置获取Linux虚拟机的进程信息的具体步骤可以为:当Linux虚拟机企图修改CR3控制寄存器时,Linux虚拟机将执行权限交给虚拟监控器,虚拟机进程监控装置获取ESP寄存器的数值,将ESP寄存器的数值和OxFFFFEOOO进行“与”操作后得到Linux虚拟机中正在运行的进程对应的task_struct结构体的虚拟地址;结合task_struct结构体的虚拟地址和虚拟机对应的vm_info结构体中的内核数据结构偏移数组,读取pid、comm、pending_signal等正在运行的进程的进程信息;以正在运行的进程作为起始进程,读取task_struct结构体中的进程链表数据结构,获取下一个进程的进程信息,依次进行下去,直到下一个进程指向正在运行的进程,从而获取到虚拟机内部的全部进程的进程信息。
[0041]又例如,对于支持Windows XP、Windows7等操作系统的Windows虚拟机,虚拟机进程监控装置获取Windows虚拟机的进程信息的具体步骤可以为:当Windows虚拟机企图修改CR3控制寄存器时,Windows虚拟机将执行权限交给虚拟机进程监控装置,虚拟机进程监控装置根据vm_info结构体中的fs_base获取Windows内核数据结构KPCR的地址;获取KPCR结构体内的PrcbData变量(类型为KPRCB结构体)中Current Process的KTHREAD结构体地址,KTHREAD结构体内的ApcState变量(类型为KAPC_STATE结构体)中的Process指针指向正在运行的进程的EPR0CESS结构体。结合EPR0CESS结构体以及虚拟机对应的vm_info结构体内的内核数据结构偏移数组,读取进程标识号、进程名称等进程信息;以正在运行的进程作为起始进程,读取EPR0CESS结构体中的ActiveProcessLinks进程链表数据结构,获取下一个进程的信息,依次进行下去,直到下一个进程指针指向当前进程,从而获取到虚拟机内部的全部进程的进程信息。
[0042]本实施例中,通过获取虚拟机的操作系统类型,根据虚拟机的操作系统类型确定与操作系统类型对应的内核数据结构偏移数组,根据内核数据结构偏移数组获取虚拟机中各进程的进程信息,从而能够对宿主机上安装有不同操作系统的多个虚拟机同时进行监控,提高了监控效率。
[0043]图2为本发明提供的虚拟机进程监控方法又一个实施例的流程图,如图2所示,在图1所示实施例的基础上,操作系统类型对应的虚拟机中各进程的进程信息可以包括:各进程的进程标识号。为了保证虚拟机进程监控装置能够终止虚拟机中需要终止的进程,步骤104之后,还可以包括:
[0044]105、获取待终止进程的进程标识号。
[0045]其中,待终止进程可以由用户根据操作系统类型对应的虚拟机中各进程的安全性提前进行设置。
[0046]106、根据待终止进程的进程标识号终止待终止进程。
[0047]具体地,步骤106具体可以为:根据待终止进程的进程标识号,获取待终止进程对应的结构体的虚拟地址;根据待终止进程对应的结构体的虚拟地址,在待终止进程对应的结构体中保存终止待终止进程的终止进程指令,以使操作系统类型对应的虚拟机执行所述终止进程指令。
[0048]例如,对于支持Debian、Ubuntu、Fedora、CentOS等操作系统的Linux虚拟机,虚拟机进程监控装置根据待终止进程对应的结构体的虚拟地址,在待终止进程对应的结构体中保存终止待终止进程的终止进程指令的工作流程示意图如图3所示,具体可以为:(I)在启动虚拟机时添加-monitor pty>monitorFile2>&l选项,将QEMU Monitor控制台重定向到monitorFile文件;(2)向monitorFile文件写终止进程命令kill X(X为待终止的进程标识号),利用QMP (QEMU Monitor Protocol)解析终止进程命令后,通过ioctl向虚拟监控器中的进程控制模块发送命令;(3)进程控制模块收到命令后,根据虚拟机的uuid找到虚拟机的vm_info结构体,通过vm_info结构体内的进程链表数据结构找到待终止的进程对应的proc_identity结构体,该结构体存放待终止进程的task_struct结构体的虚拟地址;
(4)结合内核数据结构偏移数组中的pending_signal偏移量和task_struct结构体的虚拟地址,在虚拟监控器层将数值为0x100的SIGKILL信号设置在pending_signal中,并设置thread结构体中的flags的数值为1UL〈〈2,将thread结构体中的preempt_count的数值为0x0。从而使得虚拟机在判断task_struct结构体的pending_signal中携带SIGKILL信号,且thread结构体中的flags的数值为1UL〈〈2, thread结构体中的preempt_count的数值为0x0时,终止待终止进程。
[0049]本实施例中,通过获取虚拟机的操作系统类型,根据虚拟机的操作系统类型确定与操作系统类型对应的内核数据结构偏移数组,根据内核数据结构偏移数组获取虚拟机中各进程的进程信息,并对待终止进程进行终端,从而能够对宿主机上安装有不同操作系统的多个虚拟机同时进行监控,提高了监控效率。
[0050]图4为本发明提供的虚拟机进程监控方法另一个实施例的流程图,如图4所示,在图1所示实施例的基础上,为了保证虚拟机进程监控装置能够在进程对待操作数据块的操作超过待操作数据块的访问权限时终止进程,步骤104之后,还可以包括:
[0051]107、获取操作系统类型对应的虚拟机中正在运行的进程中待操作数据块的块号。
[0052]其中,虚拟机的内存中包括至少一个块组,每个块组中包括至少一个数据块,每个数据块由至少一个扇区组成。虚拟机运行过程中,虚拟机进程监控装置可以对虚拟机内的I/o操作进行实时监控和截获,获取虚拟机中正在运行的进程中待操作数据块的块号。
[0053]108、在预设的受保护数据块集合中存在待操作数据块时,判断正在运行的进程是否为可疑进程。
[0054]其中,可疑进程指的是虚拟机中存在安全问题或者可能存在安全问题的进程,可疑进程可以在获取到虚拟机中全部进程的进程信息后,由虚拟监控器或者用户提前进行设置。
[0055]109、在正在运行的进程为可疑进程时,判断正在运行的进程对待操作数据块的操作是否超过待操作数据块的访问权限。
[0056]虚拟机中各数据块的访问权限可以由虚拟监控器或者用户提前进行设置。例如,当虚拟监控器将待操作的数据块的访问权限设置为只读时,若正在运行的进程对待操作数据块的操作为写操作,则正在运行的进程对待操作数据块的操作超过待操作的数据块的访问权限。又例如,当虚拟监控器将待操作的数据块的访问权限设置为不可进行任何操作时,若正在运行的进程对待操作数据块的操作为读操作或者写操作,则正在运行的进程对待操作数据块的操作超过待操作的数据块的访问权限。
[0057]110、在正在运行的进程对待操作数据块的操作超过待操作数据块的访问权限时,终止正在运行的进程对待操作数据块的操作。
[0058]此处终止正在运行的进程对待操作数据块的操作与实施例2中虚拟机进程监控装置终止待终止进程的过程类似,此处不再进行赘述。
[0059]进一步地,步骤107之前,还可以包括:创建虚拟机对应的配置文件,配置文件中包括:受保护的文件以及受保护的文件的访问权限;确定受保护的文件在操作系统类型对应的虚拟机中对应的数据块;将受保护的文件在操作系统类型对应的虚拟机中对应的数据块确定为受保护数据块;将受保护的文件的访问权限确定为与受保护的文件对应的受保护数据块的访问权限;将受保护数据块和受保护数据块的访问权限保存到受保护数据块集合中。
[0060]其中,配置文件为基于用户配置的特定文件集合。配置文件中特定文件的访问权限分为只读和不可读不可写。前者只允许可疑进程对特定文件进行读操作,后者不允许可疑进程对特定文件的任何操作。虚拟机进程监控装置创建虚拟机对应的配置文件的具体过程可以为:在宿主机内为启用虚拟机进程监控装置的所有虚拟机镜像文件建立目录,在每个目录中创建用户敏感文件的配置文件,用户将需要进行保护的文件写进该配置文件中。另外,在启动虚拟机之前,若用户敏感文件发生了变化,虚拟机进程监控装置还可以修改配置文件,指定本次启动虚拟机时需要进行保护的文件集合。
[0061]进一步地,虚拟机进程监控装置确定受保护的文件在操作系统类型对应的虚拟机中对应的数据块的具体过程可以为:将虚拟机镜像文件挂载在宿主机中,获取虚拟机镜像文件中各文件的文件名对应的inode号。(2)在启动虚拟机时分析虚拟机镜像文件的文件系统的相关信息,包括块大小、inode大小、块组个数等。(3)根据表1中的公式计算与各文
件--对应的inode的地址。其中bg_num为inode所在的块组,inode_offset表示inode
在inode表中的偏移位置。inode_addr表不inode在虚拟机镜像文件中的块号,即inode对应的结构体的地址。(4)获取该文件的inode结构体后,第41~100字节是记录该inode对应的文件所占用的数据块信息。其中,若虚拟机镜像文件的文件系统为EXT2或EXT3文件系统,则inode结构体的第41~88字节为12个直接块指针,即每四个字节表示一个存放数据的数据块号;第89~92字节为“一次间接块指针”,即这四个字节表示一个块号,块号对应的块中的每四个字节表示的才是存放数据的数据块号;以此类推,93~96字节为“二次间接块指针”,97~100字节为“三次间接块指针”。若虚拟机镜像文件的文件系统为EXT4,则需要分析inode结构体中的extent结构体获得文件所占用的所有块号。
[0062]表1inode地址计算公式
[0063]
【权利要求】
1.一种虚拟机进程监控方法,其特征在于,包括: 获取虚拟机的操作系统类型; 根据所述操作系统类型,查询预设的内核数据结构偏移集合,确定与所述操作系统类型对应的内核数据结构偏移数组,所述内核数据结构偏移数组中包括:所述操作系统类型对应的虚拟机的进程链表数据结构以及所述操作系统类型对应的虚拟机中各进程的进程信息在各进程对应的结构体中的偏移量; 根据所述进程链表数据结构确定所述操作系统类型对应的虚拟机中各进程对应的结构体的虚拟地址; 根据所述各进程对应的结构体的虚拟地址以及所述各进程的进程信息在各进程对应的结构体中的偏移量获取所述操作系统类型对应的虚拟机中各进程的进程信息。
2.根据权利要求1所述的方法,其特征在于,所述获取虚拟机的操作系统类型之前,还包括: 创建内核数据结构偏移集合,所述内核数据结构偏移集合中包括宿主机支持的各虚拟机的操作系统类型以及与各虚拟机的操作系统类型对应的内核数据结构偏移数组。
3.根据权利要求2所述的方法,其特征在于,所述根据所述进程链表数据结构确定所述操作系统类型对应的虚拟机中各进程对应的结构体的虚拟地址之前,还包括: 获取所述操作系统类型对应的虚拟机中正在运行的进程对应的结构体的虚拟地址; 所述根据所述进 程链表数据结构确定所述操作系统类型对应的虚拟机中各进程对应的结构体的虚拟地址,包括: 根据所述正在运行的进程对应的结构体的虚拟地址查询所述进程链表数据结构,确定所述操作系统类型对应的虚拟机中除所述正在运行的进程之外的其他进程对应的结构体的虚拟地址。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述各进程对应的结构体的虚拟地址以及所述各进程的进程信息在各进程对应的结构体中的偏移量获取所述操作系统类型对应的虚拟机中各进程的进程信息之后,还包括: 创建与所述操作系统类型对应的虚拟机对应的数据结构,所述数据结构包括:所述操作系统类型,所述操作系统类型对应的内核数据结构偏移数组,所述操作系统类型对应的虚拟机的进程链表数据结构。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述操作系统类型对应的虚拟机中各进程的进程信息包括:各进程的进程标识号; 所述根据所述各进程对应的结构体的虚拟地址以及所述各进程的进程信息在各进程对应的结构体中的偏移量获取所述操作系统类型对应的虚拟机中各进程的进程信息之后,还包括: 获取待终止进程的进程标识号; 根据所述待终止进程的进程标识号终止所述待终止进程。
6.根据权利要求5所述的方法,其特征在于,所述根据所述待终止进程的进程标识号终止所述待终止进程,包括: 根据所述待终止进程的进程标识号,获取所述待终止进程对应的结构体的虚拟地址; 根据所述待终止进程对应的结构体的虚拟地址,在所述待终止进程对应的结构体中保存终止所述待终止进程的终止进程指令,以使所述操作系统类型对应的虚拟机执行所述终止进程指令。
7.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述各进程对应的结构体的虚拟地址以及所述各进程的进程信息在各进程对应的结构体中的偏移量获取所述操作系统类型对应的虚拟机中各进程的进程信息之后,还包括: 获取所述操作系统类型对应的虚拟机中正在运行的进程中待操作数据块的块号;在预设的受保护数据块集合中存在所述待操作数据块时,判断所述正在运行的进程是否为可疑进程; 在所述正在运行的进程为可疑进程时,判断所述正在运行的进程对所述待操作数据块的操作是否超过所述待操作数据块的访问权限; 在所述正在运行的进程对所述待操作数据块的操作超过所述待操作数据块的访问权限时,终止所述正在运行的进程对所述待操作数据块的操作。
8.根据权利要求7所述的方法,其特征在于,所述获取所述操作系统类型对应的虚拟机中正在运行的进程中待操作数据块的块号之前,还包括: 创建所述虚拟机对应的配置文件,所述配置文件中包括:受保护的文件以及所述受保护的文件的访问权限; 确定所述受保护的文件在所述操作系统类型对应的虚拟机中对应的数据块; 将所述受保护的文件在所述操作系统类型对应的虚拟机中对应的数据块确定为受保护数据块; 将所述受保护 的文件的访问权限确定为与所述受保护的文件对应的受保护数据块的访问权限; 将所述受保护数据块和所述受保护数据块的访问权限保存到所述受保护数据块集合中。
9.一种虚拟机进程监控装置,其特征在于,包括: 获取模块,用于获取虚拟机的操作系统类型; 确定模块,用于根据所述操作系统类型,查询预设的内核数据结构偏移集合,确定与所述操作系统类型对应的内核数据结构偏移数组,所述内核数据结构偏移数组中包括:所述操作系统类型对应的虚拟机的进程链表数据结构以及所述操作系统类型对应的虚拟机中各进程的进程信息在各进程对应的结构体中的偏移量; 所述确定模块还用于,根据所述进程链表数据结构确定所述操作系统类型对应的虚拟机中各进程对应的结构体的虚拟地址; 所述获取模块还用于,根据所述各进程对应的结构体的虚拟地址以及所述各进程的进程信息在各进程对应的结构体中的偏移量获取所述操作系统类型对应的虚拟机中各进程的进程信息。
10.根据权利要求9所述的装置,其特征在于,还包括:创建模块; 所述创建模块用于,在所述获取模块获取虚拟机的操作系统类型之前,创建内核数据结构偏移集合,所述内核数据结构偏移集合中包括宿主机支持的各虚拟机的操作系统类型以及与各虚拟机的操作系统类型对应的内核数据结构偏移数组。
【文档编号】G06F11/30GK103544090SQ201310485094
【公开日】2014年1月29日 申请日期:2013年10月16日 优先权日:2013年10月16日
【发明者】李博, 李楠, 崔磊, 李建欣, 邰振赢 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1