一种实现虚拟机自省的方法和装置的制造方法_2

文档序号:8430574阅读:来源:国知局
加了虚拟机的安全性。
【附图说明】
[0044]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0045]图1为本实施例提供的一种实现虚拟机自省的方法的流程图;
[0046]图2为本实施例提供的另一种实现虚拟机自省的方法的流程图;
[0047]图3为本实施例提供的一种实现虚拟机自省的装置的虚拟装置结构示意图;
[0048]图4为本实施例提供的另一种实现虚拟机自省的装置的虚拟装置结构示意图;
[0049]图5为本实施例提供的一种实现虚拟机自省的装置的实体装置结构示意图。
【具体实施方式】
[0050]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0051]近年来,随着个人电脑、移动计算设备,以及云计算的普及,计算机安全越来越成为人们关注的焦点。人们在各种计算设备中保存了大量关键数据,包括电子邮件、私人照片、银行账号与密码、社交网络账号等等,这使得计算设备成为了黑客的攻击目标。各种恶意软件,如病毒、木马、间谍软件、欺诈广告等,数量越来越大,威胁越来越强。
[0052]现有技术中,可以通过VMI (Virtual Machine Introspect1n,虚拟机自省)技术来实现对虚拟机的安全保护。但是,在通过VMI实现对虚拟机的安全保护过程中,在VMI系统对虚拟机中的内存数据进行安全检查的同时,虚拟机可能也正在对待检查内存数据进行访问,此时,若VMI系统在获取完成部分待检查内存数据后,虚拟机对本地的与所述部分待检查内存数据对应的内存数据进行了修改,则导致VMI系统获取到的内存数据,与虚拟机本地的内存数据不一致,进而导致VMI系统无法准确的对虚拟机中的内存数据进行安全检查。为了解决该问题,下面提供一些实施例进行具体说明。
[0053]本实施例提供一种实现虚拟机自省的方法,如图1所示,可以包括:
[0054]101、确定虚拟机中的待检查数据。
[0055]其中,待检查数据可以为虚拟机的内存中的内存数据。
[0056]102、开始读取该待检查数据,保存已读取的待检查数据的副本,并将已读取的待检查数据的存储地址存储到硬件事务内存中,以使得硬件事务内存能够根据该存储地址对已读取的待检查数据进行监测。
[0057]在读取该待检查数据时,已读取的待检查数据在虚拟机中的存储地址会被自动存储到硬件事务内存中,另外,还可以将已读取的待检查数据的副本存储到硬件事务内存中。
[0058]硬件事务内存可以对存储于本地的存储地址对应的数据进行监控,可以监控这些数据是否被修改等,在本实施例中,由于硬件事务内存中存储有已读取的待检查数据的存储地址,因此硬件事务内存可以监控已读取的待检查数据是否被修改。
[0059]103、当监测到已读取的待检查数据被修改时,则停止读取该待检查数据并删除该待检查数据的副本。
[0060]在读取的过程中,若已读取的待检查数据被修改,则说明该待检查数据的副本中的数据与虚拟机中的待检查数据不一致,由于,在数据不一致的情况下无法对该待检查数据的副本进行正确的安全检查,因此,在读取待检查数据的过程中,若硬件事务内存监测到已读取的待检查数据被修改,则不对该待检查数据的副本进行安全检查,并停止读取待检查数据并删除该待检查数据的副本。
[0061]值得说明的是,本实施例提供的数据不一致是指已读取的待检查数据与虚拟机中的待检查数据不一致,之后不再赘述。
[0062]104、当读取待检查数据完毕并且未监测到已读取的待检查数据被修改时,则对该待检查数据的副本进行安全检查。
[0063]在读取待检查数据的过程中,若已读取的待检查数据未被修改,则说明该待检查数据的副本中的数据与虚拟机中的待检查数据一致,此时,可以对该待检查数据的副本进行安全检查。
[0064]本实施例中,在读取待检查数据的过程中可以通过硬件事务内存监控已读取的待检查数据是否被修改,若在读取该待检查数据的过程中,未监测到已读取的待检查数据中存在被修改数据,则说明所述副本与虚拟机中的待检查数据一致,此时,可以对该待检查数据的副本进行安全检查,若在读取待检查数据的过程中,监测到已读取的待检查数据中存在被修改数据,则停止读取待检查数据并删除该待检查数据的副本,即不对待检查数据进行安全检查,这样,增加安全检查的准确性。
[0065]本实施例提供另一种实现虚拟机自省的方法,该方法是对图1所示的方法的进一步扩展和优化,如图2所示,可以包括:
[0066]201、确定虚拟机中的待检查数据。
[0067]202、判断锁数据对应的锁是否处于释放状态。若所述锁处于所述释放状态,则执行步骤203,若所述锁未处于所述释放状态,则执行步骤202。
[0068]其中,该释放状态可以用于表征待检查数据当前未被访问。
[0069]为了避免虚拟机中的待检查数据同时被多个进程访问,因此设置了锁,锁可以通过锁数据的形式存储于待检查虚拟机中。待检查数据的锁的状态可以用于表征该待检查数据是否正在被虚拟机系统中的进程访问,当没有虚拟机系统中的进程访问所述待检查数据时,锁的状态为释放状态,当有虚拟机系统中的进程访问该待检查数据时,锁的状态为加锁状态,在虚拟机系统中的某一进程访问待检查数据之前,首先确定锁的状态,若所述锁处于释放状态,则可以对所述待检查数据进行访问,若所述锁处于加锁状态,则不能对所述待检查数据进行访问。
[0070]若所述锁当前处于释放状态,则当虚拟机系统中的某一进程访问所述待检查数据时,需要获取所述锁,在该进程获取所述锁之后,所述锁的状态便会从释放状态切换为加锁状态,当所述某进程访问所述待检查数据结束后,所述某进程可以释放所述锁,所述锁的状态便可以从加锁状态切换为释放状态,该状态变化可以通过存储于虚拟机中的与所述锁对应的锁数据的数值变化体现。
[0071]若VMI系统监测到所述锁当前处于加锁状态,则说明当前虚拟机系统中的某进程正在访问所述待检查数据,若此时VMI系统读取所述待检查数据,由于某一进程可能会对待检查数据进行修改,因此会出现虚拟机系统读取的数据与所述待检查数据不一致的情况,进而导致无法准确的对虚拟机进行安全检查,由此,若VMI系统监测到所述锁当前处于加锁状态,则可以不对虚拟机进行安全检查,而是继续监测所述锁的状态,直到检测到所述锁的状态切换为释放状态时,即可以执行安全检查。
[0072]作为本实施例的一种实施方式,VMI系统可以通过所述锁数据的数值判断锁数据对应的锁是否处于释放状态。
[0073]本实施例对所述锁的原理及实现方式不作限定,为现有技术,且为本领域技术人员熟知的技术,在此不再赘述。
[0074]203、开始读取该待检查数据,保存已读取的待检查数据的副本,并将已读取的待检查数据的存储地址存储到硬件事务内存中。
[0075]若VMI系统检查到所述锁当前的状态为释放状态,则说明不存在任何进程访问该待检查数据,此时,VMI系统可以读取该待检查数据,并将已读取的待检查数据的存储地址存储到硬件事务内存中,并保存已读取的待检查数据的副本。
[0076]硬件事务内存可以是设置于VMM中的,硬件事务内存中可以包括读取集合,该读取集合可以用于存储所述VMI系统已读取的数据的存储地址。本实施例中,在所述VMI系统读取所述待检查数据的过程中,VMI系统已读取的待检查数据在虚拟机中的存储地址便被自动存储于所述读取集合中,另外,在VMI系统读取待检查数据的过程中,VMI系统还可以将已读取的待检查数据的副本存储于硬件事务内存中。
[0077]值得说明的是,本实施例提供的所述待检查数据的存储地址均是指待检查数据在虚拟机中的存储地址,在后续内容中不再赘述。
[0078]204、通过硬件事务内存监测已读取的待检查数据是否被修改。若在读取的过程中未监测到已读取的待检查数据被修改,则执行步骤205,若在读取的过程中监测到已读取的待检查数据被修改,则执行步骤207。
[0079]硬件事务内存可以对读取集合中的存储地址对应的数据进行监测,具体可以是监测这些数据是否被修改过。
[0080]作为本实施例的一种实施方式,在VMI系统读取所述待检查数据的过程中,可以自动将已读取的待检查数据的存储地址存储于所述读取集合中,在此之后,由于读取集合中存储有已读取的待检查数据的存储地址,因此硬件事务内存可以监测已读取的待检查数据是否被修改。
[0081 ] 进一步的,VMI系统还可以读取待检查数据的锁数据,所述锁数据可以存储于所述虚拟机的内存中,这样,在VMI系统在读取完成所述锁数据后,所述锁数据在虚拟机中的存储地址便被存储到读取集合中,且该待检查数据的副本中页包括所述锁数据,硬件事务内存还对所述锁数据进行监测,由于,在VMI系统开始读取锁数据时,所述锁数据是处于释放状态的,因此,
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1