虚拟系统的检测方法和相关软件运行方法以及相关装置的制造方法
【专利摘要】本发明实施例公开了一种虚拟系统的检测方法和相关软件运行方法以及相关装置,其中,虚拟系统的检测方法,包括:获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数,调用所述验证函数序列中的验证函数;判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配;若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。采用本发明实施例提供的技术方案提高了对虚拟系统进行检测时的准确性。
【专利说明】
虚拟系统的检测方法和相关软件运行方法以及相关装置
技术领域
[0001]本发明涉及计算机技术领域,尤其涉及一种虚拟系统的检测方法和相关软件运行方法以及相关装置。
【背景技术】
[0002]虚拟系统是在终端的操作系统(终端的操作系统以下称为:真机系统)上通过vmware、vBox等虚拟系统软件安装的系统。虚拟系统是操作系统的虚拟镜像,相对于真机系统,虚拟系统有利于更有效、更灵活的利用计算机资源,能够降低成本、节省开支。因此,虚拟系统在现有技术中得到广泛的应用。比如,通过在虚拟系统上测试软件的各项功能,有利于软件快速开发和发布。
[0003]杀毒软件等安全软件可以清除终端中对终端的运行或者性能存在威胁的软件(比如,病毒软件、特洛伊木马、以及恶意软件等,这些软件以下统称为:恶意软件)。因此,安全软件与恶意软件之间存在技术对抗,目前,安全软件开发完成后一般会在虚拟系统上运行,若没有问题,就发布到真机系统上。有的恶意软件为了避免被杀毒软件侦测到,会在虚拟系统和真机系统中采用不同的技术对抗策略,比如在虚拟系统上关闭技术对抗在真机系统中才开启技术对抗,这样会导致杀毒软件无法及时有效地对恶意软件进行处理。为了节省终端资源、以及有效地对恶意软件进行处理,安全软件有必要在虚拟系统和真机系统中采取不同的对抗策略,根据系统的不同对调用的资源及启动的功能做出调整,为此,准确地判断出当前的操作系统是否为虚拟系统至关重要。
[0004]虚拟系统启动时,在虚拟系统的系统进程中包括虚拟系统的进程名,利用这一特性,现有技术通过枚举系统进程的进程名的方式来判断当前系统是否为虚拟系统,如果枚举得到的进程名中包括虚拟系统列表中任一虚拟系统对应的进程名,则判定当前系统是虚拟系统;如果枚举得到的进程名中不包括虚拟系统列表中的任一虚拟系统对应的进程名,则判定当前系统是真机系统。比如,设置虚拟系统列表中保存两种虚拟系统对应的进程名vmware.exe和vBox.exe,若枚举得到的进程名中包括vmware.exe和vBox.exe中的至少一个,贝lJ判定当前系统为虚拟系统;若枚举得到的进程名中不包括vmware.exe和vBox.exe中的任意一个,则判定当前系统是真机系统。
[0005]本发明的发明人在研究和实践过程中发现,在实际运行时,若出现启动项被删除、或者虚拟系统对应的进程名被清理软件删除、或者虚拟系统在启动的过程中出现故障等情况发生时,都会导致枚举得到的进程名中不包括虚拟系统的进程名,这样可能导致检测当前的系统是否为虚拟系统的检测结果错误。
【发明内容】
[0006]本发明实施例提供了一种虚拟系统的检测方法和相关软件运行方法以及相关装置,可以解决如何提高虚拟系统检测的准确性的问题。
[0007]本发明实施例第一方面提供一种虚拟系统的检测方法,包括:
[0008]获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数,
[0009]调用所述验证函数序列中的验证函数;
[0010]判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配;
[0011]若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0012]结合第一方面,在第一方面的第一种可能的实施方式中,在所述获取预设的验证函数序列之前,所述方法还包括:
[0013]获取当前系统的系统进程;
[0014]判断获取的所述当前系统的系统进程中是否包括预设的虚拟系统的系统进程;
[0015]若是,则判定当前系统为虚拟系统;若否,则执行所述获取预设的验证函数序列。
[0016]结合第一方面,在第一方面的第二种可能的实施方式中,若所述验证函数序列中包括两个以上验证函数与预设的某个虚拟系统软件相对应,则所述“若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统”,包括:
[0017]所有与所述某个虚拟系统软件对应的验证函数序列的返回值与预设的返回值匹配时,才判定当前系统为虚拟系统。
[0018]结合第一方面,在第一方面的第三种可能的实施方式中,所述验证函数序列包括:与Vmware虚拟系统对应的如下函数中的至少一个:特权指令函数、中断描述表监测函数、以及信息处理器获取函数。
[0019]结合第一方面,在第一方面的第四种可能的实施方式中,所述验证函数序列包括:与vBox虚拟系统对应如下函数中的至少一个:动态链接库加载函数和驱动对象打开函数。
[0020 ]本发明实施例第二方面提供一种安全软件的运行方法,包括:
[0021 ]本发明实施例提供的任意一种虚拟系统的检测方法;
[0022]在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行。
[0023]本发明实施例第三方面提供一种虚拟系统的检测装置,包括:
[0024]第一获取单元,用于获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数;
[0025]调用单元,用于调用所述验证函数序列中的验证函数;
[0026]第一判断单元,用于判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配;
[0027]第一处理单元,用于若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0028]结合第三方面,在第三方面的第一种可能的实施方式中,所述装置还包括:
[0029]第二获取单元,用于在所述第一获取单元获取预设的验证函数序列之前,获取当前系统的系统进程;
[0030]第二判断单元,用于判断所述第二获取单元获取的当前系统的系统进程中是否包括预设的虚拟系统的系统进程;
[0031 ]第二处理单元,用于若所述第二判断单元的判断结果为是时,判定当前系统为虚拟系统;以及用于若所述第二判断单元的判断结果为否时,执行所述第一获取单元获取预设的验证函数序列。
[0032]结合第三方面,在第三方面的第二种可能的实施方式中,所述第一处理单元,具体用于:若所述验证函数序列中包括两个以上验证函数与预设的某个虚拟系统软件相对应,则若所有与所述某个虚拟系统软件对应的验证函数序列的返回值与预设的返回值匹配,判定当前系统为虚拟系统。
[0033]结合第三方面,在第三方面的第三种可能的实施方式中,所述验证函数序列包括:与Vmware虚拟系统对应的如下函数中的至少一个:特权指令函数、中断描述表监测函数、以及信息处理器获取函数。
[0034]结合第三方面,在第三方面的第四种可能的实施方式中,所述验证函数序列包括:与vBox虚拟系统对应如下函数中的至少一个:动态链接库加载函数和驱动对象打开函数。
[0035]本发明实施例第四方面提供一种安全软件的运行装置,包括:
[0036]本发明实施例提供的任意一种虚拟系统的检测装置;
[0037]运行单元,用于在所述虚拟系统的检测装置的检测结果为当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行。
[0038]本发明实施例第五方面提供一种电子设备,包括:处理器、存储器、通信接口和总线;
[0039]所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通
?目;
[0040]所述存储器存储可执行程序代码;
[0041]所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种虚拟系统的检测方法;其中,所述虚拟系统的检测方法包括:
[0042]获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数,
[0043]调用所述验证函数序列中的验证函数;
[0044]判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配;
[0045]若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0046]本发明实施例第六方面提供一种电子设备,包括:处理器、存储器、通信接口和总线;
[0047]所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通
?目;
[0048]所述存储器存储可执行程序代码;
[0049]所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种安全软件的运行方法,包括:
[0050]本发明实施例提供的任意一种虚拟系统的检测方法;以及,
[0051]在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行。
[0052]本发明实施例第七方面提供一种存储介质,其中,该存储介质用于存储应用程序,所述应用程序用于在运行时执行本发明实施例所述的一种虚拟系统的检测方法。
[0053]本发明实施例第八方面提供一种存储介质,其中,该存储介质用于存储应用程序,所述应用程序用于在运行时执行本发明实施例所述的一种安全软件的运行方法。
[0054]本发明实施例第九方面提供一种应用程序,其中,该应用程序用于在运行时执行本发明实施例所述的一种虚拟系统的检测方法。
[0055]本发明实施例第十方面提供一种应用程序,其中,该应用程序用于在运行时执行本发明实施例所述的一种安全软件的运行方法。
[0056]可以看出,采用本发明实施例提供的技术方案,利用被调用的验证函数的返回值与验证函数预设的返回值是否匹配来确定当前系统是否为虚拟系统。若当前系统为虚拟系统,验证函数的返回值是固定的,即使虚拟系统的系统进程被删除了,也不影响使用验证函数来检测当前系统是否为虚拟系统的结果。因此采用本发明实施例提供的技术方案提高了对虚拟系统进行检测时的准确性。
【附图说明】
[0057]为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0058]图1是本发明的实施例提供的一种虚拟系统的检测方法的流程示意图;
[0059]图2是本发明的另一实施例提供的一种虚拟系统的检测方法的流程示意图;
[0060]图3是本发明的实施例提供的一种安全软件的运行方法的流程示意图;
[0061]图4是本发明的另一实施例提供的一种安全软件的运行方法的流程示意图;
[0062]图5是本发明的实施例提供的一种虚拟系统的检测装置的结构示意图;
[0063]图6是本发明的另一实施例提供的一种虚拟系统的检测装置的结构示意图;
[0064]图7是本发明的实施例提供的一种安全软件的运行装置的结构示意图;
[0065]图8是本发明的另一实施例提供的一种安全软件的运行装置的结构示意图;
[0066]图9是本发明的一实施例提供的一种电子设备的结构示意图;
[0067]图10是本发明的另一实施例提供的一种电子设备的结构示意图。
【具体实施方式】
[0068]本发明实施例提供了一种虚拟系统的检测方法和相关软件运行方法以及相关装置,能够提尚虚拟系统检测的准确性。
[0069]为了使本技术领域的技术人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0070]以下分别进行详细说明。
[0071]本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0072]本发明一种虚拟系统的检测方法,可以包括:获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数,调用所述验证函数序列中的验证函数;判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配;若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0073]请参阅图1,图1是本发明的一个实施例提供的一种虚拟系统的检测方法的流程示意图,如图1所示,本发明的一个实施例提供的一种虚拟系统的检测方法可以包括以下内容:
[0074]101、获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数。
[0075]其中,验证函数可以是与多个虚拟系统相关的函数,通过该函数的返回值与预设返回值之间的匹配关系,可以判断当前系统是否为虚拟系统。当然验证函数也可以是与某个特定的虚拟系统相关的函数,通过该函数的返回值与预设返回值之间的匹配关系,可以判断当前系统是否为所述特定的虚拟系统。
[0076]可选的,在本发明一些可能的实施方式中,若虚拟系统为Vmware虚拟系统,则验证函数可以为如下函数中的至少一个:特权指令函数、中断描述表检测函数、以及信息处理器获取函数。
[0077]其中,特权指令函数是具有特殊权限的特权指令,具体地,所述特权指令是指Vmvare虚拟系统特有的指令,特权指令一般不提供给用户使用,只用于操作系统或者其他系统软件,主要用于系统资源的分配和管理,包括改变系统工作方式、检测用户的访问权限、修改虚拟存储器管理的。举例来说,in指令就是一个特权指令,Vmvare虚拟系统使用in指令与真机系统交互,具体地,可以使用如下汇编代码来使用in指令,__asm mov eax,’VMXh ’,in eax,edx,即:先把’ VMXh’保存进eax中,调用in eax,edx时,如果存在Vmvare虚拟系统,就会和真机交互,交互值会保存到edx中,判断edx是否为之前保存的’VMXh’,是则是虚拟系统。
[0078]其中,中断描述表检测函数是利用操作系统的中断描述表来进行检测的函数,当在真机系统上安装了虚拟系统时,终端描述表的值需要不停地切换,具体地,使用中断描述表检测当前系统是否为虚拟系统时,可以使用如下汇编代码来判断,__asm sidt m,若m[5]>0xd0,则当前系统为虚拟系统。
[0079]其中,信息处理器获取函数是指:获取eax第31位数据的函数,具体地,可以使用CPUID获取eax的第31位的值,eax第31位在真机系统中是保留的没有使用,Vmware虚拟系统则使用了这一位,所以可以将eax的第31位作为标志位,可以使用如下汇编代码__0口11 i d获取eax的第31位数据,若有值则为Vmware虚拟系统。
[0080]可选的,在本发明一些可能的实施方式中,若虚拟系统为vBox虚拟系统,则验证函数可以为如下函数中的至少一个:动态链接库加载函数和驱动对象打开函数。[0081 ] 其中,动态链接库加载函数是指调用LoadLibrary函数加载名称为VBoxHook.DLL的动态链接库,因为VBoxHook.DLL动态链接库是vBox虚拟系统在SYSMTE32目录下特有的动态链接库文件,所以若加载成功,则当前系统为虚拟系统。
[0082]其中,驱动对象打开函数是指打开vBox虚拟系统特有的驱动对象的函数,若打开成功,则当前系统为V B ο X虚拟系统。具体地,V B ο X虚拟系统具有一个特有的名称为VBoxMiniRdrDN的驱动对象,若使用函数::CreateFiIeA(〃\\\\.\\VBoxMiniRdrDN〃)iSO开驱动对象的操作,若打开成功,则当前系统为虚拟系统。
[0083]102、调用所述验证函数序列中的验证函数。
[0084]举例来说,若验证函数序列中的验证函数是与虚拟系统Vmware对应的:特权指令函数、中断描述表检测函数、和信息处理器获取函数,则可以依次调用这3个函数。
[0085]103、判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配。
[0086]举例来说,当调用与Vmvare虚拟系统对应的特权指令函数时,若执行如下汇编代码,—asm mov eax, 'VMXh' ,in eax,edx,判断edx的值与预设的返回值VMXh是否相同,如果相同,则被调用的验证函数的返回值与验证函数的预设的返回值匹配;如果不相同,则被调用的验证函数的返回值与验证函数的预设的返回值不匹配。
[0087]举例来说,当调用与Vmvare虚拟系统对应的中断描述表检测函数时,若执行如下汇编代码,—asm sidt m,判断m[5]的值是否大于OxdO,若大于,则被调用的验证函数的返回值与验证函数的预设的返回值匹配;若不大于,则被调用的验证函数的返回值与验证函数的预设的返回值不匹配。
[0088]104、若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0089]可选的,在本发明一些可能的实施方式中,可以设定只要有一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统,举例来说,若验证函数包括与Vmware虚拟系统系统对应的特权指令函数、中断描述表检测函数、以及信息处理器获取函数。可以设定只要有一个验证函数,比如特权指令函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0090]可选的,在本发明一些可能的实施方式中,为了提高准确性可以设定需要两个或者两个以上的验证函数的返回值与预设的返回值匹配,才判定当前系统为虚拟系统。举例来说,若验证函数包括与Vmware虚拟系统对应的特权指令函数、中断描述表检测函数、以及信息处理器获取函数。可以设定其中两个或者全部的验证函数的返回值与预设的返回值匹配,才判定当前系统为虚拟系统。
[0091]可以看出,采用本发明实施例提供的技术方案,利用被调用的验证函数的返回值与验证函数预设的返回值是否匹配来确定当前系统是否为虚拟系统。若当前系统为虚拟系统,验证函数的返回值是固定的,即使虚拟系统的系统进程被删除了,也不影响使用验证函数来检测当前系统是否为虚拟系统的结果。因此采用本发明实施例提供的技术方案提高了对虚拟系统进行检测时的准确性。
[0092]请参阅图2,图2是本发明的另一实施例提供的一种虚拟系统的检测方法的流程示意图,如图2所示,本发明的另一实施例提供的一种虚拟系统的检测方法可以包括以下内容:
[0093]201、获取当前系统的系统进程。
[0094]202、判断当前系统的系统进程中是否包括预设的虚拟系统的系统进程。
[0095]若当前系统的系统进程中包括预设的虚拟系统的系统进程,则执行步骤203;若当前系统的系统进程中不包括预设的虚拟系统的系统进程,则执行步骤204。
[0096]203、判定当前系统为虚拟系统。
[0097]204、获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数。
[0098]其中,验证函数可以是与多个虚拟系统相关的函数,通过该函数的返回值与预设返回值之间的匹配关系,可以判断当前系统是否为虚拟系统。当然验证函数也可以是与某个特定的虚拟系统相关的函数,通过该函数的返回值与预设返回值之间的匹配关系,可以判断当前系统是否为所述特定的虚拟系统。
[0099]可选的,在本发明一些可能的实施方式中,若虚拟系统为Vmware虚拟系统,则验证函数可以为如下函数中的至少一个:特权指令函数、中断描述表检测函数、以及信息处理器获取函数。
[0100]其中,特权指令函数是具有特殊权限的特权指令,具体地,所述特权指令是指Vmvare虚拟系统特有的指令,特权指令一般不提供给用户使用,只用于操作系统或者其他系统软件,主要用于系统资源的分配和管理,包括改变系统工作方式、检测用户的访问权限、修改虚拟存储器管理的。举例来说,in指令就是一个特权指令,Vmvare虚拟系统使用in指令与真机系统交互,具体地,可以使用如下汇编代码来使用in指令,__asm mov eax,'VMXh’,in eax,edx,即:先把’VMXh’保存进eax中,调用in eax,edx时,如果存在Vmvare虚拟系统,就会和真机交互,交互值会保存到edx中,判断edx是否为之前保存的’VMXh’,是则是虚拟系统。
[0101]其中,中断描述表检测函数是利用操作系统的中断描述表来进行检测的函数,当在真机系统上安装了虚拟系统时,终端描述表的值需要不停地切换,具体地,使用中断描述表检测当前系统是否为虚拟系统时,可以使用如下汇编代码来判断,__asm sidt m,若m[5]>0xd0,则当前系统为虚拟系统。
[0102]其中,信息处理器获取函数是指:获取eax第31位数据的函数,具体地,可以使用CPUID获取eax的第31位的值,eax第31位在真机系统中是保留的没有使用,Vmware虚拟系统则使用了这一位,所以可以将eax的第31位作为标志位,可以使用如下汇编代码__0口11 i d获取eax的第31位数据,若有值则为Vmware虚拟系统。
[0103]可选的,在本发明一些可能的实施方式中,若虚拟系统为vBox虚拟系统,则验证函数可以为如下函数中的至少一个:动态链接库加载函数和驱动对象打开函数。
[0104]其中,动态链接库加载函数是指调用LoadLibrary函数加载名称为VBoxHook.DLL的动态链接库,因为VBoxHook.DLL动态链接库是vBox虚拟系统在SYSMTE32目录下特有的动态链接库文件,所以若加载成功,则当前系统为虚拟系统。
[0105]其中,驱动对象打开函数是指打开vBox虚拟系统特有的驱动对象的函数,若打开成功,则当前系统为V B ο X虚拟系统。具体地,V B ο X虚拟系统具有一个特有的名称为VBoxMiniRdrDN的驱动对象,若使用函数::CreateFiIeA(〃\\\\.\\VBoxMiniRdrDN〃)iSO开驱动对象的操作,若打开成功,则当前系统为虚拟系统。
[0106]205、调用所述验证函数序列中的验证函数。
[0107]举例来说,若验证函数序列中的验证函数是与虚拟系统Vmware对应的:特权指令函数、中断描述表检测函数、和信息处理器获取函数,则可以依次调用这3个函数。
[0108]206、判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配。
[0109]举例来说,当调用与Vmvare虚拟系统对应的特权指令函数时,若执行如下汇编代码,—asm mov eax, 'VMXh' ,in eax,edx,判断edx的值与预设的返回值VMXh是否相同,如果相同,则被调用的验证函数的返回值与验证函数的预设的返回值匹配;如果不相同,则被调用的验证函数的返回值与验证函数的预设的返回值不匹配。
[0110]举例来说,当调用与Vmvare虚拟系统对应的中断描述表检测函数时,若执行如下汇编代码,—a sm sidt m,判断m [ 5 ]的值是否大于OxdO,若大于,则被调用的验证函数的返回值与验证函数的预设的返回值匹配;若不大于,则被调用的验证函数的返回值与验证函数的预设的返回值不匹配。
[0111]207、若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0112]可选的,在本发明一些可能的实施方式中,可以设定只要有一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统,举例来说,若验证函数包括与Vmware虚拟系统系统对应的特权指令函数、中断描述表检测函数、以及信息处理器获取函数。可以设定只要有一个验证函数,比如特权指令函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0113]可选的,在本发明一些可能的实施方式中,为了提高准确性可以设定需要两个或者两个以上的验证函数的返回值与预设的返回值匹配,才判定当前系统为虚拟系统。举例来说,若验证函数包括与Vmware虚拟系统对应的特权指令函数、中断描述表检测函数、以及信息处理器获取函数。可以设定其中两个或者全部的验证函数的返回值与预设的返回值匹配,才判定当前系统为虚拟系统。
[0114]需要说明的是,在虚拟系统实际运行时,虚拟系统对应的系统进程可能被其他的应用删除、或者虚拟系统在启动的过程中可能出现故障而使得系统进程中不包括与虚拟系统对应的进程名。这时如果判定当前系统不是虚拟系统,则不准确。本发明实施例在判断当前系统的系统进程中不包括预设的虚拟系统的系统进程的情况下,进一步地通过验证函数来检测当前系统是否为虚拟系统,提高了检测的准确性。
[0115]请参阅图3,图3为本发明的一个实施例提供的一种安全软件的运行方法的流程示意图,如图3所示,本发明的一实施例提供的一种安全软件的运行方法可以包括以下内容:
[0116]301、获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数,
[0117]302、调用所述验证函数序列中的验证函数;
[0118]303、判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配;
[0119]304、若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0120]需要说明的是,301至304的实现过程可以参照图1所示实施例中101至104的相关描述,此处不再赘述。
[0121]305、在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行。
[0122]可以看出,采用本发明实施例提供的技术方案,利用被调用的验证函数的返回值与验证函数预设的返回值是否匹配来确定当前系统是否为虚拟系统,提高了对虚拟系统进行检测时的准确性。另外,在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行,有利于提升系统资源的利用率。
[0123]请参阅图4,图4为本发明的另一个实施例提供的一种安全软件的运行方法的流程示意图,如图4所示,本发明的另一实施例提供的一种安全软件的运行方法可以包括以下内容:
[0124]401、获取当前系统的系统进程。
[0125]402、判断当前系统的系统进程中是否包括预设的虚拟系统的系统进程。
[0126]若当前系统的系统进程中包括预设的虚拟系统的系统进程,则执行步骤203;若当前系统的系统进程中不包括预设的虚拟系统的系统进程,则执行步骤204。
[0127]403、判定当前系统为虚拟系统。
[0128]404、获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数。
[0129]405、调用所述验证函数序列中的验证函数。
[0130]406、判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配。
[0131]407、若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0132]需要说明的是,401至407的实现过程可以参照图2所示实施例中201至207的相关描述,此处不再赘述。
[0133]408、判断当前系统是否为虚拟系统。
[0134]若判断结果为是,则执行步骤409;若判断结果为否,则执行步骤410。
[0135]409、设置安全软件在不调用技术对抗功能的虚拟系统模式下运行。
[0136]410、设置安全软件在调用技术对抗功能的真机系统模式下运行。
[0137]可以看出,采用本发明实施例提供的技术方案,利用被调用的验证函数的返回值与验证函数预设的返回值是否匹配来确定当前系统是否为虚拟系统,提高了对虚拟系统进行检测时的准确性。另外,在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行,有利于提升系统资源的利用率。
[0138]请参阅图5,图5为本发明的一个实施例提供的一种虚拟系统的检测装置的结构示意图。如图5所示,本发明实施例提供的一种虚拟系统的检测装置500可以包括:
[0139]第一获取单元501,用于获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数。
[0140]其中,验证函数可以是与多个虚拟系统相关的函数,通过该函数的返回值与预设返回值之间的匹配关系,可以判断当前系统是否为虚拟系统。当然验证函数也可以是与某个特定的虚拟系统相关的函数,通过该函数的返回值与预设返回值之间的匹配关系,可以判断当前系统是否为所述特定的虚拟系统。
[0141 ]可选的,在本发明一些可能的实施方式中,若虚拟系统为Vmware虚拟系统,则验证函数可以为如下函数中的至少一个:特权指令函数、中断描述表检测函数、以及信息处理器获取函数。
[0142]其中,特权指令函数是具有特殊权限的特权指令,具体地,所述特权指令是指Vmvare虚拟系统特有的指令,特权指令一般不提供给用户使用,只用于操作系统或者其他系统软件,主要用于系统资源的分配和管理,包括改变系统工作方式、检测用户的访问权限、修改虚拟存储器管理的。举例来说,in指令就是一个特权指令,Vmvare虚拟系统使用in指令与真机系统交互,具体地,可以使用如下汇编代码来使用in指令,__asm mov eax,'VMXh’,in eax,edx,即:先把’VMXh’保存进eax中,调用in eax,edx时,如果存在Vmvare虚拟系统,就会和真机交互,交互值会保存到edx中,判断edx是否为之前保存的’VMXh’,是则是虚拟系统。
[0143]其中,中断描述表检测函数是利用操作系统的中断描述表来进行检测的函数,当在真机系统上安装了虚拟系统时,终端描述表的值需要不停地切换,具体地,使用中断描述表检测当前系统是否为虚拟系统时,可以使用如下汇编代码来判断,__asm sidt m,若m[5]>0xd0,则当前系统为虚拟系统。
[0144]其中,信息处理器获取函数是指:获取eax第31位数据的函数,具体地,可以使用CPUID获取eax的第31位的值,eax第31位在真机系统中是保留的没有使用,Vmware虚拟系统则使用了这一位,所以可以将eax的第31位作为标志位,可以使用如下汇编代码__0口11 i d获取eax的第31位数据,若有值则为Vmware虚拟系统。
[0145]可选的,在本发明一些可能的实施方式中,若虚拟系统为vBox虚拟系统,则验证函数可以为如下函数中的至少一个:动态链接库加载函数和驱动对象打开函数。
[0146]其中,动态链接库加载函数是指调用LoadLibrary函数加载名称为VBoxHook.DLL的动态链接库,因为VBoxHook.DLL动态链接库是vBox虚拟系统在SYSMTE32目录下特有的动态链接库文件,所以若加载成功,则当前系统为虚拟系统。
[0147]其中,驱动对象打开函数是指打开vBox虚拟系统特有的驱动对象的函数,若打开成功,则当前系统为V B ο X虚拟系统。具体地,V B ο X虚拟系统具有一个特有的名称为VBoxMiniRdrDN的驱动对象,若使用函数::CreateFiIeA(〃\\\\.\\VBoxMiniRdrDN〃)iSO开驱动对象的操作,若打开成功,则当前系统为虚拟系统。
[0148]调用单元502,用于调用所述验证函数序列中的验证函数。
[0149]举例来说,若验证函数序列中的验证函数是与虚拟系统Vmware对应的:特权指令函数、中断描述表检测函数、和信息处理器获取函数,则可以依次调用这3个函数。
[0150]第一判断单元503,用于判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配。
[0151]举例来说,当调用与Vmvare虚拟系统对应的特权指令函数时,若执行如下汇编代码,—asm mov eax, 'VMXh' ,in eax,edx,判断edx的值与预设的返回值VMXh是否相同,如果相同,则被调用的验证函数的返回值与验证函数的预设的返回值匹配;如果不相同,则被调用的验证函数的返回值与验证函数的预设的返回值不匹配。
[0152 ]举例来说,当调用与Vmvar e虚拟系统对应的中断描述表检测函数时,若执行如下汇编代码,—a sm sidt m,判断m [ 5 ]的值是否大于OxdO,若大于,则被调用的验证函数的返回值与验证函数的预设的返回值匹配;若不大于,则被调用的验证函数的返回值与验证函数的预设的返回值不匹配。
[0153]第一处理单元504,用于若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0154]可选的,在本发明一些可能的实施方式中,可以设定只要有一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统,举例来说,若验证函数包括与Vmware虚拟系统系统对应的特权指令函数、中断描述表检测函数、以及信息处理器获取函数。可以设定只要有一个验证函数,比如特权指令函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0155]可选的,在本发明一些可能的实施方式中,为了提高准确性可以设定需要两个或者两个以上的验证函数的返回值与预设的返回值匹配,才判定当前系统为虚拟系统。举例来说,若验证函数包括与Vmware虚拟系统对应的特权指令函数、中断描述表检测函数、以及信息处理器获取函数。可以设定其中两个或者全部的验证函数的返回值与预设的返回值匹配,才判定当前系统为虚拟系统。
[0156]可以看出,采用本发明实施例提供的技术方案,利用被调用的验证函数的返回值与验证函数预设的返回值是否匹配来确定当前系统是否为虚拟系统。若当前系统为虚拟系统,验证函数的返回值是固定的,即使虚拟系统的系统进程被删除了,也不影响使用验证函数来检测当前系统是否为虚拟系统的结果。因此采用本发明实施例提供的技术方案提高了对虚拟系统进行检测时的准确性。
[0157]请参阅图6,图6是本发明的另一实施例提供的一种虚拟系统的检测装置的结构示意图。如图6所示,本发明实施例提供的另一种虚拟系统的检测装置600可以包括:
[0158]第一获取单元601,用于第二判断单元606的判断结果为否时,获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数。
[0159]其中,验证函数可以是与多个虚拟系统相关的函数,通过该函数的返回值与预设返回值之间的匹配关系,可以判断当前系统是否为虚拟系统。当然验证函数也可以是与某个特定的虚拟系统相关的函数,通过该函数的返回值与预设返回值之间的匹配关系,可以判断当前系统是否为所述特定的虚拟系统。
[0160]可选的,在本发明一些可能的实施方式中,若虚拟系统为Vmware虚拟系统,则验证函数可以为如下函数中的至少一个:特权指令函数、中断描述表检测函数、以及信息处理器获取函数。
[0161]其中,特权指令函数是具有特殊权限的特权指令,具体地,所述特权指令是指Vmvare虚拟系统特有的指令,特权指令一般不提供给用户使用,只用于操作系统或者其他系统软件,主要用于系统资源的分配和管理,包括改变系统工作方式、检测用户的访问权限、修改虚拟存储器管理的。举例来说,in指令就是一个特权指令,Vmvare虚拟系统使用in指令与真机系统交互,具体地,可以使用如下汇编代码来使用in指令,__asm mov eax,'VMXh’,in eax,edx,即:先把’VMXh’保存进eax中,调用in eax,edx时,如果存在Vmvare虚拟系统,就会和真机交互,交互值会保存到edx中,判断edx是否为之前保存的’VMXh’,是则是虚拟系统。
[0162]其中,中断描述表检测函数是利用操作系统的中断描述表来进行检测的函数,当在真机系统上安装了虚拟系统时,终端描述表的值需要不停地切换,具体地,使用中断描述表检测当前系统是否为虚拟系统时,可以使用如下汇编代码来判断,__asm sidt m,若m[5]>OxdO,则当前系统为虚拟系统。
[0163]其中,信息处理器获取函数是指:获取eax第31位数据的函数,具体地,可以使用CPUID获取eax的第31位的值,eax第31位在真机系统中是保留的没有使用,Vmware虚拟系统则使用了这一位,所以可以将eax的第31位作为标志位,可以使用如下汇编代码__0口11 i d获取eax的第31位数据,若有值则为Vmware虚拟系统。
[0164]可选的,在本发明一些可能的实施方式中,若虚拟系统为vBox虚拟系统,则验证函数可以为如下函数中的至少一个:动态链接库加载函数和驱动对象打开函数。
[0165]其中,动态链接库加载函数是指调用LoadLibrary函数加载名称为VBoxHook.DLL的动态链接库,因为VBoxHook.DLL动态链接库是vBox虚拟系统在SYSMTE32目录下特有的动态链接库文件,所以若加载成功,则当前系统为虚拟系统。
[0166]其中,驱动对象打开函数是指打开vBox虚拟系统特有的驱动对象的函数,若打开成功,则当前系统为V B ο X虚拟系统。具体地,V B ο X虚拟系统具有一个特有的名称为VBoxMiniRdrDN的驱动对象,若使用函数::CreateFiIeA(〃\\\\.\\VBoxMiniRdrDN〃)iSO开驱动对象的操作,若打开成功,则当前系统为虚拟系统。
[0167]调用单元602,用于调用所述验证函数序列中的验证函数。
[0168]举例来说,若验证函数序列中的验证函数是与虚拟系统Vmware对应的:特权指令函数、中断描述表检测函数、和信息处理器获取函数,则可以依次调用这3个函数。
[0169]第一判断单元603,用于判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配。
[0170]举例来说,当调用与Vmvare虚拟系统对应的特权指令函数时,若执行如下汇编代码,—asm mov eax, 'VMXh' ,in eax,edx,判断edx的值与预设的返回值VMXh是否相同,如果相同,则被调用的验证函数的返回值与验证函数的预设的返回值匹配;如果不相同,则被调用的验证函数的返回值与验证函数的预设的返回值不匹配。
[0171]举例来说,当调用与Vmvare虚拟系统对应的中断描述表检测函数时,若执行如下汇编代码,—a sm sidt m,判断m [ 5 ]的值是否大于OxdO,若大于,则被调用的验证函数的返回值与验证函数的预设的返回值匹配;若不大于,则被调用的验证函数的返回值与验证函数的预设的返回值不匹配。
[0172]第一处理单元604,用于若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0173]可选的,在本发明一些可能的实施方式中,可以设定只要有一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统,举例来说,若验证函数包括与Vmware虚拟系统系统对应的特权指令函数、中断描述表检测函数、以及信息处理器获取函数。可以设定只要有一个验证函数,比如特权指令函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0174]可选的,在本发明一些可能的实施方式中,为了提高准确性可以设定需要两个或者两个以上的验证函数的返回值与预设的返回值匹配,才判定当前系统为虚拟系统。举例来说,若验证函数包括与Vmware虚拟系统对应的特权指令函数、中断描述表检测函数、以及信息处理器获取函数。可以设定其中两个或者全部的验证函数的返回值与预设的返回值匹配,才判定当前系统为虚拟系统。
[0175]第二获取单元605,用于在所述第一获取单元601获取预设的验证函数序列之前,获取当前系统的系统进程。
[0176]第二判断单元606,用于判断所述第二获取单元605获取的当前系统的系统进程中是否包括预设的虚拟系统的系统进程。
[0177]第二处理单元607,用于若所述第二判断单元606的判断结果为是时,判定当前系统为虚拟系统;以及用于若所述第二判断单元606的判断结果为否时,所述执行第一获取单元601获取预设的验证函数序列。
[0178]需要说明的是,在虚拟系统实际运行时,虚拟系统对应的系统进程可能被其他的应用删除、或者虚拟系统在启动的过程中可能出现故障而使得系统进程中不包括与虚拟系统对应的进程名。这时如果判定当前系统不是虚拟系统,则不准确。本发明实施例在判断当前系统的系统进程中不包括预设的虚拟系统的系统进程的情况下,进一步地通过验证函数来检测当前系统是否为虚拟系统,提高了检测的准确性。
[0179]请参阅图7,图7为本发明的一个实施例提供的一种安全软件的运行装置的结构示意图。如图7所示,本发明实施例提供的一种安全软件的运行装置700可以包括:
[0180]第一获取单元701,用于获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数。
[0181 ]调用单元702,用于调用所述验证函数序列中的验证函数。
[0182]第一判断单元703,用于判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配。
[0183]第一处理单元704,用于若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0184]需要说明的是,701至704各模块的功能可以参照图5所示实施例中501至504各模块的相关描述,此处不再赘述。
[0185]运行单元705,用于在所述第一处理单元704的判定结果为当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行。
[0186]可以看出,采用本发明实施例提供的技术方案,利用被调用的验证函数的返回值与验证函数预设的返回值是否匹配来确定当前系统是否为虚拟系统,提高了对虚拟系统进行检测时的准确性。另外,在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行,有利于提升系统资源的利用率。
[0187]请参阅图8,图8为本发明的另一个实施例提供的一种安全软件的运行装置的结构示意图。如图8所示,本发明实施例提供的另一种安全软件的运行装置800可以包括:
[0188]第二获取单元805,用于获取当前系统的系统进程。
[0189]第二判定单元806,用于判断当前系统的系统进程中是否包括预设的虚拟系统的系统进程。
[0190]第二处理单元807,用于若当前系统的系统进程中包括预设的虚拟系统的系统进程,判定当前系统未虚拟系统;若当前系统的系统进程中不包括预设的虚拟系统的系统进程,第一获取单元801获取预设的验证函数序列。
[0191]第一获取单元801,用于第二处理单元807的判定结果为当前系统的系统进程中不包括预设的虚拟系统的系统进程时,获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数。
[0192]调用单元802,用于调用所述验证函数序列中的验证函数。
[0193]第一判断单元803,用于判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配。
[0194]第一处理单元804,用于若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统,用于若没有一个验证函数的返回值与预设的返回值匹配,则判定当前系统为真机系统。
[0195]需要说明的是,801至804各模块的功能可以参照图5所示实施例中501至504各模块的相关描述,此处不再赘述。
[0196]运行单元808,用于若第一处理单元804的判定结果为当前系统为虚拟系统,则设置安全软件在不调用技术对抗功能的虚拟系统模式下运行。以及用于若第一处理单元804的判定结果为当前系统不为虚拟系统,即为真机系统时,设置安全软件在调用技术对抗功能的真机系统模式下运行。
[0197]可以看出,采用本发明实施例提供的技术方案,利用被调用的验证函数的返回值与验证函数预设的返回值是否匹配来确定当前系统是否为虚拟系统,提高了对虚拟系统进行检测时的准确性。另外,在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行,有利于提升系统资源的利用率。
[0198]参见图9,图9为本发明实施例提供的一种电子设备的结构示意图,所述电子设备900,可以包括:
[0199]处理器901、存储器902、通信接口 903和总线904;
[0200]其中,所述处理器901、所述存储器902和所述通信接口903通过所述总线904连接并完成相互间的通信;
[0201 ]所述存储器902存储可执行程序代码;
[0202]所述处理器901通过读取所述存储器902中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种虚拟系统的检测方法;其中,一种虚拟系统的检测方法包括以下内容:
[0203]获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数,
[0204]调用所述验证函数序列中的验证函数;
[0205]判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配;
[0206]若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0207]可以看出,采用本发明实施例提供的技术方案,利用被调用的验证函数的返回值与验证函数预设的返回值是否匹配来确定当前系统是否为虚拟系统。若当前系统为虚拟系统,验证函数的返回值是固定的,即使虚拟系统的系统进程被删除了,也不影响使用验证函数来检测当前系统是否为虚拟系统的结果。因此采用本发明实施例提供的技术方案提高了对虚拟系统进行检测时的准确性。
[0208]本发明实施例还提供了一种存储介质,其中,该存储介质用于存储应用程序,所述应用程序用于在运行时执行本发明实施例所述的一种虚拟系统的检测方法。
[0209]本发明实施例还提供了一种应用程序,其中,该应用程序用于在运行时执行本发明实施例所述的一种虚拟系统的检测方法。
[0210]参见图10,图10为本发明实施例提供的一种电子设备的结构示意图,所述电子设备1000,可以包括:
[0211]处理器1001、存储器1002、通信接口 1003和总线1004;
[0212]其中,所述处理器1001、所述存储器1002和所述通信接口 1003通过所述总线1004连接并完成相互间的通信;
[0213]所述存储器1002存储可执行程序代码;
[0214]所述处理器1001通过读取所述存储器1002中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种安全软件的运行方法;其中,一种安全软件的运行方法包括以下内容:
[0215]获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数,
[0216]调用所述验证函数序列中的验证函数;
[0217]判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配;
[0218]若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。
[0219]在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行。
[0220]可以看出,采用本发明实施例提供的技术方案,利用被调用的验证函数的返回值与验证函数预设的返回值是否匹配来确定当前系统是否为虚拟系统,提高了对虚拟系统进行检测时的准确性。另外,在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行,有利于提升系统资源的利用率。
[0221]本发明实施例还提供了一种存储介质,其中,该存储介质用于存储应用程序,所述应用程序用于在运行时执行本发明实施例所述的一种安全软件的运行方法。
[0222]本发明实施例还提供了一种应用程序,其中,该应用程序用于在运行时执行本发明实施例所述的一种安全软件的运行方法。
[0223]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0224]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0225]在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0226]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0227]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0228]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(R0M,Read-0nly Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0229]以上所述,以上实施例仅用以说明本发明技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,其中,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【主权项】
1.一种虚拟系统的检测方法,其特征在于,包括: 获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数; 调用所述验证函数序列中的验证函数; 判断被调用的所述验证函数的返回值与所述验证函数的预设的返回值是否匹配; 若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。2.根据权利要求1所述的方法,其特征在于,在所述获取预设的验证函数序列之前,所述方法还包括: 获取当前系统的系统进程; 判断获取的所述当前系统的系统进程中是否包括预设的虚拟系统的系统进程; 若是,则判定当前系统为虚拟系统;若否,则执行所述获取预设的验证函数序列。3.根据权利要求1所述的方法,其特征在于,若所述验证函数序列中包括两个以上验证函数与预设的某个虚拟系统软件相对应,则所述“若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统”,包括: 所有与所述某个虚拟系统软件对应的验证函数序列的返回值与预设的返回值匹配时,才判定当前系统为虚拟系统。4.根据权利要求1所述的方法,其特征在于,所述验证函数序列包括:与Vmware虚拟系统对应的如下函数中的至少一个:特权指令函数、中断描述表监测函数、以及信息处理器获取函数。5.根据权利要求1所述的方法,其特征在于,所述验证函数序列包括:与vBox虚拟系统对应如下函数中的至少一个:动态链接库加载函数和驱动对象打开函数。6.一种安全软件的运行方法,其特征在于,包括: 使用权利要求1至5任意一项所述的虚拟系统的检测方法判断当前系统是否为虚拟系统; 在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行。7.一种虚拟系统的检测装置,其特征在于,包括: 第一获取单元,用于获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数; 调用单元,用于调用所述验证函数序列中的验证函数; 第一判断单元,用于判断被调用的所述验证函数的返回值与所述验证函数的预设的返回值是否匹配; 第一处理单元,用于若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。8.根据权利要求7所述的装置,其特征在于,所述装置还包括: 第二获取单元,用于在所述第一获取单元获取预设的验证函数序列之前,获取当前系统的系统进程; 第二判断单元,用于判断所述第二获取单元获取的当前系统的系统进程中是否包括预设的虚拟系统的系统进程; 第二处理单元,用于若所述第二判断单元的判断结果为是时,判定当前系统为虚拟系统;以及用于若所述第二判断单元的判断结果为否时,执行所述第一获取单元获取预设的验证函数序列。9.一种电子设备,其特征在于,包括:处理器、存储器、通信接口和总线; 所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信; 所述存储器存储可执行程序代码; 所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种虚拟系统的检测方法;其中,所述虚拟系统的检测方法包括: 获取预设的验证函数序列,所述验证函数序列中包括至少一个用于判断当前系统是否为虚拟系统的验证函数, 调用所述验证函数序列中的验证函数; 判断被调用的验证函数的返回值与所述验证函数的预设的返回值是否匹配; 若至少一个验证函数的返回值与预设的返回值匹配,则判定当前系统为虚拟系统。10.—种电子设备,其特征在于,包括:处理器、存储器、通信接□和总线; 所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信; 所述存储器存储可执行程序代码; 所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种安全软件的运行方法;其中,所述安全软件的运行方法包括: 使用如权利要求1至5任意一项所述的方法检测当前系统是否为虚拟系统; 在当前系统为虚拟系统的情况下,设置安全软件在不调用技术对抗功能的虚拟系统模式下运行。
【文档编号】G06F11/07GK105912417SQ201610221474
【公开日】2016年8月31日
【申请日】2016年4月11日
【发明人】李文靖
【申请人】北京金山安全软件有限公司