CN103678126B - 用于提高应用仿真加速的效率的系统和方法 - Google Patents
用于提高应用仿真加速的效率的系统和方法 Download PDFInfo
- Publication number
- CN103678126B CN103678126B CN201310652562.XA CN201310652562A CN103678126B CN 103678126 B CN103678126 B CN 103678126B CN 201310652562 A CN201310652562 A CN 201310652562A CN 103678126 B CN103678126 B CN 103678126B
- Authority
- CN
- China
- Prior art keywords
- efficiency
- software code
- execution
- need
- under investigation
- 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
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- 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
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
用于提高应用仿真加速的效率的系统和方法。用于分析软件代码的经改进的仿真器以及相关联的方法。仿真器包括虚拟执行环境和硬件加速器,在虚拟执行环境中在软件代码的第一部分的仿真期间表示一系列虚拟处理状态,硬件加速器实施计算硬件的初始化以在虚拟执行环境中直接执行处于调查之下的软件代码的第二部分而不用对其进行仿真。效率评估模块确定对处于调查之下的软件代码的第二部分的不用对其进行仿真的执行加以实施的效率的测度,并且加速决策模块基于所确定的效率的测度来实施对要由硬件加速器模块直接执行的处于调查之下的软件代码的第二部分的选择。
Description
优先权声明
本申请要求于2012年12月25日提交的2012156445号俄罗斯联邦专利申请的优先权,通过援引的方式并入本文。
技术领域
本发明总地涉及信息处理和安全技术,并且,更具体地,涉及受到功能分析的软件代码的自动的选择性仿真。
背景技术
如今的程序,包括恶意程序,其结构是以下指令的复杂集合:迁移、过程调用、循环等。应注意的是由于高级编程语言的日益普及以及计算机设备和操作系统的复杂,可执行文件的复杂性持续增加。恶意应用可实施若干具体动作,诸如:盗窃密码和其他机密用户数据、连接计算机到机器人网络(bot network)以实行拒绝服务(DoS)攻击或发送垃圾邮件、干扰系统的正常运行以通过许诺恢复可操作性来从用户敲诈钱财(例如勒索软件)、以及从用户的观点看来是负面的和不良的其他动作。
用于核查潜在恶意程序的已知方法之一是基于作为反病毒应用的一部分所应用的仿真器的使用来分析程序行为。存在各种程序仿真的方法。在一个方法中,仿真器经编程以通过创建处理器的寄存器、存储器和处理器指令集的虚拟拷贝来模仿实际处理器、存储器和其他设备。这样,程序指令不在实际处理器上、而是在其虚拟表示上执行,其中系统API函数调用被拦截在仿真器中并被模仿,例如,所期望的回复被发送回所仿真的应用。
在仿真期间,处理器指令的执行一般由指令的动态转译所实行。动态转译涉及将指令从初始集合(即要被仿真的原始指令)转译成要使用仿真器来执行的指令的专用集合。下文使用一个指令的转译作为示例来讨论动态转译:
初始指令:
mov eax,[edi]
所转译的伪代码涉及下列步骤的集合:
1.读取edi
2.以在第一操作中所接收的地址读取存储器
3.在第二操作中将从存储器所读取的值写到eax
另外,这种伪代码的每个步骤将包含一定数目的机器指令;结果,一个初始指令当被转译时,造成处理器中的数十个或甚至数百个指令的执行。应注意的是,一旦被转译,则代码不需要在另一个执行处再次被转译,这是因为代码转译操作已经执行过。考虑到多数代码在循环内执行,动态二进制转译是公知的和普遍存在的技术。
为反制程序代码仿真,恶意程序的创造者使用各种方法,其倾向于利用仿真进程的限制以及对反病毒解决方案中的仿真器的设计的限制。这些方法之一涉及添加大量指令到程序代码,其不承载恶意组件但需要过多的时间用于仿真。考虑到为程序代码仿真所分配的时间受到限制以避免用户不满(该时间通常可以是数秒)的事实,在恶意代码的执行之前仿真进程可能停止。
用于反制这种方法的技术之一在7,603,713号美国专利中描述,其公开通过援引的方式并入本文。其操作包括在实际处理器上、而不是在利用动态二进制转译的仿真器中执行若干指令,从而显著加速未知应用的仿真。
虽然该方法对降低执行大量指令所需的时间可以相当有益,但仍有某些缺点。一个这种缺点与以下的事实有关,即例如当异常时,例如不得不响应API函数调用,则使用实际处理器的指令的所加速的执行停止。考虑到仿真加速器需要初始化,其倾向于是消耗资源的进程,因此在某些在不得不将执行返回到通常的仿真器之前加速器仅执行几个指令的情况下,加速器可能仅得到边际收益,或甚至产生相反效果。
因此,存在着对提高仿真加速的效率的有效解决方案的需求。
发明内容
本发明的一个方面针对用于利用包括计算硬件和数据存储的计算机系统来仿真处于调查之下的软件代码的方法,所述计算硬件包括至少一个处理器。根据该方法,执行虚拟执行环境,在虚拟执行环境中处于调查之下的软件代码的第一部分被仿真并且其中在该第一部分的仿真期间表示一系列虚拟处理状态。作为示例,虚拟执行环境可利用动态二进制转译。
执行软件代码的第二部分而不用对其进行仿真。例如,可在至少一个处理器上执行第二部分而不用动态二进制转译。
在不用进行仿真地执行软件代码的第二部分之前,根据在软件代码的第二部分前的系列虚拟处理状态之一来初始化计算硬件。针对软件代码的第二部分的不用进行仿真的执行来确定效率的测度。基于效率的测度与效率标准的比较来确定软件代码的第二部分的不用进行仿真的执行的适宜性。这些动作由处于程序控制之下操作的计算硬件所实行。
在本发明的另一方面中,用于检测处于调查之下的软件代码中的恶意软件的安全布置包括计算硬件和数据存储,该计算硬件包括至少一个处理器,该数据存储包含当执行时使计算硬件建立仿真器系统的指令。仿真器系统包括虚拟执行环境以及硬件加速器模块,在虚拟执行环境中在软件代码的第一部分的仿真期间表示一系列虚拟处理状态,所述硬件加速器模块实施计算硬件的初始化以在虚拟执行环境中直接执行处于调查之下的软件代码的第二部分而不用对其进行仿真。系统进一步包括效率评估模块以及加速决策模块,所述效率评估模块确定对处于调查之下的软件代码的第二部分的不用对其进行仿真的执行加以实施的效率的测度,所述加速决策模块基于所确定的效率的测度来实施对要由硬件加速器模块直接执行的处于调查之下的软件代码的第二部分的选择。
附图说明
结合附图参考本发明的各种实施例的以下详细描述可更完整地理解本发明,其中:
图1是示出由基本块所表示的典型的应用执行序列的示例的图。
图2是示出对程序仿真的基于硬件的加速的已知系统的框图。
图3是根据本发明的一个实施例的、示出用于加速仿真的改进系统的框图。
图4是根据本发明的一个实施例的、示出用于加速仿真的方法的流程图。
图5是示出通用计算机系统的示例的框图,在该计算机系统上可实行本发明的各方面。
虽然本发明可修正为各种修改和替代形式,但其细节已在图中通过示例的方式示出,并将进行详细描述。然而,应予以理解的是,不旨在将本发明限于所描述的特定实施例。相反,旨在覆盖落入由附加权利要求所定义的本发明的精神和范围内的所有修改、等同物以及替代物。
具体实施方式
图1是示出由基本块所表示的典型的应用执行序列的示例的图,即所连续执行直到遭遇控制的转移为止的机器指令的序列。在该示例中,基本块描绘为包含指令的矩形,并由有条件和无条件两种迁移所链接。在汇编语言中,指令可由命令所表示,如MOV、ADD、LEA以及其他;指令JZ或JNA可以视为有条件迁移的示例;相反,JMP可以视为无条件迁移指令的示例。重要的是注意多数代码不止执行一次而是数次;这是由于代码的执行大多涉及循环和子例程的执行的事实。这尤其与时常使用代码压缩技术的恶意应用有关,该代码压缩技术诸如例如在SaumyaDebray等人的“Compiler Techniques for Code Compaction”中所描述的那些技术,其通过援引的方式并入本文。这种经压缩的代码在可被执行之前被解包,这要求大量的循环操作。
图2示出用于加速可执行程序的指令的执行的已知系统,诸如在7,603,713号美国专利中所描述的系统,其公开通过援引的方式并入本文。为达到进程230(其在对未知的可执行文件205的仿真期间从该未知的可执行文件205被创建)在加速器220中的加速,仿真器270里的处理器的虚拟拷贝的所有寄存器的条件被直接发送到计算机系统210的主机。加速器220自身是隔离的环境,其中放置进程230的上下文(例如进程的虚拟地址空间、执行流、诸如文件或信号量的资源的开放描述符等)用于主机210内的后续执行,以正确地表示在实际进程的执行中发生了什么。在一段时间里,进程230的指令在实际处理器上执行直到发生异常为止,在该处控制被返回到仿真器270。这种异常的示例包括RDTSC(返回时间戳计数器值)指令的执行、或重新调页(repaging)。当这种异常中的任何一个发生时,控制被转移回到仿真器270。一些指令,诸如特许指令或RDTSC,以通常的方式来仿真即不使用加速器220。特许指令是对外围设备的输入/输出、控制寄存器的加载和保存、任务切换标记的清理等的操作。
合法性或进程的分析在仿真器270中开始,其中前N个指令被处理。N是由专家所挑选的验证参数。该数可近似表示从100到10000个指令。在该情况下,启发式分析器检查正在执行的进程代码与已知恶意应用的行为模式的类似性。这通常在每个指令、指令组之后进行,或一旦完成执行便进行。该比较响应于对由仿真器所创建的进程的执行(或更精确地,执行的仿真)的执行报告而发生。基于执行报告,进程根据其已做出的动作被分类,其中它被视为或者是安全的或者是恶意的。
如果前N个指令未检测到任何危险迹象,则仿真器发送进程到加速器220。为了让加速器正确地实行其功能,所仿真的系统的虚拟处理状态(例如寄存器中的数据、关键存储器位置等)被加载到加速器中使得执行可继续进行而不丢失上下文。此后,进程的执行以实际处理器的操作速度继续进行。
然而,如上所述,在下面的情况中,加速器的效率可能是低的:在其消耗资源的初始化之后,其在实际处理器上仅执行几个指令,接着发生异常—例如API函数的排除(exclusion)或调用,其将使所加速的指令处理被返回到标准仿真器。因此,对于仿真的后续加速,仿真器将需要重新初始化,其消耗相当多的处理器循环并表现出仿真中的时间延迟,在其期间没有实际仿真发生。
根据本发明的一类实施例,上述仿真和加速进程得到改进。图3是示出根据一个实施例的仿真和仿真加速系统的框图。在该示例性系统中,改进的仿真器370包括动态转译模块310和效率评估模块320。
本文所使用的术语“模块”意思是使用硬件或作为硬件和软件的组合所实现的现实中的设备、部件或部件的组合体,所述硬件诸如例如通过专用集成电路(ASIC)或现场可编程门阵列(FPGA),所述硬件和软件的组合诸如通过微处理器系统和使模块适合实现特定功能性的程序指令集,该程序指令集(当正被执行时)将微处理器系统转变为专用设备。模块还可实现为两者的组合,某些功能单独由硬件所促进,以及其他功能由软件和硬件的组合所促进。在某些实现方案中,模块的至少一部分,以及在一些情况下模块的全部,可在执行操作系统、系统程序、以及应用程序的一个或多个计算机(例如集群节点)的处理器上执行,同时在适当情况下还使用多任务、多线程、分布式(例如云)处理、或其他这种技术来实现模块。因此,每个模块可以以多种适宜的配置实现,并且一般不应限于本文所例示的任何特定实现方案,除非特别指出这种限制。
在一个实施例中,动态转译模块310被编程或另外配置为实施未知文件205的代码的动态二进制转译,这之后所转译的代码将保存在存储器中用于后续调用。效率评估模块320被编程或另外配置为评估加速器220已在工作的效率如何。在一个实施例中,根据公式E=N/K评估效率E,其中N表示为使用加速器220处理指令所花费的处理器循环数,并且K表示将仿真进程从仿真器370转移到加速器220所需的已知的或预定的处理器循环数。
根据该实施例,由效率评估模块320基于E的值做出决策。例如,如果E小于1或仅稍大于1,那么加速器220的操作视为低效率。在一个示例中,依照E显著大于1而定义为足够高效率,即加速器220的使用由其已处理过的大量指令证明为合理的。
在各种这样的实施例中,与值E相比较的阈值被定义。例如,阈值可以设置为1.5、2、3、5、10等。根据一个实施例该阈值值可以是固定量。例如,其可基于与直接执行未转译的指令所需的处理器循环数相比较的、实施指令的动态二进制转译以及实施那些所翻译的指令的执行所需的处理器循环的相对量。
在相关实施例中,阈值是动态可调整的。例如,在一个方法中,阈值基于某些所定义的操作条件或系统配置而被自动地调整。例如,可考虑附加的处理器核心的可用性、处理器速度、前端总线速度、当前工作量、正被实行的其他进程的性质及其相对优先级、或其任何组合。
在其他实施例中,效率的测度可根据不同的公式或关系来定义。更一般地,效率的测度可适宜地基于唤起(invoke)加速器所要求的处理程度或时间、并将该时间或处理程度与和对正在讨论的代码的一部分进行加速相关联的时间或处理工作加以关联。因此,在一个实施例中,根据基于对代码的一部分的执行加以实施的计算负载与对加速器的初始化加以实施的计算负载相比较所定义的效率标准,来确定代码的该部分的不用进行仿真(即使用加速器)的执行的适宜性。
在一个实施例中,效率评估模块320存储达到足够的加速器效率、即E的值超过阈值的基本块和/或所转译的指令。同样,在相关实施例中,存储与低E值相对应的基本块。
动态转译模块310被编程或另外配置为实施与效率E不足够高并因此不值得使用加速器的基本块相对应的未知文件205的那些代码指令的动态转译。
图4是示出根据本发明的一个实施例的、用于选择性地应用仿真的加速的方法的流程图。在410,提供未知文件用于仿真,并且在420,使用动态转译模块310开始文件指令的动态转译。随着指令(在420已被转译)的仿真在430继续进行,在某个阶段(例如在440)加速器启动条件得到满足。在第一实例中,这种启动条件可以是某个数目的指令(例如,数目可以从100到10000个指令变化)的仿真的完成,并且如果对应于那些指令未检测到可疑活动,那么在450唤起加速器220以加速仿真进程。指令由加速器220执行直到发生异常为止,例如API函数调用,其将导致返回到仿真器370中的指令的处理。
其后,在460,加速器220的操作的效率由效率评估模块320所评估,并且在470改变用于唤起加速器220的其启动的标准。在各种实施例中,用于加速器220的唤起的标准的改变涉及例如:
·指定可使用加速器220来执行的某些基本块;或者
·指定仿真进程必须从其开始的某些指令。
有利地,本发明的实施例在加速器的利用中提供选择性。在根据本发明的实施例的良好设计的系统中,考虑到用于加速器的每次唤起所要求的设立时间,针对未知程序的代码可使用加速器被有效率地执行的那些部分,有选择地唤起加速器。
图5是以更详细细节示出计算机系统1的示图,在该计算机系统1上可根据各种实施例实现本文所描述的本发明的各方面。计算机系统1可包括诸如个人计算机2的计算设备。个人计算机2包括一个或多个处理单元4、系统存储器6、视频接口8、输出外围接口10、网络接口12、用户输入接口14、可移动存储器接口16和不可移动存储器接口18以及耦连各种部件的系统总线或高速通信信道20。在各种实施例中,处理单元4可具有能够处理信息的多个逻辑核心,该信息存储在诸如系统存储器6或接附于可移动存储器接口16或不可移动存储器接口18的存储器的计算机可读介质上。计算机2系统存储器6可包括诸如只读存储器(ROM)22的非易失性存储器或诸如随机存储存储器(RAM)24的易失性存储器。ROM22可包括基本输入/输出系统(BIOS)26以帮助与计算机2的其他部分进行通信。RAM24可存储诸如操作系统28、应用程序30以及其他程序模块32的各种软件应用的各部分。进一步地,RAM24可存储诸如程序或应用数据34的其他信息。在各种实施例中,RAM24存储要求低时延和有效率访问的信息,诸如正在被操纵或操作的程序和数据。在各种实施例中,RAM24包括双倍数据速率(DDR)存储器、错误纠正存储器(ECC)或具有变化的时延和配置的其他存储器技术,诸如RAMBUS或DDR2或DDR3。这样,在各种实施例中,系统存储器6可存储输入数据存储、访问证书(credential)数据存储、操作存储器数据存储、指令集数据存储、分析结果数据存储以及操作存储器数据存储。进一步地,在各种实施例中,处理单元4可配置为执行指令,该指令通过在授予对信息的访问权限之前要求访问证书来限制对前述数据存储的访问权限。
可移动存储器接口16和不可移动存储器接口18可将计算机2耦连到诸如SSD或转动式磁盘驱动器的磁盘驱动器36。这些磁盘驱动器36可为诸如操作系统38、应用程序40和其他程序模块42的各种软件应用提供进一步存储。进一步地,磁盘驱动器36可存储诸如程序或应用数据44的其他信息。在各种实施例中,磁盘驱动器36存储不要求与在其他存储介质中相同的低时延的信息。进一步地,操作系统38、应用程序40数据、程序模块42以及程序或应用数据44可以是与存储在上文所提及的各种实施例中的RAM24中的信息相同的信息,或其可以是RAM24所存储的数据潜在派生出的不同数据。
进一步地,可移动非易失性存储器接口16可将计算机2耦连到利用诸如软盘48、Zip或Jazz的磁性介质的磁性便携式磁盘驱动器46,或耦连到利用用于诸如DVD-R/RW,CD-R/RW和其他类似格式的的计算机可读介质的存储的光学介质52的光盘驱动器50。还有其他实施例利用SSD或封装在便携式外壳中的转动式磁盘以增加可移动存储器的能力。
计算机2可利用网络接口12以通过局域网(LAN)58或广域网(WAN)60与一个或多个远程计算机56进行通信。网络接口12可利用网络接口卡(NIC)或诸如调制解调器62的其他接口以使能通信。调制解调器62通过电话线、同轴电缆、光纤、电力线或无线地使能通信。远程计算机56可包含类似的硬件和软件配置或可具有包含可对计算机2提供附加的计算机可读指令的远程应用程序66的存储器64。在各种实施例中,可利用远程计算机存储器64以存储信息,诸如可稍后被下载到本地系统存储器6的经识别的文件信息。进一步地,在各种实施例中,远程计算机56可以是应用服务器、管理服务器、客户端计算机、或网络家电。
用户可使用连接到用户输入接口14的输入设备诸如鼠标68和键盘70来对计算机2输入信息。此外,输入设备可以是轨迹板、指纹扫描器、操纵杆、条形码扫描器、介质扫描器等等。视频接口8可以向诸如监视器72的显示器提供视觉信息。视频接口8可以是嵌入式接口或其可以是分立的接口。进一步地,计算机可利用多个视频接口8、网络接口12以及可移动接口16和不可移动接口18以增加计算机2的操作中的灵活性。进一步地,各种实施例利用数个监视器72和数个视频接口8以改变计算机2的性能和能力。诸如输出外围接口10的其他计算机接口可包括在计算机2中。该接口可耦连到打印机74或扬声器76或其他外围设备以对计算机2提供附加的功能性。
计算机的各种可替代配置和实现方案在本发明的精神内。这些变形可包括但不限于耦连到系统总线20的附加的接口诸如通用串行总线(USB)、打印机端口、游戏端口、PCI总线、PCI Express,或将上文所述各种部件集成到芯片集部件诸如北桥或南桥中。例如,在各种实施例中,处理单元4可包括嵌入式存储器控制器(未示出)以使能比系统总线20可提供的更有效率的来自系统存储器6的数据的转移。
上文的实施例旨在是示例性的而并非限制。附加的实施例在权利要求内。此外,虽然已参考特定实施例描述了本发明的各方面,但本领域的技术人员将意识到,可在形式和细节上做出改变而不脱离本发明的精神和范围,如权利要求所定义。
相关领域的普通技术人员将意识到,本发明可包括比上文所描述的任何单独实施例中所示出的更少的特征。本文所描述的实施例不意味着是其中可组合本发明的各种特征的方式的穷举呈现。因此,如本领域的普通技术人员所理解的,实施例并非特征的互斥组合;相反,本发明可包括从不同单独实施例中所选择的不同单独特征的组合。
上文文档的通过援引方式的任何并入是有限制的,使得与本文明确的公开相反的主题不被并入。上文文档的通过援引方式的任何合入进一步是有限制的,使得在文档中所包括的权利要求不被通过援引的方式并入到本申请的权利要求中。然而,除非特别排除,否则文档的任何一个的权利要求均并入本文作为公开的部分。上文文档的通过援引方式的任何并入还进一步是有限制的,使得除非本文明确包括,文档中所提供的任何定义不被通过援引的方式并入本文。
出于解释本发明的权利要求的目的,明确意图的是,除非在权利要求中叙述具体术语“用于……的装置”或“用于……的步骤”,否则将不援用美国法典第35篇第112节第六段的条款。
Claims (8)
1.一种用于仿真处于调查之下的软件代码的方法,在包括计算硬件和数据存储的计算机系统中,所述计算硬件包括至少一个处理器,所述方法包括:
由处于程序控制之下进行操作的所述计算硬件建立虚拟执行环境,在所述虚拟执行环境中处于调查之下的所述软件代码的第一部分被仿真,其中一系列虚拟处理状态在所述第一部分的仿真期间被表示;
由所述计算硬件执行处于调查之下的所述软件代码的第二部分而不用对其进行仿真;
在所述软件代码的所述第二部分的不用进行仿真的所述执行之前,根据在所述软件代码的所述第二部分前的所述系列虚拟处理状态之一来初始化所述计算硬件;
由处于程序控制之下进行操作的所述计算硬件针对所述软件代码的所述第二部分的不用进行仿真的所述执行来确定效率的测度;以及
由处于程序控制之下操作的所述计算硬件确定所述软件代码的所述第二部分的不用进行仿真的执行的适宜性,其中所述适宜性的确定是基于所述效率的测度与效率标准的比较。
2.根据权利要求1所述的方法,其中在所述第二部分的不用进行仿真的执行的所述适宜性的所述确定中,基于所述第二部分的所述不用进行仿真的执行的实施的计算负载与所述计算硬件的所述初始化的所述实施的计算负载相比较来定义所述效率标准。
3.根据权利要求2所述的方法,其中基于在对处于调查之下的所述软件代码的所述第二部分的不用对其进行仿真的所述执行的所述实施加以实行中所测量的处理器周期数和与对所述计算硬件的所述初始化的所述实施加以实行相关联的处理器周期数的比率来定义所述效率的测度。
4.根据权利要求1所述的方法,其中所述软件代码的所述第一部分的仿真包括实施所述第一部分的动态二进制转译。
5.根据权利要求1所述的方法,其中处于调查之下的所述软件代码的所述第二部分的不用对其进行仿真的所述执行包括,响应于针对所述第二部分的所确定的效率的测度低于预定义的效率阈值而实施所述第二部分的一个或多个部分的二进制转译。
6.根据权利要求1所述的方法,其中处于调查之下的所述软件代码构建为多个基本块,并且其中所述效率的测度与作为处于调查之下的所述软件代码的所述第二部分的、由所述计算硬件执行的相应的基本块相关联。
7.根据权利要求1所述的方法,其中处于调查之下的所述软件代码包括多个所调查的指令并且其中所述效率的测度与作为处于调查之下的所述软件代码的所述第二部分、要由所述硬件加速器模块执行的相应的一个或多个所述所调查的指令相关联。
8.根据权利要求1所述的方法,其中确定所述软件代码的所述第二部分的不用进行仿真的执行的所述适宜性是基于所述效率的测度与最小效率阈值的比较,其中当所述效率的测度在所述效率标准的最小效率阈值之下时,所述第二部分在所述虚拟执行环境中执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2012156445 | 2012-12-25 | ||
RU2012156445/08A RU2514142C1 (ru) | 2012-12-25 | 2012-12-25 | Способ повышения эффективности работы аппаратного ускорения эмуляции приложений |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103678126A CN103678126A (zh) | 2014-03-26 |
CN103678126B true CN103678126B (zh) | 2016-08-17 |
Family
ID=48325436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310652562.XA Active CN103678126B (zh) | 2012-12-25 | 2013-12-05 | 用于提高应用仿真加速的效率的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8943596B2 (zh) |
EP (1) | EP2750037B1 (zh) |
CN (1) | CN103678126B (zh) |
RU (1) | RU2514142C1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8528086B1 (en) * | 2004-04-01 | 2013-09-03 | Fireeye, Inc. | System and method of detecting computer worms |
US10783008B2 (en) * | 2017-05-26 | 2020-09-22 | Sony Interactive Entertainment Inc. | Selective acceleration of emulation |
US9424089B2 (en) * | 2012-01-24 | 2016-08-23 | Samsung Electronics Co., Ltd. | Hardware acceleration of web applications |
US8893088B2 (en) * | 2013-04-02 | 2014-11-18 | Apple Inc. | Dynamic program evaluation for system adaptation |
US9335982B1 (en) | 2015-04-28 | 2016-05-10 | Microsoft Technology Licensing, Llc | Processor emulation using multiple translations |
CA3001463A1 (en) * | 2015-10-08 | 2017-07-06 | Siege Technologies LLC | Assessing effectiveness of cybersecurity technologies |
CN109977671B (zh) * | 2019-03-14 | 2020-10-30 | 西安电子科技大学 | 一种基于编译器修改的Android锁屏型勒索软件检测方法 |
CN111914410A (zh) * | 2020-07-16 | 2020-11-10 | 博流智能科技(南京)有限公司 | SoC软硬件协同仿真加速系统及方法 |
CN113285855B (zh) * | 2021-07-14 | 2021-12-07 | 天聚地合(苏州)数据股份有限公司 | 服务器监控方法及系统 |
CN114398803B (zh) * | 2022-03-25 | 2022-07-12 | 中国科学院深圳先进技术研究院 | 匀场联合仿真方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006037374A1 (en) * | 2004-10-05 | 2006-04-13 | Mentor Graphics Corp. | Accelerated hardware emulation environment for processor-based systems |
CN101034361A (zh) * | 2007-01-18 | 2007-09-12 | 浙江大学 | 一种基于指令代价的编译器优化代码生成方法 |
CN101689123A (zh) * | 2007-06-27 | 2010-03-31 | 微软公司 | 利用事务存储器硬件来加速虚拟化和仿真 |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE192246T1 (de) * | 1991-09-23 | 2000-05-15 | Intel Corp | Rechnersystem mit software- unterbrechungsbefehlen, das selektiv in einem virtuellen modus arbeitet |
US5398196A (en) | 1993-07-29 | 1995-03-14 | Chambers; David A. | Method and apparatus for detection of computer viruses |
US5796989A (en) * | 1995-03-20 | 1998-08-18 | Apple Computer, Inc. | Method and system for increasing cache efficiency during emulation through operation code organization |
US5751982A (en) | 1995-03-31 | 1998-05-12 | Apple Computer, Inc. | Software emulation system with dynamic translation of emulated instructions for increased processing speed |
US6106565A (en) * | 1997-02-27 | 2000-08-22 | Advanced Micro Devices, Inc. | System and method for hardware emulation of a digital circuit |
US6026230A (en) | 1997-05-02 | 2000-02-15 | Axis Systems, Inc. | Memory simulation system and method |
US5978917A (en) | 1997-08-14 | 1999-11-02 | Symantec Corporation | Detection and elimination of macro viruses |
US6357008B1 (en) | 1997-09-23 | 2002-03-12 | Symantec Corporation | Dynamic heuristic method for detecting computer viruses using decryption exploration and evaluation phases |
US6094731A (en) | 1997-11-24 | 2000-07-25 | Symantec Corporation | Antivirus accelerator for computer networks |
US6021510A (en) | 1997-11-24 | 2000-02-01 | Symantec Corporation | Antivirus accelerator |
US6631514B1 (en) | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
DE69942011D1 (de) * | 1998-10-10 | 2010-03-25 | Ibm | Programmkodekonvertierung mit verringerter Übersetzung |
US6826748B1 (en) | 1999-01-28 | 2004-11-30 | Ati International Srl | Profiling program execution into registers of a computer |
US7013456B1 (en) | 1999-01-28 | 2006-03-14 | Ati International Srl | Profiling execution of computer programs |
US7275246B1 (en) | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US6978462B1 (en) | 1999-01-28 | 2005-12-20 | Ati International Srl | Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled |
US6934832B1 (en) | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
US6901519B1 (en) | 2000-06-22 | 2005-05-31 | Infobahn, Inc. | E-mail virus protection system and method |
US7093239B1 (en) | 2000-07-14 | 2006-08-15 | Internet Security Systems, Inc. | Computer immune system and method for detecting unwanted code in a computer system |
EP1360585A4 (en) | 2001-02-14 | 2008-04-30 | Invicta Networks Inc | SYSTEMS AND METHOD FOR GENERATING A CODE EXAMINATION SYSTEM |
US7234167B2 (en) | 2001-09-06 | 2007-06-19 | Mcafee, Inc. | Automatic builder of detection and cleaning routines for computer viruses |
US7356736B2 (en) | 2001-09-25 | 2008-04-08 | Norman Asa | Simulated computer system for monitoring of software performance |
US20030093775A1 (en) | 2001-11-14 | 2003-05-15 | Ronald Hilton | Processing of self-modifying code under emulation |
US20030115479A1 (en) | 2001-12-14 | 2003-06-19 | Jonathan Edwards | Method and system for detecting computer malwares by scan of process memory after process initialization |
US7370360B2 (en) | 2002-05-13 | 2008-05-06 | International Business Machines Corporation | Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine |
US7469419B2 (en) | 2002-10-07 | 2008-12-23 | Symantec Corporation | Detection of malicious computer code |
WO2005001751A1 (en) | 2003-06-02 | 2005-01-06 | Regents Of The University Of California | System for biometric signal processing with hardware and software accelaration |
US20050071824A1 (en) | 2003-08-22 | 2005-03-31 | K. N. Keerthi Bhushan | Method and system for executing software on non-native platforms |
US7624449B1 (en) | 2004-01-22 | 2009-11-24 | Symantec Corporation | Countering polymorphic malicious computer code through code optimization |
US7370361B2 (en) | 2004-02-06 | 2008-05-06 | Trend Micro Incorporated | System and method for securing computers against computer virus |
US7636856B2 (en) | 2004-12-06 | 2009-12-22 | Microsoft Corporation | Proactive computer malware protection through dynamic translation |
US7555592B1 (en) | 2005-08-23 | 2009-06-30 | Parallels Software International, Inc. | Kernel acceleration technology for virtual machine optimization |
US8074115B2 (en) * | 2005-10-25 | 2011-12-06 | The Trustees Of Columbia University In The City Of New York | Methods, media and systems for detecting anomalous program executions |
US7809670B2 (en) | 2005-12-09 | 2010-10-05 | Microsoft Corporation | Classification of malware using clustering that orders events in accordance with the time of occurance |
US8479174B2 (en) | 2006-04-05 | 2013-07-02 | Prevx Limited | Method, computer program and computer for analyzing an executable computer file |
US8151352B1 (en) | 2006-07-14 | 2012-04-03 | Bitdefender IPR Managament Ltd. | Anti-malware emulation systems and methods |
US8006155B2 (en) | 2007-01-09 | 2011-08-23 | International Business Machines Corporation | Testing an operation of integrated circuitry |
US9246938B2 (en) | 2007-04-23 | 2016-01-26 | Mcafee, Inc. | System and method for detecting malicious mobile program code |
US7854002B2 (en) | 2007-04-30 | 2010-12-14 | Microsoft Corporation | Pattern matching for spyware detection |
US20120300649A1 (en) * | 2007-05-21 | 2012-11-29 | W2Bi, Inc. | Mobile device throughput testing |
US8145470B2 (en) | 2007-06-27 | 2012-03-27 | Microsoft Corporation | Accelerated access device emulator access scheme in a hypervisor environment with child and root partitions |
US8176477B2 (en) | 2007-09-14 | 2012-05-08 | International Business Machines Corporation | Method, system and program product for optimizing emulation of a suspected malware |
US7620992B2 (en) | 2007-10-02 | 2009-11-17 | Kaspersky Lab Zao | System and method for detecting multi-component malware |
US9779235B2 (en) | 2007-10-17 | 2017-10-03 | Sukamo Mertoguno | Cognizant engines: systems and methods for enabling program observability and controlability at instruction level granularity |
US8060356B2 (en) * | 2007-12-19 | 2011-11-15 | Sony Computer Entertainment Inc. | Processor emulation using fragment level translation |
US8307360B2 (en) * | 2008-01-22 | 2012-11-06 | Advanced Micro Devices, Inc. | Caching binary translations for virtual machine guest |
US8166276B2 (en) | 2009-02-27 | 2012-04-24 | Advanced Micro Devices, Inc. | Translate and verify instruction for a processor |
US7603713B1 (en) | 2009-03-30 | 2009-10-13 | Kaspersky Lab, Zao | Method for accelerating hardware emulator used for malware detection and analysis |
WO2010132860A2 (en) | 2009-05-15 | 2010-11-18 | Lynxxit Inc. | Systems and methods for computer security employing virtual computer systems |
RU91213U1 (ru) * | 2009-10-01 | 2010-01-27 | ЗАО "Лаборатория Касперского" | Система автоматического составления описания и кластеризации различных, в том числе и вредоносных, объектов |
RU101217U1 (ru) * | 2010-03-02 | 2011-01-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система ускорения эмуляции процессов |
RU2430411C1 (ru) * | 2010-03-02 | 2011-09-27 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ обнаружения вредоносного программного обеспечения |
US8707300B2 (en) * | 2010-07-26 | 2014-04-22 | Microsoft Corporation | Workload interference estimation and performance optimization |
US20120096554A1 (en) | 2010-10-19 | 2012-04-19 | Lavasoft Ab | Malware identification |
-
2012
- 2012-12-25 RU RU2012156445/08A patent/RU2514142C1/ru active
-
2013
- 2013-03-28 US US13/852,778 patent/US8943596B2/en active Active
- 2013-05-06 EP EP13166594.5A patent/EP2750037B1/en active Active
- 2013-12-05 CN CN201310652562.XA patent/CN103678126B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006037374A1 (en) * | 2004-10-05 | 2006-04-13 | Mentor Graphics Corp. | Accelerated hardware emulation environment for processor-based systems |
CN101034361A (zh) * | 2007-01-18 | 2007-09-12 | 浙江大学 | 一种基于指令代价的编译器优化代码生成方法 |
CN101689123A (zh) * | 2007-06-27 | 2010-03-31 | 微软公司 | 利用事务存储器硬件来加速虚拟化和仿真 |
Also Published As
Publication number | Publication date |
---|---|
CN103678126A (zh) | 2014-03-26 |
RU2514142C1 (ru) | 2014-04-27 |
US20140181970A1 (en) | 2014-06-26 |
EP2750037A1 (en) | 2014-07-02 |
EP2750037B1 (en) | 2017-02-01 |
US8943596B2 (en) | 2015-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103678126B (zh) | 用于提高应用仿真加速的效率的系统和方法 | |
CN103500308B (zh) | 用于对抗由恶意软件对仿真的检测的系统和方法 | |
CN106228069B (zh) | 用于检测恶意可执行文件的系统和方法 | |
Bierma et al. | Andlantis: Large-scale Android dynamic analysis | |
CN106326737B (zh) | 用于检测可在虚拟堆栈机上执行的有害文件的系统和方法 | |
US8229727B2 (en) | System and method for incorporating design behavior and external stimulus in microprocessor emulation model feedback using a shared memory | |
CN113260993B (zh) | 虚拟平台系统的安全部署和操作 | |
Alarifi et al. | Anomaly detection for ephemeral cloud IaaS virtual machines | |
CN110245467A (zh) | 基于Dex2C与LLVM的Android应用程序保护方法 | |
Pollitt et al. | Virtualization and digital forensics: A research and education agenda | |
EP4109310B1 (en) | Iterative memory analysis for malware detection | |
KR101557455B1 (ko) | 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법 | |
Wang et al. | Leveraging WebAssembly for Numerical JavaScript Code Virtualization | |
Gao et al. | Quorum chain-based malware detection in android smart devices | |
Kim | The impact of platform vulnerabilities in AI systems | |
Yin et al. | A dynamic malware detection mechanism based on deep learning | |
Lysne et al. | Reverse Engineering of Code | |
McDole et al. | Malware classification using deep learning in cloud environments | |
WO2022218188A1 (zh) | 攻击样本管理的方法以及设备 | |
CN109408194A (zh) | 对文件的执行进行仿真的系统和方法 | |
Adhikary et al. | SoK: Assisted Fault Simulation: Existing Challenges and Opportunities Offered by AI | |
US20220066911A1 (en) | Virtual machine for developing and testing target code for hardware designs | |
US20230342454A1 (en) | Cloud solution for rowhammer detection | |
Ballot | Capacity ATL: Reasoning About Agent Profiles and Applications to Cybersecurity | |
Coleman et al. | Android Malware Detection System using Deep Learning and Code Item |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |