CN112580024B - 虚拟机的模拟方法及装置、存储介质、计算机设备 - Google Patents
虚拟机的模拟方法及装置、存储介质、计算机设备 Download PDFInfo
- Publication number
- CN112580024B CN112580024B CN201910943733.1A CN201910943733A CN112580024B CN 112580024 B CN112580024 B CN 112580024B CN 201910943733 A CN201910943733 A CN 201910943733A CN 112580024 B CN112580024 B CN 112580024B
- Authority
- CN
- China
- Prior art keywords
- target program
- execution
- program
- executable file
- function
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种虚拟机的模拟方法及装置、存储介质、计算机设备,该方法包括:获取真实系统中的可执行文件对应的可执行文件头;根据可执行文件头导出可执行文件对应的函数;利用可执行文件对应的函数以及可执行文件头,在虚拟机中建立虚拟可执行文件,其中,虚拟可执行文件包括与函数对应的桩函数ID、桩函数调用中断以及桩函数调用返回值。本申请实施例建立的虚拟机在执行目标程序时不会向在真实系统中执行时那样真正的去调用系统中的函数真正的调用函数中的参数实现调用目的。既可以大大的减小虚拟机的磁盘占用空间,加速执行速度,又可以细粒度的控制桩函数执行行为,为基于动态行为的启发式病毒检测提供技术保障。
Description
技术领域
本申请涉及计算机安全技术领域,尤其是涉及到一种虚拟机的模拟方法及装置、存储介质、计算机设备。
背景技术
随着计算机技术的不断发展,现在,无论是在日常生活中还是在工作中,计算机都已经成为人们不可或缺的伙伴,为人们的工作和生活带来了很多的便利,但是在这之中有一个不和谐的因素,那就是计算机病毒。
针对由计算机病毒带来的计算机安全方面的问题,现在几乎任何企业或个人都会使用杀毒软件,但是现在的杀毒软件大多是基于病毒库中包括的病毒特征进行病毒查杀,即若计算机中的某个程序命中了病毒库中的病毒特征,则判定该程序为病毒程序,很显然,若出现新型病毒或变种病毒,利用病毒库将难以应对。
因此本申请提出了采用虚拟机引擎进行启发式病毒检测的方法,但是在目前开发虚拟机引擎的过程中,发现在搭建好虚拟机架构后,如果完全按照真实系统模拟虚拟机,让虚拟机加载真实系统可执行文件,会造成虚拟机便的非常的臃肿庞大,执行效率差,且无法很好的控制API的执行行为,达不到病毒动态行为分析的目的。
如何建立一种更适用于病毒检测的虚拟机,成为了计算机安全领域的重点课题。
发明内容
有鉴于此,本申请提供了一种虚拟机的模拟方法及装置、存储介质、计算机设备。
根据本申请的一个方面,提供了一种虚拟机的模拟方法,包括:
获取真实系统中的可执行文件对应的可执行文件头;
根据所述可执行文件头导出所述可执行文件对应的函数;
利用所述可执行文件对应的函数以及所述可执行文件头,在虚拟机中建立虚拟可执行文件,其中,所述虚拟可执行文件包括与所述函数对应的桩函数ID、桩函数调用中断以及桩函数调用返回值。
具体地,所述在虚拟机中建立虚拟可执行文件之后,所述方法还包括:
当目标程序在所述虚拟机中执行时,调用所述虚拟可执行文件;
响应于所述目标程序对所述虚拟可执行文件中的目标桩函数调用,通过相应的所述桩函数调用中断实现所述目标程序对所述目标桩函数的调用,其中,通过目标桩函数ID确定相应的所述桩函数调用中断;
根据所述目标程序调用的所述目标桩函数以及所述桩函数调用返回值,输出所述目标程序的执行结果。
具体地,所述方法还包括:
记录所述目标程序在所述虚拟机中执行时调用的所述桩函数ID;
根据所述目标程序所调用的所述桩函数ID,判断所述目标程序是否为恶意程序。
具体地,所述根据所述目标程序所调用的所述桩函数ID,判断所述目标程序是否为恶意程序,具体包括:
根据所述目标程序所调用的所述桩函数ID,确定所述目标程序的执行序列,并从所述执行序列中解析出所述目标程序的执行特征;
查询所述目标程序的执行特征是否属于预设执行特征黑名单中包含的恶意执行特征;
若所述目标程序的执行特征属于所述恶意执行特征,则确定所述目标程序为恶意程序。
具体地,所述从所述执行序列中解析出所述目标程序的执行特征之后,所述方法还包括:
查询所述目标程序的执行特征是否属于预设执行特征白名单中包含的安全执行特征;
若所述目标程序的执行特征属于所述安全执行特征,则确定所述目标程序为安全程序。
具体地,所述桩函数调用返回值为空或者预设值。
根据本申请的另一方面,提供了一种虚拟机的模拟装置,包括:
文件头获取模块,用于获取真实系统中的可执行文件对应的可执行文件头;
函数导出模块,用于根据所述可执行文件头导出所述可执行文件对应的函数;
虚拟机建立模块,用于利用所述可执行文件对应的函数以及所述可执行文件头,在虚拟机中建立虚拟可执行文件,其中,所述虚拟可执行文件包括与所述函数对应的桩函数ID、桩函数调用中断以及桩函数调用返回值。
具体地,所述装置还包括:
目标程序执行模块,用于在虚拟机中建立虚拟可执行文件之后,当目标程序在所述虚拟机中执行时,调用所述虚拟可执行文件;
桩函数调用模块,用于响应于所述目标程序对所述虚拟可执行文件中的目标桩函数调用,通过相应的所述桩函数调用中断实现所述目标程序对所述目标桩函数的调用,其中,通过目标桩函数ID确定相应的所述桩函数调用中断;
执行结果输出模块,用于根据所述目标程序调用的所述目标桩函数以及所述桩函数调用返回值,输出所述目标程序的执行结果。
具体地,所述装置还包括:
调用记录模块,用于记录所述目标程序在所述虚拟机中执行时调用的所述桩函数ID;
恶意程序判断模块,用于根据所述目标程序所调用的所述桩函数ID,判断所述目标程序是否为恶意程序。
具体地,所述恶意程序判断模块,具体包括:
执行特征解析单元,用于根据所述目标程序所调用的所述桩函数ID,确定所述目标程序的执行序列,并从所述执行序列中解析出所述目标程序的执行特征;
恶意特征查询单元,用于查询所述目标程序的执行特征是否属于预设执行特征黑名单中包含的恶意执行特征;
恶意程序判断单元,用于若所述目标程序的执行特征属于所述恶意执行特征,则确定所述目标程序为恶意程序。
具体地,所述恶意程序判断模块还包括:
安全特征查询单元,用于从所述执行序列中解析出所述目标程序的执行特征之后,查询所述目标程序的执行特征是否属于预设执行特征白名单中包含的安全执行特征;
安全程序判断单元,用于若所述目标程序的执行特征属于所述安全执行特征,则确定所述目标程序为安全程序。
具体地,所述桩函数调用返回值为空或者预设值。
依据本申请又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述虚拟机的模拟方法。
依据本申请再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述虚拟机的模拟方法。
借由上述技术方案,本申请提供的一种虚拟机的模拟方法及装置、存储介质、计算机设备,通过对真实系统中的可执行文件的模拟建立虚拟机,以实现利用虚拟机执行样本程序时,虚拟机通过虚拟cpu的异常处理机制,响应对桩函数的调用,通过桩函数调用中断指向桩函数的唯一ID,指向虚拟操作系统中,完成样本程序的执行。本申请实施例建立的虚拟机在执行目标程序时不会向在真实系统中执行时那样真正的去调用系统中的函数真正的调用函数中的参数实现调用目的,而是只利用桩函数进行简单的函数调用返回预先设定好的桩函数调用返回值。既可以大大的减小虚拟机的磁盘占用空间,加速执行速度,又可以细粒度的控制桩函数执行行为,为基于动态行为的启发式病毒检测提供技术保障。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了本申请实施例提供的一种虚拟机的模拟方法的流程示意图;
图2示出了本申请实施例提供的另一种虚拟机的模拟方法的流程示意图;
图3示出了本申请实施例提供的一种虚拟机的模拟装置的结构示意图;
图4示出了本申请实施例提供的另一种虚拟机的模拟装置的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本实施例中提供了一种虚拟机的模拟方法,如图1所示,该方法包括:
步骤101,获取真实系统中的可执行文件对应的可执行文件头;
步骤102,根据可执行文件头导出可执行文件对应的函数;
步骤103,利用可执行文件对应的函数以及可执行文件头,在虚拟机中建立虚拟可执行文件,其中,虚拟可执行文件包括与函数对应的桩函数ID、桩函数调用中断以及桩函数调用返回值。
在上述实施例中,提供了一种可以虚拟机的可执行文件配置方法,配置的虚拟机主要可以用于病毒检测。本申请之所以提出利用上述方法配置虚拟机中的可执行文件,从而利用虚拟机进行病毒检测,这是因为在现有技术中,通常是利用预先建立好的病毒库,依据病毒库中保存的病毒程序本身所包含的病毒特征,对待检测程序的特征进行病毒特征匹配,若待检测程序的特征命中病毒库则说明该程序为带毒程序。如果出现新型病毒或者变种病毒,利用原来的病毒库很难准确检测出来,无法实现对未知病毒的防御。但是病毒程序往系统目录写入文件、读写引导区、写注册表启动项、打开其它进程、读写其它进程、动态加载DLL、动态获取API地址等操作,对于家族类的病毒,可能存在引用相同的库函数,使用相同的图标,使用比较独特的导入模块等等的一系列执行特征。可以利用这一特性,本申请实施例可以利采用启发式病毒查杀,启发式病毒查杀指的是利用待检测的程序在执行过程中显现出的执行特征判断该程序是否为带毒程序。具体来说,分析病毒程序的执行行为的通用特征,而后根据病毒程序的通用执行特征进行病毒检测。
另外,在现有的获取目标程序执行特征的方法中,通常采用向目标进程注入DLL,在DLL中对调用函数进行API hook的方式进行监控,这种方式主要存在下述两种缺陷,其一,目标进程可能存在防注入、防API hook等的对抗手段,阻止执行序列被获取,其二,会对真实的计算机环境产生影响,在发现病毒的同时,可能病毒已经感染了计算机系统。但是虚拟机技术可以克服上述缺陷,因此本申请实施例利用虚拟机技术,将需要进行病毒检测的目标程序放在虚拟机中执行,由于虚拟机是对真实计算机的模拟,若目标程序在真实计算机中执行时调用某函数,则在虚拟机中执行时就会调用与该函数对应的桩函数,因此,通过记录目标程序在虚拟机中执行所调用的桩函数即可获知该程序若在真实计算机中执行时会对哪些函数进行调用。不仅可以有效的获取到目标程序的执行序列方便执行特征的解析,而且不会对真实计算机环境造成影响保护了计算机的安全。
基于上述的说明内容,在步骤101至步骤103中,首先,获取虚拟机需要模拟的真实系统中的可执行文件对应的可执行文件头,例如获取系统DLL的PE头,然后,根据获取到的可执行文件头导出函数表,函数表中包含可执行文件对应的函数,最后,利用函数表在虚拟机中建立相应的虚拟可执行文件,即在虚拟机中建立函数表中包含的函数所对应的桩函数,在虚拟机中新建的桩函数应包含桩函数的ID、桩函数调用中断以及根据配置文件配置的桩函数调用返回值,这些虚拟机中的虚拟可执行文件只包含简单的执行实现,样本程序在虚拟机中执行时,调用虚拟机内的模拟可执行文件,虚拟机通过虚拟cpu的异常处理机制,响应对桩函数的调用,通过桩函数调用中断指向桩函数的唯一ID,指向虚拟操作系统中,实现样本程序的执行。从而样本文件在虚拟机中执行时,不会向在真实系统中执行时那样真正的去调用系统中的函数真正的调用函数中的参数实现调用目的,而是只利用桩函数进行简单的函数调用返回预先设定好的桩函数调用返回值,在建立的虚拟机中执行样本程序时只需要能够获取到相应的执行调用函数即可,以便利用执行调用函数分析样本程序是否包含病毒。既可以大大的减小虚拟机的磁盘占用空间,加速执行速度,又可以细粒度的控制桩函数执行行为,为基于动态行为的启发式病毒检测提供技术保障。
通过应用本实施例的技术方案,通过对真实系统中的可执行文件的模拟建立虚拟机,以实现利用虚拟机执行样本程序时,虚拟机通过虚拟cpu的异常处理机制,响应对桩函数的调用,通过桩函数调用中断指向桩函数的唯一ID,指向虚拟操作系统中,完成样本程序的执行。本申请实施例建立的虚拟机在执行目标程序时不会向在真实系统中执行时那样真正的去调用系统中的函数真正的调用函数中的参数实现调用目的,而是只利用桩函数进行简单的函数调用返回预先设定好的桩函数调用返回值。既可以大大的减小虚拟机的磁盘占用空间,加速执行速度,又可以细粒度的控制桩函数执行行为,为基于动态行为的启发式病毒检测提供技术保障。
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了另一种虚拟机的模拟方法,如图2所示,该方法包括:
步骤201,获取真实系统中的可执行文件对应的可执行文件头;
步骤202,根据可执行文件头导出可执行文件对应的函数;
步骤203,利用可执行文件对应的函数以及可执行文件头,在虚拟机中建立虚拟可执行文件,其中,虚拟可执行文件包括与函数对应的桩函数ID、桩函数调用中断以及桩函数调用返回值。
在本申请任一实施例中,具体地,桩函数调用返回值为空或者预设值。
在上述实施例中,利用步骤201至步骤203提供的方法建立的虚拟机,桩函数的调用返回值置空或者置为预设参数,提高目标程序执行效率。
步骤204,当目标程序在虚拟机中执行时,调用虚拟可执行文件;
步骤205,响应于目标程序对虚拟可执行文件中的目标桩函数调用,通过相应的桩函数调用中断实现目标程序对目标桩函数的调用,其中,通过目标桩函数ID确定相应的桩函数调用中断;
步骤206,根据目标程序调用的目标桩函数以及桩函数调用返回值,输出目标程序的执行结果。
步骤207,记录目标程序在虚拟机中执行时调用的桩函数ID;
步骤208,根据目标程序所调用的桩函数ID,判断目标程序是否为恶意程序。
在上述实施例中,步骤204至步骤208中限定了检测目标程序中是否包含病毒的方法。当目标程序在虚拟机中执行,需要执行调用虚拟机中的目标桩函数时,利用与目标桩函数ID相应的桩函数调用中断实现对目标桩函数的调用,并在目标程序对虚拟机中桩函数进行调用时,不像真实计算机系统那样真正的执行目标程序,而是可以直接根据预先设定的桩函数调用返回值输出目标程序的执行结果,并且将目标程序在虚拟机中调用的桩函数ID记录下来,即记录目标程序的桩函数执行序列,从而据此判断目标程序是否为包含病毒的恶意程序。
作为步骤208的一种具体实施例,步骤208可以包括:
步骤A1,根据目标程序所调用的桩函数ID,确定目标程序的执行序列,并从执行序列中解析出目标程序的执行特征;
步骤A2,查询目标程序的执行特征是否属于预设执行特征黑名单中包含的恶意执行特征;
步骤A3,若目标程序的执行特征属于恶意执行特征,则确定目标程序为恶意程序。
步骤A4,查询目标程序的执行特征是否属于预设执行特征白名单中包含的安全执行特征;
步骤A5,若目标程序的执行特征属于安全执行特征,则确定目标程序为安全程序。
在上述实施例中,先对记录的桩函数执行序列进行解析,将执行序列“翻译”成相应的特征,例如将一系列的执行代码翻译成流程说明的形式,用目标程序的执行特征作为病毒检测的依据。然后,利用预设执行特征名单对目标程序是否带毒进行判定,预设执行特征名单包括黑名单和白名单,黑名单中预先存储了病毒程序对应的恶意执行特征,白名单中预先存储了安全程序对应的安全执行特征。从而根据目标程序的执行特征是否能够命中黑名单或白名单判定该目标程序是否为带毒程序,若命中黑名单,则为带毒程序,若命中白名单,则为安全程序,而若目标程序的执行特征即没有命中黑名单也没有命中白名单,则判断该程序为可疑程序,并将可疑程序上报至病毒管理系统进一步对该程序进行判定,病毒管理系统具体可以为专家系统。
作为步骤208的另一种具体实施例,步骤208可以包括:
步骤B1,根据目标程序的执行特征以及预设执行特征报毒经验值,计算目标程序的报毒检测值,其中,目标程序的报毒检测值为目标程序的执行特征对应的预设执行特征报毒经验值之和;
步骤B2,按照目标程序的报毒检测值与预设病毒经验值的关系,确定目标程序是否包含病毒。
下面对上述实施例进行举例说明,假设目标程序的执行特征包括A、B、C、D,预设执行特征报毒经验值分别为0、1、2、3,那么该目标程序的报毒检测值为0+1+2+3=6,预设病毒经验值为[5,+∞),该程序的报毒检测值在病毒经验值区间内,可以判断该程序包含病毒。其中,预设病毒经验值是根据对大量病毒样本以及安全样本进行分析而得出的,预设病毒经验值作为一个分隔,将病毒样本的报毒经验值和安全样本的报毒经验值做出最大区分。
在此基础上,还可以进一步判定目标程序是否安全程序或可疑程序,具体来说,还可以限定安全程序的预设经验值和/或可疑程序的预设经验值,具体步骤B2可以为:按照目标程序的报毒检测值与预设病毒经验值、预设安全经验值以及预设可疑经验值的关系,对目标程序进行安全检测。
在步骤B2中,根据目标程序的报毒检测值所处的经验值区间,判定目标程序是病毒程序、安全程序还是可疑程序。
另外,如果为可疑程序还可以上报病毒管理系统,从而利用病毒管理系统来判断目标程序是否带毒,并根据病毒管理系统的判断结果,对各个预设经验值进行适应性的调整,以提高病毒检测的准确率和效率。
进一步的,作为图1方法的具体实现,本申请实施例提供了一种虚拟机的模拟装置,如图3所示,该装置包括:文件头获取模块31、函数导出模块32、虚拟机建立模块33。
文件头获取模块31,用于获取真实系统中的可执行文件对应的可执行文件头;
函数导出模块32,用于根据可执行文件头导出可执行文件对应的函数;
虚拟机建立模块33,用于利用可执行文件对应的函数以及可执行文件头,在虚拟机中建立虚拟可执行文件,其中,虚拟可执行文件包括与函数对应的桩函数ID、桩函数调用中断以及桩函数调用返回值。
在具体的应用场景中,如图4所示,该装置还包括:目标程序执行模块34、桩函数调用模块35、执行结果输出模块36。
目标程序执行模块34,用于在虚拟机中建立虚拟可执行文件之后,当目标程序在虚拟机中执行时,调用虚拟可执行文件;
桩函数调用模块35,用于响应于目标程序对虚拟可执行文件中的目标桩函数调用,通过相应的桩函数调用中断实现目标程序对目标桩函数的调用,其中,通过目标桩函数ID确定相应的桩函数调用中断;
执行结果输出模块36,用于根据目标程序调用的目标桩函数以及桩函数调用返回值,输出目标程序的执行结果。
在具体的应用场景中,如图4所示,该装置还包括:调用记录模块37、恶意程序判断模块38。
调用记录模块37,用于记录目标程序在虚拟机中执行时调用的桩函数ID;
恶意程序判断模块38,用于根据目标程序所调用的桩函数ID,判断目标程序是否为恶意程序。
在具体的应用场景中,如图4所示,恶意程序判断模块38,具体包括:执行特征解析单元381、恶意特征查询单元382、恶意程序判断单元383。
执行特征解析单元381,用于根据目标程序所调用的桩函数ID,确定目标程序的执行序列,并从执行序列中解析出目标程序的执行特征;
恶意特征查询单元382,用于查询目标程序的执行特征是否属于预设执行特征黑名单中包含的恶意执行特征;
恶意程序判断单元383,用于若目标程序的执行特征属于恶意执行特征,则确定目标程序为恶意程序。
在具体的应用场景中,如图4所示,该装置还包括:安全特征查询单元384、安全程序判断单元385。
安全特征查询单元384,用于从执行序列中解析出目标程序的执行特征之后,查询目标程序的执行特征是否属于预设执行特征白名单中包含的安全执行特征;
安全程序判断单元385,用于若目标程序的执行特征属于安全执行特征,则确定目标程序为安全程序。
具体地,桩函数调用返回值为空或者预设值。
在具体的应用场景中,该装置还可以用于:
步骤B1,根据目标程序的执行特征以及预设执行特征报毒经验值,计算目标程序的报毒检测值,其中,目标程序的报毒检测值为目标程序的执行特征对应的预设执行特征报毒经验值之和;
步骤B2,按照目标程序的报毒检测值与预设病毒经验值的关系,确定目标程序是否包含病毒。
下面对上述实施例进行举例说明,假设目标程序的执行特征包括A、B、C、D,预设执行特征报毒经验值分别为0、1、2、3,那么该目标程序的报毒检测值为0+1+2+3=6,预设病毒经验值为[5,+∞),该程序的报毒检测值在病毒经验值区间内,可以判断该程序包含病毒。其中,预设病毒经验值是根据对大量病毒样本以及安全样本进行分析而得出的,预设病毒经验值作为一个分隔,将病毒样本的报毒经验值和安全样本的报毒经验值做出最大区分。
在此基础上,还可以进一步判定目标程序是否安全程序或可疑程序,具体来说,还可以限定安全程序的预设经验值和/或可疑程序的预设经验值,具体步骤B2可以为:按照目标程序的报毒检测值与预设病毒经验值、预设安全经验值以及预设可疑经验值的关系,对目标程序进行安全检测。
在步骤B2中,根据目标程序的报毒检测值所处的经验值区间,判定目标程序是病毒程序、安全程序还是可疑程序。
另外,如果为可疑程序还可以上报病毒管理系统,从而利用病毒管理系统来判断目标程序是否带毒,并根据病毒管理系统的判断结果,对各个预设经验值进行适应性的调整,以提高病毒检测的准确率和效率。
需要说明的是,本申请实施例提供的一种虚拟机的模拟装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
基于上述如图1和图2所示方法,相应的,本申请实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1和图2所示的虚拟机的模拟方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
基于上述如图1、图2所示的方法,以及图3、图4所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1和图2所示的虚拟机的模拟方法。
可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、WI-FI接口)等。
本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现通过对真实系统中的可执行文件的模拟建立虚拟机,以实现利用虚拟机执行样本程序时,虚拟机通过虚拟cpu的异常处理机制,响应对桩函数的调用,通过桩函数调用中断指向桩函数的唯一ID,指向虚拟操作系统中,完成样本程序的执行。本申请实施例建立的虚拟机在执行目标程序时不会向在真实系统中执行时那样真正的去调用系统中的函数真正的调用函数中的参数实现调用目的,而是只利用桩函数进行简单的函数调用返回预先设定好的桩函数调用返回值。既可以大大的减小虚拟机的磁盘占用空间,加速执行速度,又可以细粒度的控制桩函数执行行为,为基于动态行为的启发式病毒检测提供技术保障。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
Claims (10)
1.一种虚拟机的模拟方法,其特征在于,包括:
获取真实系统中的可执行文件对应的可执行文件头;
根据所述可执行文件头导出所述可执行文件对应的函数;
利用所述可执行文件对应的函数以及所述可执行文件头,在虚拟机中建立虚拟可执行文件,其中,所述虚拟可执行文件包括与所述函数对应的桩函数ID、桩函数调用中断以及桩函数调用返回值;
当目标程序在所述虚拟机中执行时,调用所述虚拟可执行文件;
响应于所述目标程序对所述虚拟可执行文件中的目标桩函数调用,通过相应的所述桩函数调用中断实现所述目标程序对所述目标桩函数的调用,其中,通过目标桩函数ID确定相应的所述桩函数调用中断;
根据所述目标程序调用的所述目标桩函数以及所述桩函数调用返回值,输出所述目标程序的执行结果;
记录所述目标程序在所述虚拟机中执行时调用的所述桩函数ID;
根据所述目标程序所调用的所述桩函数ID,判断所述目标程序是否为恶意程序。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标程序所调用的所述桩函数ID,判断所述目标程序是否为恶意程序,具体包括:
根据所述目标程序所调用的所述桩函数ID,确定所述目标程序的执行序列,并从所述执行序列中解析出所述目标程序的执行特征;
查询所述目标程序的执行特征是否属于预设执行特征黑名单中包含的恶意执行特征;
若所述目标程序的执行特征属于所述恶意执行特征,则确定所述目标程序为恶意程序。
3.根据权利要求2所述的方法,其特征在于,所述从所述执行序列中解析出所述目标程序的执行特征之后,所述方法还包括:
查询所述目标程序的执行特征是否属于预设执行特征白名单中包含的安全执行特征;
若所述目标程序的执行特征属于所述安全执行特征,则确定所述目标程序为安全程序。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述桩函数调用返回值为空或者预设值。
5.一种虚拟机的模拟装置,其特征在于,包括:
文件头获取模块,用于获取真实系统中的可执行文件对应的可执行文件头;
函数导出模块,用于根据所述可执行文件头导出所述可执行文件对应的函数;
虚拟机建立模块,用于利用所述可执行文件对应的函数以及所述可执行文件头,在虚拟机中建立虚拟可执行文件,其中,所述虚拟可执行文件包括与所述函数对应的桩函数ID、桩函数调用中断以及桩函数调用返回值;
目标程序执行模块,用于在虚拟机中建立虚拟可执行文件之后,当目标程序在所述虚拟机中执行时,调用所述虚拟可执行文件;
桩函数调用模块,用于响应于所述目标程序对所述虚拟可执行文件中的目标桩函数调用,通过相应的所述桩函数调用中断实现所述目标程序对所述目标桩函数的调用,其中,通过目标桩函数ID确定相应的所述桩函数调用中断;
执行结果输出模块,用于根据所述目标程序调用的所述目标桩函数以及所述桩函数调用返回值,输出所述目标程序的执行结果;
调用记录模块,用于记录所述目标程序在所述虚拟机中执行时调用的所述桩函数ID;
恶意程序判断模块,用于根据所述目标程序所调用的所述桩函数ID,判断所述目标程序是否为恶意程序。
6.根据权利要求5所述的装置,其特征在于,所述恶意程序判断模块,具体包括:
执行特征解析单元,用于根据所述目标程序所调用的所述桩函数ID,确定所述目标程序的执行序列,并从所述执行序列中解析出所述目标程序的执行特征;
恶意特征查询单元,用于查询所述目标程序的执行特征是否属于预设执行特征黑名单中包含的恶意执行特征;
恶意程序判断单元,用于若所述目标程序的执行特征属于所述恶意执行特征,则确定所述目标程序为恶意程序。
7.根据权利要求6所述的装置,其特征在于,所述恶意程序判断模块还包括:
安全特征查询单元,用于从所述执行序列中解析出所述目标程序的执行特征之后,查询所述目标程序的执行特征是否属于预设执行特征白名单中包含的安全执行特征;
安全程序判断单元,用于若所述目标程序的执行特征属于所述安全执行特征,则确定所述目标程序为安全程序。
8.根据权利要求6至7中任一项所述的装置,其特征在于,所述桩函数调用返回值为空或者预设值。
9.一种存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至4中任一项所述的虚拟机的模拟方法。
10.一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至4中任一项所述的虚拟机的模拟方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910943733.1A CN112580024B (zh) | 2019-09-30 | 2019-09-30 | 虚拟机的模拟方法及装置、存储介质、计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910943733.1A CN112580024B (zh) | 2019-09-30 | 2019-09-30 | 虚拟机的模拟方法及装置、存储介质、计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112580024A CN112580024A (zh) | 2021-03-30 |
CN112580024B true CN112580024B (zh) | 2023-08-01 |
Family
ID=75116841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910943733.1A Active CN112580024B (zh) | 2019-09-30 | 2019-09-30 | 虚拟机的模拟方法及装置、存储介质、计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112580024B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110055A (zh) * | 2007-08-31 | 2008-01-23 | 中兴通讯股份有限公司 | 在单元测试中实现通用桩函数的装置及其实现方法 |
CN103207969A (zh) * | 2013-04-12 | 2013-07-17 | 百度在线网络技术(北京)有限公司 | 检测Android恶意软件的装置以及方法 |
CN105183642A (zh) * | 2015-08-18 | 2015-12-23 | 中国人民解放军信息工程大学 | 基于插桩的程序行为获取及结构分析方法 |
CN106354630A (zh) * | 2016-08-23 | 2017-01-25 | 电子科技大学 | 一种基于动态符号执行的软件缺陷检测方法 |
CN110210219A (zh) * | 2018-05-30 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 病毒文件的识别方法、装置、设备及存储介质 |
-
2019
- 2019-09-30 CN CN201910943733.1A patent/CN112580024B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110055A (zh) * | 2007-08-31 | 2008-01-23 | 中兴通讯股份有限公司 | 在单元测试中实现通用桩函数的装置及其实现方法 |
CN103207969A (zh) * | 2013-04-12 | 2013-07-17 | 百度在线网络技术(北京)有限公司 | 检测Android恶意软件的装置以及方法 |
CN105183642A (zh) * | 2015-08-18 | 2015-12-23 | 中国人民解放军信息工程大学 | 基于插桩的程序行为获取及结构分析方法 |
CN106354630A (zh) * | 2016-08-23 | 2017-01-25 | 电子科技大学 | 一种基于动态符号执行的软件缺陷检测方法 |
CN110210219A (zh) * | 2018-05-30 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 病毒文件的识别方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112580024A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10389740B2 (en) | Detecting a malicious file infection via sandboxing | |
US9348998B2 (en) | System and methods for detecting harmful files of different formats in virtual environments | |
US11356467B2 (en) | Log analysis device, log analysis method, and log analysis program | |
CN106709325B (zh) | 一种监控程序的方法及装置 | |
Chaba et al. | Malware detection approach for android systems using system call logs | |
Eder et al. | Ananas-a framework for analyzing android applications | |
JP6711000B2 (ja) | 情報処理装置、ウィルス検出方法及びプログラム | |
Dai et al. | Behavior-based malware detection on mobile phone | |
CN112084497A (zh) | 嵌入式Linux系统恶意程序检测方法及装置 | |
CN112580041B (zh) | 恶意程序检测方法及装置、存储介质、计算机设备 | |
CN108984265B (zh) | 检测虚拟机环境的方法及装置 | |
CN112580024B (zh) | 虚拟机的模拟方法及装置、存储介质、计算机设备 | |
Dam et al. | Learning android malware | |
Lim et al. | Mal-ONE: A unified framework for fast and efficient malware detection | |
US20220327207A1 (en) | Arrangement and method of threat detection in a computer or computer network | |
CN113569240B (zh) | 恶意软件的检测方法、装置及设备 | |
CN112580043B (zh) | 基于虚拟机的杀毒方法及装置、存储介质、计算机设备 | |
CN112580025A (zh) | 基于虚拟机的报毒方法及装置、存储介质、计算机设备 | |
CN112580033B (zh) | 恶意程序的对抗方法及装置、存储介质、计算机设备 | |
CN112580042B (zh) | 恶意程序的对抗方法及装置、存储介质、计算机设备 | |
Yung et al. | Static and dynamic integrated analysis scheme for android malware | |
EP2819055A1 (en) | System and method for detecting malicious software using malware trigger scenarios | |
CN112580035B (zh) | 程序脱壳方法及装置、存储介质、计算机设备 | |
CN112579249A (zh) | 多cpu虚拟机的运行方法及装置、存储介质、计算机设备 | |
WO2019049478A1 (ja) | コールスタック取得装置、コールスタック取得方法およびコールスタック取得プログラム |
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 |