1.一种虚拟机内存的漏洞修复方法,其特征在于,包括:
确定漏洞代码所在的第一内存区域;
将漏洞补丁加载到第二内存区域中,以对所述第二内存区域中的漏洞代码进行漏洞修复;所述第二内存区域为与所述第一内存区域对应的影子内存区域;所述第二内存区域中保存有所述漏洞代码;
在所述第二内存区域中的漏洞代码修复完成之后,控制所述虚拟机的运行进程从运行第一代码变为运行第二代码;所述第一代码为第一内存区域中的代码,所述第二代码为经过漏洞修复的所述第二内存区域中的代码。
2.根据权利要求1所述的方法,其特征在于,所述控制所述虚拟机的运行进程从运行第一代码变为运行第二代码的步骤,包括:
获取所述运行进程的控制寄存器页表;
将所述控制寄存器页表中的第一分页挂载到第二分页中;所述第一分页与所述第一内存区域对应,所述第二分页与所述第二内存区域对应。
3.根据权利要求2所述的方法,其特征在于,所述将所述控制寄存器页表中的第一分页挂载到第二分页中的步骤,包括:
锁定所述第一分页;
保存虚拟机cpu的上下文信息;
根据扩展页表技术,将所述运行程序中所述第一分页的地址替换为所述第二分页的地址;
解除所述第一分页的锁定。
4.根据权利要求1所述的方法,其特征在于,所述将漏洞补丁加载到第二内存区域中的步骤之前,还包括:
确定所述第一内存区域的大小;
在外部内存中创建与所述第一内存区域的大小对应的第二内存区域;所述外部内存为虚拟机主内存以外的内存区域;
将所述第一内存区域中的目标代码拷贝到所述第二内存区域中;其中,所述目标代码中包含有所述漏洞代码。
5.根据权利要求4所述的方法,其特征在于,所述在外部内存中创建与所述第一内存区域的大小对应的第二内存区域的步骤之后,还包括:
在所述外部内存中创建与所述第一内存区域的大小对应的备份内存区域;
将所述目标代码拷贝到所述备份内存区域中;拷贝到所述备份内存区域中的目标代码用于对所述第二内存区域进行备份。
6.根据权利要求5所述的方法,其特征在于,所述控制所述虚拟机的运行进程从运行第一代码变为运行第二代码的步骤之后,还包括:
监控所述运行进程对所述第二代码的第一运行状态;
若根据所述第一运行状态确定所述第二代码出现异常,控制所述运行进程从运行第二代码变为运行第三代码;所述第三代码为所述备份内存区域中的代码。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述控制所述虚拟机的运行进程从运行第一代码变为运行第二代码的步骤,还包括:
创建测试进程;
控制所述测试进程运行所述第二代码;
获取得到测试进程对所述第二代码的第二运行状态;
若根据所述第二运行状态确定漏洞修复成功,控制所述运行进程从运行第一代码变为运行第二代码。
8.一种虚拟机内存的漏洞修复装置,其特征在于,包括:
区域确定模块,用于确定漏洞代码所在的第一内存区域;
漏洞修复模块,用于将漏洞补丁加载到第二内存区域中,以对所述第二内存区域中的漏洞代码进行漏洞修复;所述第二内存区域为与所述第一内存区域对应的影子内存区域;所述第二内存区域中保存有所述漏洞代码;
进程控制模块,用于在所述第二内存区域中的漏洞代码修复完成之后,控制所述虚拟机的运行进程从运行第一代码变为运行第二代码;所述第一代码为第一内存区域中的代码,所述第二代码为经过漏洞修复的所述第二内存区域中的代码。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法的步骤。