CN108984265A - 检测虚拟机环境的方法及装置 - Google Patents
检测虚拟机环境的方法及装置 Download PDFInfo
- Publication number
- CN108984265A CN108984265A CN201810508059.XA CN201810508059A CN108984265A CN 108984265 A CN108984265 A CN 108984265A CN 201810508059 A CN201810508059 A CN 201810508059A CN 108984265 A CN108984265 A CN 108984265A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- equipment
- machine environment
- environment
- judging
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000008569 process Effects 0.000 claims description 16
- 238000001514 detection method Methods 0.000 abstract description 24
- 238000012544 monitoring process Methods 0.000 abstract description 7
- 230000008901 benefit Effects 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 11
- 239000000306 component Substances 0.000 description 10
- 238000012545 processing Methods 0.000 description 8
- 244000035744 Hura crepitans Species 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000005484 gravity Effects 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及互联网技术领域,尤其涉及一种检测虚拟机环境的方法及装置。通过查找目标驱动对象创建的实例设备,根据实例设备对应的接口描述符中的接口协议字段,来判断当前运行环境是否是虚拟机环境,其新增了一项相对可靠的监测点,使虚拟机检测功能更加稳健,该检测方案下,攻击者需要做大量的逆向才可以修改设备内部的结构才能欺骗安全系统,具有可靠性高的优势。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种检测虚拟机环境的方法及装置。
背景技术
在当今信息安全领域,特别是恶意软件分析中,经常需要利用到虚拟机技术,以提高病毒分析过程的安全性以及硬件资源的节约性,因此它在恶意软件领域中是应用越来越来广泛。这里我们所谓的虚拟机(Virtual Machine)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件(比如VMware,Virtual PC,VirtualBox),可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机就像真正的计算机那样进行工作,例如可以安装操作系统、安装应用程序、访问网络资源等等。攻击者为了提高恶意程序的隐蔽性以及破坏真实主机的成功率,会在恶意程序中加入检测虚拟机的代码,以判断程序所处的运行环境。当发现程序处于虚拟机(特别是蜜罐系统)中时,就会改变操作行为或者中断执行,以此提高反病毒人员分析恶意软件行为的难度。
现有检测虚拟机环境的方法主要包括:
检测VMware明文字符。然而,现有的虚拟机攻击很多都会把虚拟机所有有VMware字样的明文都提前清空,因此VMware明文字符检测方案在很多环境下都不适用。
通过执行特权指令来检测虚拟机。其原理为:VMware为物理机与虚拟机之间提供了相互沟通的通讯机制,它使用“IN”指令来读取特定端口的数据以进行两机通讯,但由于IN指令属于特权指令,在处于保护模式下的物理机上执行此指令时,除非权限允许,否则将会触发类型为“EXCEPTION_PRIV_INSTRUCTION”的异常,而在虚拟机中并不会发生异常,在指定功能号0A(获取VMware版本)的情况下,它会在EBX中返回其版本号“VMXH”;而当功能号为0x14时,可用于获取VMware内存大小,当大于0时则说明处于虚拟机中。然而,由于检测维度显然可见,而且都是门槛相对较为低的检测点,攻击者可以轻松通过现成工具修改虚拟机达到隐藏目的,从而使检测失效。
发明内容
针对现有技术的上述问题,本发明的目的在于提供一种检测虚拟机环境的方法及装置。
一方面,本发明提供一种检测虚拟机环境的方法,所述方法包括:
在程序运行过程中,遍历目标驱动对象的设备栈,查找所述目标驱动对象创建的实例设备;
当查找到所述实例设备时,则根据所述实例设备对应的接口描述符中的接口协议字段,判断当前程序的运行环境是否是虚拟机环境。
另一方面,本发明提供一种检测虚拟机环境的装置,所述装置包括:
实例设备查找单元,用于在程序运行过程中,遍历目标驱动对象的设备栈,查找所述目标驱动对象创建的实例设备;
虚拟机环境判断单元,用于在实例设备查找单元查找到所述实例设备时,根据所述实例设备对应的接口描述符中的接口协议字段,判断当前程序的运行环境是否是虚拟机环境。
另一方面,本发明还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现所述的检测虚拟机环境的方法。
本发明具有如下有益效果:
本发明通过查找目标驱动对象创建的实例设备,根据实例设备对应的接口描述符中的接口协议字段,来判断当前运行环境是否是虚拟机环境,其新增了一项相对可靠的监测点,使虚拟机检测功能更加稳健,该检测方案下,攻击者需要做大量的逆向才可以修改设备内部的结构才能欺骗安全系统,具有可靠性高的优势。
本发明的检测是在虚拟机内的,由VMware提供的操作系统组件进行检测的,因此,在计算机开机之前攻击者不能通过修改虚拟机配置文件(.vmx)达到隐藏自己的目的,从而可以提高检测虚拟机环境的准确性和普适性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是虚拟机环境下运行Windows 7 x64后查看到的虚拟鼠标描述符;
图2是物理机下运行Windows7 x64后查看到的物理鼠标描述符;
图3是本发明实施例提供的一种检测虚拟机环境的方法的流程示意图;
图4是本发明实施例提供的一种判断设备对象是否为实例设备的流程示意图;
图5是本发明实施例提供的一种判断程序的运行环境是否是虚拟机环境的流程示意图;
图6是本发明实施例提供的一种检测虚拟机环境的装置的结构示意图;
图7是本发明实施例提供的HidUsb驱动对象的设备栈的示意图;
图8是本发明实施例提供的一种终端800的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明方案用于检测程序运行环境是否为虚拟机环境,所述的虚拟机环境指的是,使用沙盒技术在本地提供一个虚拟机环境,这个虚拟机环境会共享系统的基本核心组件,享受系统提供的基本服务。但在虚拟化的环境中无法访问到本地的文件资源。同时用户如果需要上网,只能在虚拟机环境中通过安全桌面上网,而无法在真实的桌面环境中使用默认桌面上网;用户在虚拟机环境中可以使用系统提供的基本服务,但是无法访问到本地的文件资源。这样,既可以保障虚拟机环境自身的安全,也可以保障沙盒中不会产生对本机的非法访问。同时,还需要在网络的出口即网络资源边界部署一台网关设备,即安全网关,用于控制在不同网络之间的数据通信。当用户试图上网的时候,安全网关检测用户的数据是否来自虚拟机环境,如果不是,则拒绝其访问网络,并提示到虚拟机环境中进行上网。在边界上,安全网关根据配置判断用户数据是否合法,是否允许用户数据通行;同时安全网关还负责用户的认证、安全桌面的分发、管理员的配置等。
所述沙盒在计算机领域指一种虚拟技术,提供应用程序运行的虚拟机环境;所述默认桌面指用户日常使用的真实系统桌面,所述安全桌面指为提供用户访问网络而使用沙盒虚拟出来的安全桌面。该安全桌面部署在用户使用的终端上,用于构建虚拟安全桌面,和安全网关进行通信,供用户访问网络等;同时,安全桌面还负责处理自身和默认桌面之间的资源访问、数据交换等。
TP(TenProtect)反外挂系统检测虚拟机的其中一个监控点,假设有这些设备,而且符合其他条件,则意味着这有极大可能是虚拟机环境。在游戏安全方面,虚拟机检测是很关键的一个点,比如工作室挂机一般都是使用虚拟机的方式进行,因为这可以让他们大大降低成本;另外,很多游戏黑产的逆向人员也会通过虚拟机对游戏进行分析,如IDA双机调试等,因此能够检测到虚拟机环境的维度是越多越好。现有的检测虚拟机环境主要是通过检测VMware(虚拟化)明文字符或者使用某些指令以检测其返回值的方式,但这两种方式都有欠缺,攻击者容易通过修改虚拟机或者清空VMware明文时无法达到躲避检测的目的。
鉴于上述原因,本发明旨在提供一种新的虚拟机环境检测方案,通过研究物理机环境和虚拟机环境下设备信息的不同,找到通过设备信息辨识虚拟机环境的有效手段。
发明人着重研究了鼠标在不同环境下的显示信息。图1是虚拟机环境下运行Windows 7 x64后查看到的虚拟鼠标描述符,图2是物理机下运行Windows7x64后查看到的物理鼠标描述符。HID协议表明,鼠标的Protocol值是2,然而从图1和图2可以看出,物理机环境下bInterfaceProtocol被填充为2,但虚拟机环境下没有将bInterfaceProtocol正确填充为2,而是填充为0,没有正确显示HID协议中指定的鼠标类型;然而,0是未定义,在HID协议中bInterfaceProtocol被填充为0,代表未知设备,一般而言,如果这个描述符出现在物理设备中,操作系统是没有任何方法支持这个设备的数据收发的。鉴于此,发明人想到一种检测虚拟机环境的方法,根据鼠标信息中特定描述符来判断是否运行在虚拟机环境中,新增一项监测点,来使虚拟机检测功能更加稳健。
其中,HID(Human Interface Devices)即人机交互设备,用于控制计算机操作的某些方面,常见的HID设备有USB鼠标、USB键盘、USB游戏操作杆、USB触摸板、USB轨迹球、电话拨号设备、VCR遥控等。HID设备的此外,操作系统自带HID类的驱动程序,HID设备直接使用API调用即可完成通信,无需开发驱动程序。
以下对本说明书的检测虚拟机环境的方法进行具体说明。
图3是发明实施例提供的一种检测虚拟机环境的方法的流程示意图。本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图3所示,所述方法可以包括:
S301:在程序运行过程中,遍历目标驱动对象的设备栈,查找所述目标驱动对象创建的实例设备。
本发明实施例中,虚拟机环境检测方法是在虚拟机内,由VMware提供的操作系统组件进行检测的,因而在程序运行过程中才能实施检测,这样设计的好处在于,在计算机开机之前,攻击者是不能通过修改虚拟配置文件来达到隐藏自己的目的的,从而可以弥补现有的VMware明文字符检测及指令检测的不足。
在一个具体的实施例中,检测虚拟机环境之前,可以先判断当前是否处于程序运行过程中,如果是,则可启动虚拟机检测程序。
在一个具体的实施例中,在遍历目标驱动对象的设备栈之前,还包括:遍历驱动设备,查找目标驱动对象。一种可能的实现方式中,所述目标驱动对象可以为HidUsb的驱动对象,实际上,USBHID的设备都会创建在HidUsb这个驱动对象的设备栈里,因此,可以从HidUsb的设备栈里找到鼠标设备。
在一种可能的实现方式中,所述遍历目标驱动对象的设备栈,查找所述目标驱动对象创建的实例设备可以包括如下步骤:
步骤一:获取目标驱动对象的设备栈上的设备信息,所述设备信息包括由所述目标驱动对象所创建的设备对象的单向链表,每个所述设备对象对应一条单向链。
驱动对象中,有一个元素为设备对象。每个设备对象都有从属于这个驱动对象的下一个设备对象的指针,设备对象其实是一个单向链表,单向链表中的每一个成员都隶属于共同的驱动对象。也即是说,每一个驱动对象都会有自己的设备对象单向链表,来保存它所创建的设备。通过打开HidUsb的驱动对象,可以找到HidUsb驱动对象的设备栈,HidUsb驱动对象的设备栈如图7所示。从图7可见,所有设备为一条单向链表,并且属于HidUsb该驱动对象所有,但是他们并不是属于一类设备,而是分为实例设备和抽象设备;由上述分析可知,如果在物理设备中,HID协议中bInterfaceProtocol的值被填充为0,则代表该设备的数据收发是无效的,因此,实例设备中HID协议中bInterfaceProtocol的值可以作为判断虚拟机环境的依据。
步骤二:遍历所有设备对象的单向链表,判断所述设备对象是否为实例设备。
由上述步骤一可知,遍历目标驱动对象的设备栈的目的在于找到实例设备。图4是本发明实施例提供的一种判断设备对象是否为实例设备的流程示意图。请参见图4,判断设备对象是否为实例设备包括如下步骤:
步骤S401:根据设备对象的单向链表,获取该设备对象中扩展信息中的客户物理设备字段;
步骤S403:判断获取到的所述客户物理设备字段是否与第一预设值相同;
步骤S405:如果所述客户物理设备字段与所述第一预设值相同,则判定该设备对象为实例设备;
步骤S407:如果所述客户物理设备字段与所述第一预设值不相同,则判定该设备对象不是实例设备。
根据研究的逆向分析获知,判断条件可以透过访问设备对象中扩展信息中的IsClientPdo字段来判断,如果IsClientPdo字段为1,则代表设备对象是实例设备,如果IsClientPdo字段不为1,则代表设备对象不是实例设备。当判断出设备对象不是实例设备时,则继续往下遍历该链表直到遍历完整个单向链表。上述的客户物理设备字段为IsClientPdo字段,所述第一预设值为1。
S303:当查找到实例设备时,则根据所述实例设备对应的接口描述符中的接口协议字段,判断当前程序的运行环境是否是虚拟机环境。
通过上述步骤S301,一旦查找出实例设备,就对实例设备对应的接口描述符中的接口协议字段进行判断,直至完成对所有查找到的实例设备的判断。
图5是本发明实施例提供的一种判断程序的运行环境是否是虚拟机环境的流程示意图。请参见图5,判断程序的运行环境是否是虚拟机环境具体包括如下步骤:
步骤S501:确定设备对象是实例设备;
步骤S503:判断实例设备所对应的接口描述符中的接口协议字段的值是否与所述第二预设值相同;
步骤S505:如果所述接口协议字段的值与所述第二预设值相同,则判定当前程序的运行环境不是虚拟机环境;
步骤S507:如果所述接口协议字段的值与所述第二预设值不相同,则判定当前程序的运行环境是虚拟机环境。
由上述分析可知,实例设备中HID协议中bInterfaceProtocol的值可作为判断虚拟机环境的依据,且在虚拟机环境下,实例设备中HID协议中bInterfaceProtocol的值不会被正确填充为2。本实施例中,所述接口协议字段的值即为HID协议中bInterfaceProtocol的值,所述第二预设值为2,通过判断实例设备所对应的接口描述符中的接口协议字段的值是否与所述第二预设值相同,可以判断出当前程序的运行环境是否为虚拟机环境。本实施例提供的检测虚拟机环境的方法经过多次验证,均能正确的检测出虚拟机环境。
本实施例通过查找目标驱动对象创建的实例设备,根据实例设备对应的接口描述符中的接口协议字段,来判断当前运行环境是否是虚拟机环境,其新增了一项相对可靠的监测点,使虚拟机检测功能更加稳健,该检测方案下,攻击者需要做大量的逆向才可以修改设备内部的结构才能欺骗安全系统,具有可靠性高的优势。
本实施例的检测是在虚拟机内的,由VMware提供的操作系统组件进行检测的,因此,在计算机开机之前攻击者不能通过修改虚拟机配置文件(.vmx)达到隐藏自己的目的,从而可以提高检测虚拟机环境的准确性和普适性。
本发明实施例还提供了一种检测虚拟机环境的装置,如图6所示,图6是本发明实施例提供的一种检测虚拟机环境的装置的结构示意图。具体的,所述检测虚拟机环境的装置可以包括目标驱动对象查找单元61、实例设备查找单63和虚拟机环境判断单元65。其中,
所述目标驱动对象查找单元61,用于遍历驱动设备,查找目标驱动对象,所述目标驱动对象为HidUsb的驱动对象;
所述实例设备查找单63,用于在程序运行过程中,遍历目标驱动对象的设备栈,查找所述目标驱动对象创建的实例设备;
所述虚拟机环境判断单元65,用于在实例设备查找单元查找到所述实例设备时,根据所述实例设备对应的接口描述符中的接口协议字段,判断当前程序的运行环境是否是虚拟机环境。
进一步地,所述实例设备查找单元63包括设备信息获取模块631和实例设备判断模块633。其中,
所述设备信息获取模块631,用于获取目标驱动对象的设备栈上的设备信息,所述设备信息包括由所述目标驱动对象所创建的设备对象的单向链表,每个所述设备对象对应一条单向链表;
所述实例设备判断模块633,用于遍历所有设备对象的单向链表,判断所述设备对象是否为实例设备。
具体的,所述实例设备判断模块633还用于:根据所述设备对象的单向链表,获取该设备对象中扩展信息中的客户物理设备字段,判断获取到的所述客户物理设备字段是否与第一预设值相同,如果所述客户物理设备字段与所述第一预设值相同,则判定该设备对象为实例设备,如果所述客户物理设备字段与所述第一预设值不相同,则判定该设备对象不是实例设备。
具体的,所述虚拟机环境判断单元65还用于:判断实例设备所对应的接口描述符中的接口协议字段的值是否与第二预设值相同,如果所述接口协议字段的值与所述第二预设值相同,则判定当前程序的运行环境不是虚拟机环境,如果所述接口协议字段的值与所述第二预设值不相同,则判定当前程序的运行环境是虚拟机环境。
需要说明的是:上述实施例提供的检测虚拟机环境的装置进行检测时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的检测虚拟机环境的装置与检测虚拟机环境的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本实施例提供了一种终端,该终端可以用于执行上述各个实施例中提供的检测虚拟机环境的方法。参见图8,该终端800包括:
终端800可以包括RF(Radio Frequency,射频)电路810、包括有一个或一个以上计算机可读存储介质的存储器820、输入单元830、显示单元840、传感器850、音频电路860、WiFi(Wireless Fidelity,无线保真)模块870、包括有一个或者一个以上处理核心的处理器880、以及电源80等部件。本领域技术人员可以理解,图8中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路810可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器880处理;另外,将涉及上行的数据发送给基站。通常,RF电路810包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(LowNoiseAmplifier,低噪声放大器)、双工器等。此外,RF电路810还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System ofMobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision MultipleAccess,码分多址)、WCDMA(Wideband Code DivisionMultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器820可用于存储软件程序以及模块,处理器880通过运行存储在存储器820的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器820可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端800的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器820还可以包括存储器控制器,以提供处理器880和输入单元830对存储器820的访问。
输入单元830可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元830可包括触敏表面831以及其他输入设备832。触敏表面831,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面831上或在触敏表面831附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面831可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器880,并能接收处理器880发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面831。除了触敏表面831,输入单元830还可以包括其他输入设备832。具体地,其他输入设备832可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元840可用于显示由用户输入的信息或提供给用户的信息以及终端800的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元840可包括显示面板841,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板841。进一步的,触敏表面831可覆盖显示面板841,当触敏表面831检测到在其上或附近的触摸操作后,传送给处理器880以确定触摸事件的类型,随后处理器880根据触摸事件的类型在显示面板841上提供相应的视觉输出。虽然在图8中,触敏表面831与显示面板841是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面831与显示面板841集成而实现输入和输出功能。
终端800还可包括至少一种传感器850,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板841的亮度,接近传感器可在终端800移动到耳边时,关闭显示面板841和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端800还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路860、扬声器861,传声器862可提供用户与终端800之间的音频接口。音频电路860可将接收到的音频数据转换后的电信号,传输到扬声器861,由扬声器861转换为声音信号输出;另一方面,传声器862将收集的声音信号转换为电信号,由音频电路860接收后转换为音频数据,再将音频数据输出处理器880处理后,经RF电路810以发送给比如另一终端,或者将音频数据输出至存储器820以便进一步处理。音频电路860还可能包括耳塞插孔,以提供外设耳机与终端800的通信。
WiFi属于短距离无线传输技术,终端800通过WiFi模块870可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示出了WiFi模块870,但是可以理解的是,其并不属于终端800的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器880是终端800的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器820内的软件程序和/或模块,以及调用存储在存储器820内的数据,执行终端800的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器880可包括一个或多个处理核心;优选的,处理器880可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器880中。
终端800还包括给各个部件供电的电源80(比如电池),优选的,电源可以通过电源管理系统与处理器880逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源80还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端800还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端的显示单元是触摸屏显示器,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。所述一个或者一个以上程序包含用于执行以下操作的指令:在程序运行过程中,遍历目标驱动对象的设备栈,查找所述目标驱动对象创建的实例设备;当查找到所述实例设备时,则根据所述实例设备对应的接口描述符中的接口协议字段,判断当前程序的运行环境是否是虚拟机环境。
本发明的实施例还提供了一种存储介质,所述存储介质可设置于终端之中以保存用于实现方法实施例中一种检测虚拟机环境的方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的检测虚拟机环境的方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个终端中的至少一个终端。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-On l y Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
由上述本发明提供的检测虚拟机环境的方法、装置、终端或存储介质的实施例可见,本发明通过查找目标驱动对象创建的实例设备,根据实例设备对应的接口描述符中的接口协议字段,来判断当前运行环境是否是虚拟机环境,其新增了一项相对可靠的监测点,使虚拟机检测功能更加稳健,该检测方案下,攻击者需要做大量的逆向才可以修改设备内部的结构才能欺骗安全系统,具有可靠性高的优势。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种检测虚拟机环境的方法,其特征在于,所述方法包括:
在程序运行过程中,遍历目标驱动对象的设备栈,查找所述目标驱动对象创建的实例设备;
当查找到所述实例设备时,则根据所述实例设备对应的接口描述符中的接口协议字段,判断当前程序的运行环境是否是虚拟机环境。
2.根据权利要求1所述的方法,其特征在于,所述遍历目标驱动对象的设备栈,查找所述目标驱动对象创建的实例设备包括:
获取所述目标驱动对象的设备栈上的设备信息,所述设备信息包括由所述目标驱动对象所创建的设备对象的单向链表,每个所述设备对象对应一条单向链表;
遍历所有设备对象的单向链表,判断所述设备对象是否为实例设备。
3.根据权利要求2所述的方法,其特征在于,所述遍历所有设备对象的单向链表,判断所述设备对象是否为实例设备包括:
根据所述设备对象的单向链表,获取该设备对象中扩展信息中的客户物理设备字段;
判断获取到的所述客户物理设备字段是否与第一预设值相同;
如果所述客户物理设备字段与所述第一预设值相同,则判定该设备对象为实例设备,如果所述客户物理设备字段与所述第一预设值不相同,则判定该设备对象不是实例设备。
4.根据权利要求1或2所述的方法,其特征在于,所述遍历目标驱动对象的设备栈,查找所述目标驱动对象创建的实例设备之前,还包括:
遍历驱动设备,查找目标驱动对象,所述目标驱动对象为HidUsb的驱动对象。
5.根据权利要求1所述的方法,其特征在于,所述根据所述实例设备对应的接口描述符中的接口协议字段,判断当前程序的运行环境是否是虚拟机环境包括:
判断实例设备所对应的接口描述符中的接口协议字段的值是否与所述第二预设值相同,如果所述接口协议字段的值与所述第二预设值相同,则判定当前程序的运行环境不是虚拟机环境,如果所述接口协议字段的值与所述第二预设值不相同,则判定当前程序的运行环境是虚拟机环境。
6.一种检测虚拟机环境的装置,其特征在于,所述装置包括:
实例设备查找单元,用于在程序运行过程中,遍历目标驱动对象的设备栈,查找所述目标驱动对象创建的实例设备;
虚拟机环境判断单元,用于在所述实例设备查找单元查找到所述实例设备时,根据所述实例设备对应的接口描述符中的接口协议字段,判断当前程序的运行环境是否是虚拟机环境。
7.根据权利要求6所述的装置,其特征在于,所述实例设备查找单元包括:
设备信息获取模块,用于获取目标驱动对象的设备栈上的设备信息,所述设备信息包括由所述目标驱动对象所创建的设备对象的单向链表,每个所述设备对象对应一条单向链表;
实例设备判断模块,用于遍历所有设备对象的单向链表,判断所述设备对象是否为实例设备。
8.根据权利要求7所述的装置,其特征在于,所述实例设备判断模块还用于:
根据所述设备对象的单向链表,获取该设备对象中扩展信息中的客户物理设备字段,判断获取到的所述客户物理设备字段是否与第一预设值相同,如果所述客户物理设备字段与所述第一预设值相同,则判定该设备对象为实例设备,如果所述客户物理设备字段与所述第一预设值不相同,则判定该设备对象不是实例设备。
9.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
目标驱动对象查找单元,用于遍历驱动设备,查找目标驱动对象,所述目标驱动对象为HidUsb的驱动对象。
10.根据权利要求6所述的装置,其特征在于,所述虚拟机环境判断单元还用于:
判断实例设备所对应的接口描述符中的接口协议字段的值是否与第二预设值相同,如果所述接口协议字段的值与所述第二预设值相同,则判定当前程序的运行环境不是虚拟机环境,如果所述接口协议字段的值与所述第二预设值不相同,则判定当前程序的运行环境是虚拟机环境。
11.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至5中任意一项所述的检测虚拟机环境的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810508059.XA CN108984265B (zh) | 2018-05-24 | 2018-05-24 | 检测虚拟机环境的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810508059.XA CN108984265B (zh) | 2018-05-24 | 2018-05-24 | 检测虚拟机环境的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108984265A true CN108984265A (zh) | 2018-12-11 |
CN108984265B CN108984265B (zh) | 2020-12-15 |
Family
ID=64542640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810508059.XA Active CN108984265B (zh) | 2018-05-24 | 2018-05-24 | 检测虚拟机环境的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108984265B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110798468A (zh) * | 2019-10-31 | 2020-02-14 | 福建天晴在线互动科技有限公司 | 一种通过枚举防火墙规则检测虚拟化环境的方法 |
CN111382416A (zh) * | 2018-12-27 | 2020-07-07 | 北京右划网络科技有限公司 | 应用程序的运行识别方法、装置,终端设备及存储介质 |
CN112333157A (zh) * | 2020-10-20 | 2021-02-05 | 陈赛花 | 基于大数据的网络安全防护方法和网络安全防护平台 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436410A (zh) * | 2011-12-12 | 2012-05-02 | 华中科技大学 | 虚拟机检查点的在线保存方法 |
CN104049969A (zh) * | 2014-05-29 | 2014-09-17 | 汉柏科技有限公司 | 一种基于设备描述符识别软件运行平台的方法及装置 |
CN104484291A (zh) * | 2014-11-24 | 2015-04-01 | 华为技术有限公司 | 一种建立设备映射的方法及装置 |
US9106651B2 (en) * | 2011-09-19 | 2015-08-11 | Qualcomm Incorporated | Sending human input device commands over internet protocol |
-
2018
- 2018-05-24 CN CN201810508059.XA patent/CN108984265B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9106651B2 (en) * | 2011-09-19 | 2015-08-11 | Qualcomm Incorporated | Sending human input device commands over internet protocol |
CN102436410A (zh) * | 2011-12-12 | 2012-05-02 | 华中科技大学 | 虚拟机检查点的在线保存方法 |
CN104049969A (zh) * | 2014-05-29 | 2014-09-17 | 汉柏科技有限公司 | 一种基于设备描述符识别软件运行平台的方法及装置 |
CN104484291A (zh) * | 2014-11-24 | 2015-04-01 | 华为技术有限公司 | 一种建立设备映射的方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382416A (zh) * | 2018-12-27 | 2020-07-07 | 北京右划网络科技有限公司 | 应用程序的运行识别方法、装置,终端设备及存储介质 |
CN111382416B (zh) * | 2018-12-27 | 2022-09-30 | 北京右划网络科技有限公司 | 应用程序的运行识别方法、装置,终端设备及存储介质 |
CN110798468A (zh) * | 2019-10-31 | 2020-02-14 | 福建天晴在线互动科技有限公司 | 一种通过枚举防火墙规则检测虚拟化环境的方法 |
CN110798468B (zh) * | 2019-10-31 | 2021-11-09 | 福建天晴在线互动科技有限公司 | 一种通过枚举防火墙规则检测虚拟化环境的方法 |
CN112333157A (zh) * | 2020-10-20 | 2021-02-05 | 陈赛花 | 基于大数据的网络安全防护方法和网络安全防护平台 |
Also Published As
Publication number | Publication date |
---|---|
CN108984265B (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108932429B (zh) | 应用程序的分析方法、终端及存储介质 | |
CN103400076B (zh) | 一种移动终端上的恶意软件检测方法、装置和系统 | |
CN104383681B (zh) | 游戏进程控制方法、装置和移动终端 | |
US10474507B2 (en) | Terminal application process management method and apparatus | |
WO2016150331A1 (zh) | 一种运行游戏客户端的方法和装置 | |
WO2018077041A1 (zh) | 应用运行的方法及装置 | |
CN103473163B (zh) | 应用程序检测方法及装置 | |
CN104967896A (zh) | 一种显示弹幕评论信息的方法和装置 | |
CN106775833B (zh) | 设备驱动程序加载方法、终端及系统 | |
CN106547844B (zh) | 一种用户界面的处理方法和装置 | |
CN106529312B (zh) | 一种移动终端的权限控制方法、装置及移动终端 | |
CN106713608B (zh) | 应用的功能状态修改方法、装置及终端 | |
CN108984265B (zh) | 检测虚拟机环境的方法及装置 | |
WO2014206295A1 (en) | Method, device and computer-readable storage medium for monitoring uninstallation event in operation platform | |
CN108804915B (zh) | 病毒程序清理方法、存储设备及电子终端 | |
US11150913B2 (en) | Method, device, and terminal for accelerating startup of application | |
CN105279433B (zh) | 一种应用程序的防护方法及装置 | |
CN105975316A (zh) | 一种进程管理方法、装置及设备 | |
US20150128129A1 (en) | Method and device for installing application | |
CN106709330B (zh) | 记录文件执行行为的方法及装置 | |
CN111045737A (zh) | 设备标识获取方法、装置、终端设备和存储介质 | |
CN103269341B (zh) | 一种间谍程序的分析方法和计算机系统 | |
CN106709339B (zh) | 一种显示扫描结果的方法和装置 | |
CN105740396B (zh) | Http数据处理方法及装置 | |
CN105791253B (zh) | 一种获取网站的认证信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |