CN109408194B - 对文件的执行进行仿真的系统和方法 - Google Patents

对文件的执行进行仿真的系统和方法 Download PDF

Info

Publication number
CN109408194B
CN109408194B CN201711024138.5A CN201711024138A CN109408194B CN 109408194 B CN109408194 B CN 109408194B CN 201711024138 A CN201711024138 A CN 201711024138A CN 109408194 B CN109408194 B CN 109408194B
Authority
CN
China
Prior art keywords
file
execution
instruction set
instructions
image
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
Application number
CN201711024138.5A
Other languages
English (en)
Other versions
CN109408194A (zh
Inventor
亚历山大·V·利斯金
弗拉基米尔·V·克雷洛夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of CN109408194A publication Critical patent/CN109408194A/zh
Application granted granted Critical
Publication of CN109408194B publication Critical patent/CN109408194B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种用于对文件的执行进行仿真的系统和方法。形成文件的图像,文件的图像由从该文件中读取的指令构成。分析模块在从该文件中读取的部分中检测至少一个已知指令集,以及将断点插入到生成的文件的图像中的位置中,该位置对应于检测到的指令集的起点。仿真模块通过对来自生成的文件的图像的指令的执行进行仿真来对该文件的执行进行仿真,以及将与仿真的至少一个已知指令集的执行相关联的相应记录添加到仿真日志。

Description

对文件的执行进行仿真的系统和方法
技术领域
本发明总体上涉及对文件的执行进行仿真的领域,具体地,涉及对文件的执行进行仿真的系统和方法。
背景技术
目前,存在用于开发可执行文件的各种各样的方法。通常,在开发软件期间,特别是在创建可执行文件时,与机器指令不同的指令被放置在这些可执行文件中,诸如以中间代码形式的指令(诸如通用中间语言指令或CIL指令)或脚本形式的指令。
在对文件(如可移植可执行文件或PE文件)的执行进行仿真时,重要的是形成尽可能完整的函数调用日志。在对文件的执行进行仿真时,这样的日志的完整性特别影响恶意文件的检测质量(例如检测率)。当可执行文件使用来自动态库的数据或函数类型时,仿真器执行操作系统(Operating System,OS)加载器的多个步骤。例如,对于Windows OS的可执行文件,仿真器改变可执行文件的图像的IAT(输入地址表)部分,该IAT部分涉及在文件的执行期间(以及因此在对执行的仿真期间)所需要调用的函数的地址的固定。仿真器保存输入到IAT中的、关于函数的地址与函数的名称之间的对应性的信息。因此,当在对文件的执行的仿真期间调用某个函数时,仿真器确定已经调用了某个库函数,并适当地改变函数调用日志。
但是在对包含与机器指令不同的指令的文件的执行进行仿真时,根本没有关于以与机器指令不同的方式形式化的函数的信息保存在IAT中,从而出现了指令的日志记录问题(将函数调用记录在日志中),包括以与机器指令不同的方式形式化的函数的问题。
发明内容
因此,本文公开了一种用于对文件的执行进行仿真的系统和方法,更具体地,公开了用于对包含与机器指令不同的指令的文件的执行进行仿真的系统和方法。
在一个示例性方面,提供了一种用于对文件的执行进行仿真的系统和方法。该方法包括:生成文件的图像,所述文件的图像由从所述文件读取的指令构成;以及在从所述文件中读取的部分中检测至少一个已知指令集。该方法还包括将断点插入到生成的所述文件的图像中的位置中,所述位置对应于从所述文件的被读取的所述部分检测到的所述至少一个已知指令集的起点。该方法包括通过对来自生成的所述文件的图像的指令的执行进行仿真来对所述文件的执行进行仿真,以及将与仿真的所述至少一个已知指令集的执行相关联的相应记录添加到仿真日志。
在另一方面,所述文件的图像包括所述文件中包含的程序代码的指令以及关于所述程序代码的入口点的服务信息。
在另一方面,通过对来自生成的所述文件的图像的指令的执行进行仿真来对所述文件的执行进行仿真包括:响应于遇到插入的所述断点,将指示对所述已知指令集的执行进行的仿真的记录添加到所述仿真日志,对检测到的所述至少一个已知指令集所对应的替选指令集的执行进行仿真,以及制止对检测到的所述至少一个已知指令集的执行进行仿真。
在另一方面,所述替选指令集包括优化的指令集,所述优化的指令集配置成与所述已知指令集相比具有相同的对执行进行仿真的结果,且消耗较少的资源。
在另一方面,检测到的所述至少一个已知指令集包括反仿真指令,所述反仿真指令配置成阻止对所述文件的执行的仿真,其中,所述反仿真指令所对应的所述替选指令集配置成具有相同的对文件的执行的仿真结果,且不阻止对所述文件的执行的仿真。
在另一方面,检测到的所述至少一个已知指令集包括解释器库的指令集,所述解释器库的指令集配置成处理所述文件的与机器指令不同的指令。
在另一方面,使用来自已知指令集的数据库的一个或多个签名来检测从所述文件中读取的所述部分中的所述至少一个已知指令集。
在另一方面,所述方法还包括生成所述文件的指令的解释器的库文件的图像。
根据另一示例性方面,提供了一种计算机可读介质,所述计算机可读介质包括用于执行本发明所公开的任一方法的计算机可执行指令。
以上对本发明的示例性的方面的简要概述用于提供对本发明的基本理解。该概述不是对所有预期方面的广泛综述,并且既不旨在标识所有方面的关键的要素或主要的要素,也不旨在勾画本发明的任何方面或所有方面的范围。该概述的唯一目的是以简化的形式呈现一个或多个方面,作为随后的对本发明的更详细的描述的前奏。为了实现前述内容,本发明的一个或多个方面包括在权利要求中所描述的且特别指出的特征。
附图说明
并入本说明书中并构成本说明书的一部分的附图示出了本发明的一个或多个示例性的方面,以及连同详细的描述一起用来阐述这些示例性的方面的原理和实现方式。
图1是示出根据示例性方面的用于对文件的执行进行仿真的系统的框图;
图2A是示出根据示例性方面的用于对文件的执行进行仿真的方法的流程图;
图2B是示出根据另一示例性方面的用于对文件的执行进行仿真的另一方法的流程图;
图3是根据示例性方面的其上可以实施所公开的系统和方法的通用计算机系统的框图。
具体实施方式
本文中在用于仿真文件的执行的系统、方法和计算机程序产品的上下文中描述示例性方面。本领域的普通技术人员将认识到,以下描述仅仅是说明性的,而不旨在以任何方式进行限制。其它方面将很容易将其自身暗示给了解本发明的优点的本领域的技术人员。现在将详细地参考如附图中所示的示例性方面的实现方式。贯穿附图和以下描述将尽可能地使用相同的附图标记来指代相同或类似的项目。
本发明将引入一些术语,这些术语将用在本发明的不同方面的描述中。
仿真是通过计算机的一个设备或多个设备来模仿另一个设备的运行,其中,模仿设备接收与被模仿设备相同的数据、执行与被模仿设备相同的程序、并且获得与被模仿设备相同的结果。
对文件的执行进行仿真是通过计算机的一个设备或多个设备来模仿文件在另一个设备上的执行。
对指令的执行进行仿真是通过计算机的一个设备或多个设备来模仿指令在另一个设备上的执行。指令是指可执行代码的指令,特别地,可执行代码可以包含在可执行文件中、以及以可执行文件的形式。
文件的图像是在对文件的执行进行模仿的过程中文件的表示,具体地,是描述文件的、至少具有用于文件的执行(以及对文件的执行的仿真)所必需的完整性的数据集。当对文件的执行进行仿真时,仿真器(硬件或软件)对该文件的图像的指令的执行进行仿真。文件指令可以以不同的方式形式化:以机器指令的形式和以中间代码的形式(例如Microsoft中间语言(Microsoft Intermediate Language,MSIL)或伪代码(可移植的代码)指令或脚本),这样的指令分别是机器指令、中间代码指令和脚本指令。
本发明中用于对文件的执行进行仿真的系统的构件是指使用硬件实现的真实的设备、系统、部件、部件组(诸如集成微电路(专用集成电路(Application SpecificIntegrated Circuit,ASIC))或可编程门阵列(现场可编程门阵列(Field-ProgrammableGate Array,FPGA))),或者例如以软件和硬件的组合的形式,诸如微处理器系统和软件指令集、以及神经形态芯片(神经轴突芯片)的组合的形式。这样的系统构件的功能可以由硬件单独实现,也可以组合的形式实现,其中系统构件的一些功能由软件实现,而一些功能由硬件实现。在一些方面,可以在通用计算机(例如在图3中描述的通用计算机)的处理器上实现这些构件的一些或全部。系统部件可以在单个计算设备的范围内实现或分布在多个互连的计算设备之间。
图1是示出根据示例性方面的用于对文件的执行进行仿真的系统100的框图。系统100包括仿真模块120、分析模块121、仿真日志130和数据库125,该数据库125配置成存储已知指令集和/或已知函数。仿真模块120可通信地连接到分析模块121和仿真日志130。分析模块121可通信地连接到已知指令集的数据库125。在一个方面,分析模块121是仿真模块120的一部分。
仿真模块120配置成对文件110的执行进行仿真。在一般情况下,文件110是包含指令的文件。在一个方面,该文件是可移植的可执行的(Portable Executable,PE)格式的可执行文件,并且该文件中包含的指令是机器指令,该机器指令可以由x86、x86-64系列的处理器或能够执行用于x86、x86-64系列的处理器的指令的任何其它处理器执行。在另一方面,文件110可以包含其它类型的指令,以及不同类型的指令(例如,机器指令和中间代码指令或脚本,有时也称为场景(scenario))。在对文件110的执行进行仿真期间,仿真模块120可以形成一个或多个仿真日志130,在执行期间仿真了哪些已知指令集(例如,任何给定的WinAPI函数的指令)的记录放置在仿真日志130中。这些记录可以在开始对相应的指令集的执行进行仿真之前或者在对该执行进行仿真之后被放置在仿真日志130中。
文件110可以是保存在数据存储设备上的任何文件。在一个方面,该文件110被保存在计算设备(诸如计算机)的数据存储设备上,用于对文件的执行进行仿真的系统的部件也存在于该数据存储设备上。在一个方面,该文件110可以是使用启发式规则来执行防病毒扫描的文件,这些启发式规则被应用于对文件110的执行进行仿真的结果,特别是应用于仿真日志130。根据这样的防病毒扫描的结果,可以发现文件110是恶意的,并且可以将文件110从数据存储设备中移除或放置在隔离区中。因此,可以实现另一技术结果——增强文件110保存在其数据存储设备上的计算设备的安全性。
为了进行对文件110的执行的仿真(如在前文所注意到的,这是通过一个设备(仿真模块120)对在另一设备(诸如计算设备)上的文件110的执行的模仿),仿真模块120形成文件110的图像。文件图像是由仿真模块120在对文件110的执行的仿真期间使用的文件的表示。
在一个方面,文件110的图像是包含用于对文件的执行进行仿真的信息的一组数据(可以以一个或多个数据结构的形式表示)。用于对文件110的执行进行仿真的信息包括服务信息以及文件110的指令(文件110中所包含的程序代码的指令)。服务信息的示例是关于入口点的信息(诸如入口点的相对虚拟地址或RVA)和来自文件110的文件头的其它数据、IAT的内容(输入地址表)、关于文件110的区段的位置的信息等。在一个方面,服务信息同样是从入口点开始的指令集(由指令的数量(诸如100)限制,或者通过累积的字节量(诸如等于文件110的部分的大小的字节量)限制)。在一个方面,为了形成文件110的图像,当在操作系统(Operating System,OS)中创建进程时,仿真模块120模仿OS的加载器的功能。在这种情况下,形成的文件110的图像是文件110的与由OS从该文件110创建的进程的地址空间中的表示类似的表示。
为了形成文件110的图像,仿真模块120从文件110读取服务信息。文件110的图像的形成还包括从文件110读取文件110的指令并将该指令添加到文件110的图像的步骤。在一个方面,仿真模块120可以在可能具有固定大小的部分105中从文件110读取指令,并将指令添加到文件110的图像。在一个方面,选择部分105的大小以便一次读取文件110的所有指令。在另一方面,文件110的指令根据需要逐个部分105地多次读取。在一个方面,当仿真模块120在对(来自文件110的图像或另一文件的图像的)指令的执行进行仿真期间,例如由于执行条件转移指令,访问不在文件110的图像中的指令或数据(即,还没有从文件110读取的那些指令)时,需要读取文件110的下一个部分105。在一个方面,这样的部分105的大小是4kb。在另一方面,这样的部分105的大小被采用等于文件110保存在其上的数据存储设备上的集群的大小。应当注意,即使在尚未读取的指令不存在于文件110的图像中(指令存在于文件110的尚未读取的部分中),对来自文件110的图像的指令(已经存在于图像中)的执行的仿真也是可能的。在一个方面,文件110的包含文件110的指令且从文件110读取的第一个(也可能是唯一的)部分是文件110的包含由文件入口点指示的指令的部分。
在由仿真模块120读取文件110的该部分之后,分析模块121在文件110的被读取部分中检测已知指令集。在搜索已知指令集时,分析模块121利用保存在已知函数的数据库125中的(至少一个)签名。因此,在一个方面,每个已知指令集对应于至少一个签名。在一个方面,数据库125是分析模块121的一部分。签名可以指示某些已知指令集的开始。在一个方面,签名可以具有一系列字节、散列和或一个比特/字节或任一其它掩码的形式。在另一方面,签名可以包括启发式规则,将启发式规则应用于文件110的指令集(或一些指令)使得可以检测已知指令集。分析模块121使用来自已知函数集的数据库125的签名,并且借助这些签名来检测已知指令集的起点。
已知指令集的一个示例包括静态库的子程序。一方面,静态库是文件的例如以Delphi语言编译的开发环境的库(构成开发环境的库)。已知指令集的另一示例可以包括配置成处理(解释)脚本指令或中间代码指令的解释器文件(例如,解释器的库)的指令集。在一些方面,解释器文件是其指令(例如,子程序)用于执行(解释)文件110的与机器指令不同的指令(例如,如果文件110包含脚本指令或中间代码指令)的库。在另一个示例中,分析模块121可以检测阻止对文件的执行进行仿真的已知指令集,即反仿真指令集。例如,这种反仿真指令包括这样的指令:该指令的执行通过仿真模块120验证对某些WinAPI函数的实现,以及如果这些函数尚未实现,则结束对文件110的执行的仿真,或者延长对文件110的执行的仿真时间。
已知指令集的签名还可以包含标识符,例如符号名称(例如,“string_comparison”)或者校验和,该标识符被添加到关于对已知指令集的执行的仿真的记录,该记录在由仿真模块120进行仿真期间形成并随后被发送到仿真日志130。
通过分析模块121在文件110的被读取部分中检测已知指令集之后,分析模块121在文件110的对应图像中设置断点,这些断点位于文件110的图像中的已知指令集的起点处。将断点设置在文件110的图像中的多个位置处,这些位置通过读取文件110的前述部分而放置在所提及的图像中。仿真模块120使用断点来确定关于对已知指令集的执行的仿真的记录的形成时间,以及将该记录放置在仿真日志130中的时间。
仿真模块120执行对来自文件110的图像的指令的执行的仿真。如上所述,在仿真的过程中,模仿指令的执行;特别地,模仿在实际的处理器(物理处理器)上的指令的执行。在仿真过程中,仿真模块120生成仿真日志130。
在一个方面,仿真模块120将关于动态库中所包含的子程序和指令(换言之,可执行代码)的调用的记录添加到仿真日志130,该子程序和指令例如加载到在真实计算设备上执行文件110时从文件110发起的进程的地址空间中的那些子程序和指令。在一个方面,当对子程序调用指令(例如,这是汇编语言中的call指令)的执行进行仿真时,将这样的记录添加到仿真日志130,其中子程序的指令应该所处的地址是用于IAT记录之一的地址。因此,在仿真日志130中添加了关于对已知指令集(子程序,如由该记录从IAT所引用的)的仿真的记录。在一个方面,该记录还包括已知指令集的标识符,诸如其符号名称(诸如fwrite、GetProcAddress等)。
在本发明的另一方面,如果在对来自文件110的图像的指令的执行进行仿真的过程中,仿真模块120到达断点,则仿真模块120可以将关于对已知指令集的执行的仿真的记录添加到仿真日志130。仿真模块120模仿控制从特定指令到断点设置在其中的指令的转移。如先前所述,在借助于来自数据库125的签名检测到该已知指令集时,分析模块121将断点设置在文件110的图像中的该已知指令集的起点处。
如果在由仿真模块120进行仿真的过程中,需要读取文件110的下一个部分105,则进行从文件110读取该部分105,并重复以上描述的步骤(例如,检测已知指令集和设置断点),以及通过将文件110的被读取部分105添加到文件110的图像,仿真模块120更新文件110的图像。在此之后,在以上描述的场景下,继续对文件110的指令的执行进行仿真的过程。
在一个方面,当仿真模块120到达在已知指令集的起点处设置的某个断点时,仿真模块120将对应的记录添加到仿真日志130,但是不针对该已知指令集的执行进行仿真(即,仿真模块制止对该已知指令集的执行进行仿真)。而是,仿真模块120对另一替选指令集的执行进行仿真。在一个方面,数据库125可以包含针对每个已知指令集的替选指令集。
在一个方面,对应于某一已知指令集的替选指令集是优化的指令集:对该优化的指令集的执行(例如,被模仿的设备(RAM、ROM)的状态的变化或处理器的寄存器的值的变化)进行仿真的结果将与对已知指令集的执行进行仿真时的结果相同,但是对该替选指令集的执行的仿真将使用较少的需求,例如,花费更少的时间或者需要较少量的RAM或处理器寄存器。对代替已知指令集的这种指令集的执行的仿真将使得可以加速对文件110的执行进行仿真的过程并缩短用于对文件110的执行进行仿真的时间。
在另一方面,某个已知反仿真指令集所对应的替选指令集是其(与已知反仿真指令集相比)不阻止对文件的执行的仿真的指令集:对该指令集的执行(例如,被模仿的设备(RAM,ROM)的状态的变化或处理器的寄存器的值的变化)的仿真的结果将与对已知指令集的执行的仿真的结果相同,然而,将不会对反仿真指令集进行仿真(该反仿真指令集可能阻止对文件110的执行的仿真)。对代替已知指令集(在给定情况下,该已知指令集阻止对文件110的执行进行仿真)的该指令集的执行的仿真将允许在某些情况下(当已知指令集包含阻止仿真的指令时)加速对文件110的执行进行仿真的过程以及缩短用于对文件110的执行进行仿真的时间。在一些情况下,这种方法将能够形成在信息的完整性方面是可靠的仿真日志130:以这种方式形成的日志130将包含更多关于对已知指令集的执行的仿真的记录,因为对文件110的指令的执行的仿真将不会被阻止仿真的已知指令集所阻止。
在一个方面,数据库125中保存的数据由专家、特别是计算机技术领域的专家放置在数据库125中。在一个方面,这样的数据可以经由诸如因特网的网络从服务器(例如,第三方服务器)发送到分析模块121,该分析模块121将把接收到的数据保存在数据库125中。
在一个方面,仿真模块120可附加地生成其它文件的图像(通过执行与针对文件110所采取的步骤相同的步骤)。在一些方面,这样的文件是用于对文件110的指令的执行进行仿真所需的文件——例如,在执行文件110的指令(以及因此仿真该执行)期间可以使用的动态库的文件。如果文件110不仅包含机器指令,还包含另一种类型的指令(诸如以脚本形式的指令;这样的文件将被称为包含与机器指令不同的指令的文件),则动态库的文件可以包括文件110的指令的解释器的库的文件。这样的解释器的库的文件的指令(以及相应的单独的指令集)用于解释与机器指令不同的指令。如果已经发生了从文件110的图像的指令到另一文件的图像中的指令的控制的转移(控制的转移的仿真),则仿真模块120对来自其它文件的图像的指令的执行进行仿真。例如,可以通过调用其指令存在于另一文件的图像中的子程序(例如通过对call指令或jmp指令的执行进行仿真)进行控制的转移。应该注意的是,理论上,只有在已经形成了其它文件的图像之后才实施控制的转移。在一个方面,对来自文件110的图像的指令的执行进行仿真的过程包括对来自另一文件的图像的指令的执行进行仿真,并且因此当对来自另一文件的图像的指令的执行进行仿真时,关于对包含在另一文件的图像中的已知指令集的仿真的记录也将被添加到仿真日志130。
应当注意的是,文件的图像的附加形成仅在必要时进行,例如,当在对文件110的执行进行仿真期间需要从另一文件读取数据或对来自另一文件的图像的指令的执行进行仿真时,例如,当对(存在于文件110的图像中的)指令的执行进行仿真以调用子程序、分支指令(例如无条件跳转)时,或控制转移到来自另一文件的图像的指令的其它情况。形成这样的文件的图像的过程与以上描述的过程类似。因此,在本发明的上下文中的方法的所有步骤不仅可以应用于文件110,而且可以应用于对文件110的仿真所需的其它文件。
在一个方面,对文件110的指令的执行的仿真所需的文件是文件110的指令的解释器的库文件。这种库文件的示例是用于Microsoft Visual Basic虚拟机的模块:文件msvbvm60.dll。作为示例,可以由用于实现(换言之,用于处理(或解释)除了机器指令以外的指令)中间伪代码子程序的指令给出该文件msvbvm60.dll的以下已知指令集(由代码以汇编语言补充以及由某些存储器地址的名称补充),即LitStr:
Figure BDA0001448026600000111
此外,对于该已知指令集,数据库125将保存其标识符“push<constant string>”,这意味着当该已知指令集被执行时(并且因此当对该已知指令集的执行进行仿真时),指向字符串的指针将被放置在堆栈中。当对该指令集的执行进行仿真时,仿真模块120将指示已知指令集的标识符的相应记录添加到仿真日志130。应当注意的是,当对某一已知指令集的执行进行仿真时,仿真模块120还可以将其它信息添加到放置在仿真记录中的关于仿真过程的记录中:被模仿的寄存器的内容、所调用的子程序的自变数(argument)等。在以上描述的方法的帮助下,解决了技术问题:形成用于包含以机器指令以外的形式(换言之,不同于机器指令)的指令(诸如以脚本的形式或以中间代码的形式的指令)的文件的仿真日志。这样的仿真方法使得可以通过对解释器库文件的执行进行仿真,实现以对文件的执行的仿真的形式的技术结果,该文件包含与机器指令的形式不同的形式的指令。
在一个方面,一次设置用于解释器库文件的图像的断点(因为这样的文件的指令集通常不变),然后将关于设置断点的信息保存在分析模块121中并用于检测已知指令集,而不使用该已知指令集的签名。
仿真模块120可以被配置成停止对文件110的执行的仿真过程。在一个方面,仿真模块可以在确定的仿真时间(诸如10秒)到期时停止仿真过程。在另一方面,仿真模块可以响应于对用于中断调用或执行完成函数的指令的执行进行仿真而停止仿真过程。
图2A是示出根据示例性方面的用于对文件的执行进行仿真的方法200A的流程图。在步骤201中,仿真模块形成文件110的图像。该步骤还包括读取文件110的部分105。因此,仿真模块生成文件的由从文件读取的指令组成的图像。在一些方面,文件的图像包括文件中包含的程序代码的指令和关于程序代码的入口点的服务信息。在一些方面,仿真模块120可以生成文件的指令的解释器的库文件的图像。
接下来,在步骤202中,分析模块121在文件110的部分105中检测由仿真模块120读取的至少一个已知指令集。可以借助于来自已知指令集的数据库125的签名进行检测。在一个方面,检测到的至少一个已知指令集可以是具有相应的优化指令的指令。在另一方面,检测到的至少一个已知指令集可以包括配置成阻止对文件的执行的仿真的反仿真指令。在一些方面,检测到的至少一个已知指令集可以包括解释器库的指令集,该解释器库的指令集配置成处理文件的与机器指令不同的指令。在步骤203中,分析模块121在文件110的形成的图像中设置断点,这些断点位于来自文件110的被读取部分105的所有检测到的已知指令集的起点所对应的位置(地点)处。
在此之后,在步骤204中,仿真模块120执行对来自文件110的图像的指令的执行的仿真,将关于对已知指令集的执行的仿真的相应记录添加到仿真日志130。在一些方面,在对来自文件的图像的指令的执行进行仿真的过程中,响应于遇到插入的断点,仿真模块120可以将指示对已知指令集的执行的仿真的记录添加到仿真日志,以及对检测到的至少一个已知指令集所对应的替选指令集的执行进行仿真(即,制止对检测到的至少一个已知指令集的执行进行仿真的指令集)。在一些方面,替选指令集可以包括配置成具有与已知指令集相比相同的对执行进行仿真的结果且消耗更少资源的优化指令集。在一些方面,对应于反仿真指令的替选指令集可以配置成具有相同的对执行进行仿真的结果,并且不阻止对文件的执行的仿真。
在步骤204中,如果在对来自文件110的图像的指令的执行进行仿真的过程中,需要读取文件110的下一个部分105,则在步骤205中,仿真模块120读取文件110的下一个部分105,之后重复步骤202至步骤205(如果必要的话仅重复步骤205)。在步骤206中,仿真模块可以停止(结束)对文件110的执行进行仿真的过程(可以在执行步骤202至步骤205中的任一步骤的时刻停止,过渡用虚线表示),例如在确定的仿真时间结束时。
图2B是示出根据另一示例性方面的用于对文件的执行进行仿真的方法200B的流程图。在步骤221中,仿真模块120形成文件110的图像。该步骤还包括读取文件110的部分105。接下来,在步骤222中,分析模块121在文件110的部分105中检测由仿真模块120读取的至少一个已知指令集。可以借助于来自已知指令集的数据库125的签名进行检测。在步骤223中,分析模块121在文件110的形成的图像中设置断点,这些断点位于来自文件110的被读取部分105的所有检测到的已知指令集的起点所对应的位置处。在此之后,在步骤224中,仿真模块120执行对来自文件110的图像的指令的执行的仿真,将关于对已知指令集的执行的仿真的相应记录添加到仿真日志130。在步骤224中,如果在对来自文件110的图像的指令的执行进行仿真的过程中,需要读取文件110的下一个部分105,则在步骤225中,仿真模块120读取文件110的下一个部分105,之后重复步骤222至步骤225(如果必要的话仅重复步骤225)。
如果在对来自文件110的图像的指令的执行进行仿真的过程中,需要执行对来自另一文件的图像的指令的执行的仿真,则在步骤228中,仿真模块120形成该另一文件的图像。形成另一个文件的图像的步骤228类似于步骤221。在此之后,针对另一文件执行步骤222至步骤225。在对来自另一文件的图像的指令的执行的仿真期间,同样可能需要对来自又一文件的图像的指令的执行进行仿真。在这种情况下,类似于上述情况重复步骤228、步骤222至步骤225。在步骤226中,仿真模块可以停止(结束)对文件110的执行进行仿真的过程(可以在执行步骤222至步骤225中的任一步骤的时刻停止,过渡用虚线表示),例如在确定的仿真时间结束时。
在一个方面,当文件110和相应地该文件110的图像包含与机器指令不同的指令时,需要对来自另一文件的指令的执行、特别是来自该另一文件的图像的指令的执行进行仿真,并且因此需要形成另一文件的图像,并且需要对来自作为解释器(库)文件的另一文件的图像的指令的执行进行仿真,以及对来自一个文件的该图像的指令的执行的仿真对于解释与文件110的图像中的机器指令不同的指令是必需的。例如,文件110的图像包含CIL代码,并且在对来自文件110的图像的指令的执行的仿真期间,仿真模块120需要执行对函数_coreexemain的调用的仿真,所以有必要对另一文件图像、特别是文件图像MSCoreEE.dll的指令的执行进行仿真,以及因此控制从文件110的图像转移到执行环境.NET(文件MSCoreEE.dll的图像)。当出现这样的需要时,仿真模块120形成解释器文件、特别是文件MSCoreEE.dll的图像,并开始对来自该文件的图像的指令的执行的仿真,并且在对来自文件MSCoreEE.dll的图像的函数_coreexemain的指令的执行的仿真期间时,将执行对设计用于解释(处理)来自文件110的图像的CIL代码的指令的仿真。在另一方面,已知指令集是解释器(库)文件(MSCoreEE.dll)的一组指令,因此也是该文件的图像的指令,该指令被设计用于处理(解释)与包含在文件110的图像中的机器指令不同的指令(CIL代码)。
在一个方面,涉及文件110的步骤222和步骤223被跳过,因此在对文件110的执行的仿真期间,没有关于对来自文件110的已知指令集的执行的仿真的记录被添加到仿真日志130,并且仅添加关于对来自另一文件的图像(特别是在步骤228中形成的图像)的已知指令集的执行的仿真的记录。
图3为根据示例性方面的其上可实施用于仿真文件的执行的系统和方法的方面的通用计算机系统20的框图。应当注意,计算机系统20可以对应于例如先前描述的系统100。
如所示,该计算机系统20(其可以是个人计算机或服务器)包括中央处理单元21、系统存储器22和连接各个系统部件的系统总线23,各个系统部件包括与中央处理单元21相关联的存储器。如将由本领域的普通技术人员所领会,系统总线23可以包括总线存储器或总线存储器控制器、外围总线、以及能够与任何其它的总线架构交互的本地总线。系统存储器可以包括永久存储器(ROM)24和随机存取存储器(Random-Access Memory,RAM)25。基本输入/输出系统(Basic Input/Output System,BIOS)26可以存储用于在计算机系统20的元件之间传输信息的基本程序,例如在使用ROM 24加载操作系统时使用的那些基本程序。
计算机系统20还可以包括用于读取和写入数据的硬盘27、用于在可移动磁盘29上读取和写入的磁盘驱动器28、以及用于读取和写入可移动光盘31(诸如CD-ROM、DVD-ROM和其它光学介质)的光盘驱动器30。硬盘27、磁盘驱动器28和光盘驱动器30分别通过硬盘接口32、磁盘接口33和光盘驱动器接口34而连接到系统总线23。驱动器和相应的计算机信息介质为用于存储计算机系统20的计算机指令、数据结构、程序模块和其它数据的电源独立的模块。
示例性方面包括借助控制器55使用连接到系统总线23的硬盘27、可移动磁盘29和可移动光盘31的系统。将由本领域的普通技术人员所理解,也可以利用能够以计算机可读的形式存储数据的任何类型的介质56(固态驱动器、闪存卡、数字盘、随机存取存储器(RAM)等等)。
计算机系统20具有可以存储操作系统35的文件系统36、以及附加的程序应用37、其它程序模块38和程序数据39。计算机系统20的用户可以使用键盘40、鼠标42、或本领域的普通技术人员已知的任何其它输入设备(诸如但不限于麦克风、操纵杆、游戏控制器、扫描器等)输入命令和信息。这些输入设备通常通过串行端口46插入到计算机系统20中,串行端口46转而连接到系统总线,但是本领域的普通技术人员将领会,输入设备也可以以其它方式来连接,诸如但不限于借助并行端口、游戏端口、或通用串行总线(Universal SerialBus,USB)来连接。监控器47或其它类型的显示设备也可以通过接口(例如视频适配器48)连接到系统总线23。除了监控器47,个人计算机还可以装备有其它的外围输出设备(未示出),例如扬声器、打印机等。
计算机系统20可以使用与一个或多个远程计算机49的网络连接而在网络环境中操作。一个或多个远程计算机49可以为本地计算机工作站或服务器,其包括在描述计算机系统20的性质时描述的上述元件中的大多数元件或全部元件。其它设备也可以存在于计算机网络中,诸如但不限于路由器、网站、对等设备或其它的网络节点。
网络连接可以形成局域计算机网络(Local-Area computer Network,LAN)50和广域计算机网络(Wide-Area computer Network,WAN)。这些网络用在企业计算机网络和公司内部网络中,并且这些网络通常有权访问因特网。在LAN或WAN网络中,个人计算机20通过网络适配器或网络接口51连接到局域网50。当使用网络时,计算机20系统可以采用调制解调器54或本领域的普通技术人员所熟知的、实现与广域计算机网络(诸如因特网)的通信的其它模块。调制解调器54可以是内部设备或外部设备,可以通过串行端口46连接到系统总线23。本领域的普通技术人员将领会,所述网络连接是使用通信模块建立一个计算机与另一个计算机的连接的许多熟知方式的非限制性示例。
在各个方面中,本文中所描述的系统和方法可以以硬件、软件、固件或它们的任何组合来实施。如果以软件来实施,则上述方法可以作为一个或多个指令或代码而被存储在非暂时性计算机可读介质上。计算机可读介质包括数据存储器。以示例性而非限制性的方式,这种计算机可读介质可以包括RAM,ROM,EEPROM,CD-ROM,闪存或其它类型的电存储介质、磁存储介质或光存储介质,或可用来携带或存储所期望的指令或数据结构形式的程序代码并可以被通用计算机的处理器访问的任何其它介质。
在各个方面中,本发明中所描述的系统和方法可以按照模块来描述。本文中所使用的术语“模块”指的是例如现实世界的设备、部件、或使用硬件(例如通过专用集成电路(Application Specific Integrated Circuit,ASIC)或现场可编程门阵列(Field-Programmable Gate Array,FPGA))实现的部件的布置,或者指的是硬件和软件的组合,例如通过微处理器系统和实现模块功能的指令集(该指令集在被执行时将微处理器系统转换成专用设备)来实现这样的组合。一个模块还可以被实施为两个模块的组合,其中仅通过硬件促进某些功能,并且通过硬件和软件的组合促进其它功能。在某些实现方式中,模块的至少一部分(以及在一些情况下,模块的全部)可以被执行在通用计算机(诸如上文在图3中更详细描述的通用计算机)的处理器上。因此,每个模块可以以各种适合的配置来实现,而不应受限于本文中所例示的任何特定的实现方式。
为了清楚起见,本文中没有公开各个方面的所有例程特征。应当领会的是,在本发明的任何实际的实现方式的开发中,必须做出许多特定实现方式的决定,以便实现开发者的特定目标,并且这些特定目标将对于不同的实现方式和不同的开发者变化。应当理解的是,这种开发努力会是复杂的且费时的,但对于了解本发明的优点的本领域的普通技术人员来说仍然是工程的例行任务。
此外,应当理解的是,本文中所使用的措辞或术语出于描述而非限制的目的,从而本说明书的术语或措辞应当由本领域技术人员根据本文中所提出的教导和指导结合相关领域技术人员的知识来解释。此外,不旨在将本说明书或权利要求中的任何术语归于不常见的或特定的含义,除非明确如此阐述。
本文中所公开的各个方面包括本文中以说明性方式所引用的已知模块的现在和未来已知的等同物。此外,尽管已经示出并描述了各个方面和应用,但是对于了解本发明的优点的本领域技术人员将显而易见的是,在不脱离本文中所公开的发明构思的前提下,相比于上文所提及的内容而言的更多修改是可行的。

Claims (13)

1.一种用于对文件的执行进行仿真的方法,其中,所述方法包括:
生成文件的图像,所述文件的图像由从所述文件中读取的指令构成;
在从所述文件中读取的部分中检测至少一个已知指令集,其中检测到的所述至少一个已知指令集包括解释器库的指令集,所述解释器库的指令集配置成处理所述文件的与机器指令不同的指令;
生成所述解释器库的库文件的图像;
将断点插入到生成的所述文件的图像中的位置中,所述位置对应于从所述文件的被读取的所述部分中检测到的所述至少一个已知指令集的起点;以及
通过对来自生成的所述文件的图像和来自所述库文件的生成的图像的指令的执行进行仿真来对所述文件的执行进行仿真,以及将与仿真的所述至少一个已知指令集的执行相关联的相应记录添加到仿真日志。
2.根据权利要求1所述的方法,其中,所述文件的图像包括所述文件中包含的程序代码的指令以及关于所述程序代码的入口点的服务信息。
3.根据权利要求1所述的方法,其中,通过对来自生成的所述文件的图像的指令的执行进行仿真来对所述文件的执行进行仿真还包括:
响应于遇到插入的所述断点:
将指示对所述已知指令集的执行的仿真的记录添加到所述仿真日志;以及
对检测到的所述至少一个已知指令集所对应的替选指令集的执行进行仿真,以及制止对检测到的所述至少一个已知指令集的执行进行仿真。
4.根据权利要求3所述的方法,其中,所述替选指令集包括优化的指令集,所述优化的指令集配置成,与所述已知指令集相比,具有相同的对执行进行仿真的结果,且消耗较少的资源。
5.根据权利要求3所述的方法,其中,检测到的所述至少一个已知指令集包括反仿真指令,所述反仿真指令配置成阻止对所述文件的执行的仿真,其中,所述反仿真指令所对应的所述替选指令集配置成具有相同的对所述文件的执行的仿真结果,且不阻止对所述文件的执行的仿真。
6.根据权利要求1所述的方法,其中,使用来自已知指令集的数据库的一个或多个签名来检测从所述文件中读取的所述部分中的所述至少一个已知指令集。
7.一种用于对文件的执行进行仿真的系统,所述系统包括:
配置成存储文件、文件的图像以及仿真日志的存储设备;以及
硬件处理器,所述硬件处理器配置成:
生成所述文件的图像,所述文件的图像由从所述文件中读取的指令构成;
在从所述文件中读取的部分中检测至少一个已知指令集,其中检测到的所述至少一个已知指令集包括解释器库的指令集,所述解释器库的指令集配置成处理所述文件的与机器指令不同的指令;
生成所述解释器库的库文件的图像;
将断点插入到生成的所述文件的图像中的位置中,所述位置对应于从所述文件的被读取的所述部分中检测到的所述至少一个已知指令集的起点;以及
通过对来自生成的所述文件的图像和来自所述库文件的生成的图像的指令的执行进行仿真来对所述文件的执行进行仿真,以及将与仿真的所述至少一个已知指令集的执行相关联的相应记录添加到仿真日志。
8.根据权利要求7所述的系统,其中,所述文件的图像包括所述文件中包含的程序代码的指令以及关于所述程序代码的入口点的服务信息。
9.根据权利要求7所述的系统,其中,配置成通过对来自生成的所述文件的图像的指令的执行进行仿真来对所述文件的执行进行仿真的所述处理器还配置成:
响应于遇到插入的所述断点:
将指示对所述已知指令集的执行的仿真的记录添加到所述仿真日志;以及
对检测到的所述至少一个已知指令集所对应的替选指令集的执行进行仿真,以及制止对检测到的所述至少一个已知指令集的执行进行仿真。
10.根据权利要求9所述的系统,其中,所述替选指令集包括优化的指令集,所述优化的指令集配置成,与所述已知指令集相比,具有相同的对执行进行仿真的结果,且消耗较少的资源。
11.根据权利要求9所述的系统,其中,检测到的所述至少一个已知指令集包括反仿真指令,所述反仿真指令配置成阻止对所述文件的执行的仿真,其中,所述反仿真指令所对应的所述替选指令集配置成具有相同的对所述文件的执行的仿真结果,且不阻止对所述文件的执行的仿真。
12.根据权利要求7所述的系统,其中,使用来自已知指令集的数据库的一个或多个签名来检测从所述文件中读取的所述部分中的所述至少一个已知指令集。
13.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质包括用于对文件的执行进行仿真的计算机可执行指令,所述非暂时性计算机可读介质包括用于如下操作的指令:
生成文件的图像,所述文件的图像由从所述文件中读取的指令构成;
在从所述文件中读取的部分中检测至少一个已知指令集,其中检测到的所述至少一个已知指令集包括解释器库的指令集,所述解释器库的指令集配置成处理所述文件的与机器指令不同的指令;
生成所述解释器库的库文件的图像;
将断点插入到生成的所述文件的图像中的位置中,所述位置对应于从所述文件的被读取的所述部分中检测到的所述至少一个已知指令集的起点;以及
通过对来自生成的所述文件的图像和来自所述库文件的生成的图像的指令的执行进行仿真来对所述文件的执行进行仿真,以及将与仿真的所述至少一个已知指令集的执行相关联的相应记录添加到仿真日志。
CN201711024138.5A 2017-08-17 2017-10-27 对文件的执行进行仿真的系统和方法 Active CN109408194B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2017129267 2017-08-17
RU2017129267A RU2659742C1 (ru) 2017-08-17 2017-08-17 Способ эмуляции исполнения файлов, содержащих инструкции, отличные от машинных
US15/730,958 2017-10-12
US15/730,958 US10437618B2 (en) 2017-08-17 2017-10-12 System and method of emulating execution of files

Publications (2)

Publication Number Publication Date
CN109408194A CN109408194A (zh) 2019-03-01
CN109408194B true CN109408194B (zh) 2022-01-28

Family

ID=62815456

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711024138.5A Active CN109408194B (zh) 2017-08-17 2017-10-27 对文件的执行进行仿真的系统和方法

Country Status (4)

Country Link
US (2) US10437618B2 (zh)
JP (1) JP6586143B2 (zh)
CN (1) CN109408194B (zh)
RU (1) RU2659742C1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112949233B (zh) * 2021-03-08 2024-02-27 北京士昌鼎科技有限公司 Fpga芯片的自动化开发方法及装置、电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902906A (zh) * 2012-09-26 2013-01-30 中国航天科技集团公司第九研究院第七七一研究所 微处理器指令集验证方法
US9501643B1 (en) * 2015-09-30 2016-11-22 AO Kaspersky Lab Systems and methods for detecting malicious executable files containing an interpreter by combining emulators
CN106445524A (zh) * 2016-09-26 2017-02-22 杭州杉石科技有限公司 基于模型的SystemC代码生成方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040250150A1 (en) * 1987-06-02 2004-12-09 Swoboda Gary L. Devices, systems and methods for mode driven stops notice
US5574927A (en) 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US6145103A (en) * 1998-04-07 2000-11-07 Advanced Micro Devices, Inc. Emulator support mode for disabling and reconfiguring timeouts of a watchdog timer
US6564179B1 (en) * 1999-07-26 2003-05-13 Agere Systems Inc. DSP emulating a microcontroller
US7206733B1 (en) * 2000-10-26 2007-04-17 Cypress Semiconductor Corporation Host to FPGA interface in an in-circuit emulation system
US7178138B2 (en) * 2001-01-24 2007-02-13 Texas Instruments Incorporated Method and tool for verification of algorithms ported from one instruction set architecture to another
US20030033593A1 (en) 2001-08-08 2003-02-13 Evelyn Duesterwald Dynamic execution layer interface for explicitly or transparently executing application or system binaries
US7168067B2 (en) * 2002-02-08 2007-01-23 Agere Systems Inc. Multiprocessor system with cache-based software breakpoints
US20040040013A1 (en) * 2002-08-26 2004-02-26 Mohit Kalra Time-based breakpoints in debuggers
WO2004075060A1 (ja) 2003-02-21 2004-09-02 Tabei, Hikaru コンピュータウィルス検出装置
US7373642B2 (en) * 2003-07-29 2008-05-13 Stretch, Inc. Defining instruction extensions in a standard programming language
JP4756675B2 (ja) * 2004-07-08 2011-08-24 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ資源のキャパシティを予測するためのシステム、方法およびプログラム
JP4638505B2 (ja) 2004-11-24 2011-02-23 ノキア コーポレイション 電子デバイス内の安全なプログラム解釈方法
US8537730B2 (en) 2005-03-03 2013-09-17 Thomson Licensing Method and apparatus for sensing channel availability in wireless networks
US9507739B2 (en) * 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US7779472B1 (en) * 2005-10-11 2010-08-17 Trend Micro, Inc. Application behavior based malware detection
US8151352B1 (en) * 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
JP5161022B2 (ja) * 2008-10-06 2013-03-13 日本電信電話株式会社 解析装置、解析方法及び解析プログラム
US9038184B1 (en) 2010-02-17 2015-05-19 Symantec Corporation Detection of malicious script operations using statistical analysis
RU2430411C1 (ru) * 2010-03-02 2011-09-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносного программного обеспечения
US20130132063A1 (en) * 2011-11-18 2013-05-23 Michael J. Rieschl Systems and methods for debugging just-in-time static translation in an emulated system
RU2472215C1 (ru) * 2011-12-28 2013-01-10 Закрытое акционерное общество "Лаборатория Касперского" Способ выявления неизвестных программ с использованием эмуляции процесса загрузки
EP2669797A3 (en) * 2012-05-30 2014-04-09 Vector Fabrics B.V. Method and system for translating a function into non-native instructions
US9141361B2 (en) * 2012-09-30 2015-09-22 Intel Corporation Method and apparatus for performance efficient ISA virtualization using dynamic partial binary translation
RU2553056C2 (ru) * 2013-10-24 2015-06-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ сохранения состояния эмулятора и его последующего восстановления
US9355246B1 (en) * 2013-12-05 2016-05-31 Trend Micro Inc. Tuning sandbox behavior based on static characteristics of malware
US9817745B2 (en) * 2014-01-13 2017-11-14 Purdue Research Foundation Binary program instrumentation and debugging
US9684743B2 (en) * 2015-06-19 2017-06-20 Synopsys, Inc. Isolated debugging in an FPGA based emulation environment
US9846774B2 (en) * 2015-06-27 2017-12-19 Mcafee, Llc Simulation of an application
US9946624B1 (en) * 2015-12-04 2018-04-17 Cadence Design Systems, Inc. Systems and methods to capture data signals from a dynamic circuit
US10073932B2 (en) * 2016-03-04 2018-09-11 Synopsys, Inc. Capturing time-slice of emulation data for offline embedded software debug

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902906A (zh) * 2012-09-26 2013-01-30 中国航天科技集团公司第九研究院第七七一研究所 微处理器指令集验证方法
US9501643B1 (en) * 2015-09-30 2016-11-22 AO Kaspersky Lab Systems and methods for detecting malicious executable files containing an interpreter by combining emulators
CN106445524A (zh) * 2016-09-26 2017-02-22 杭州杉石科技有限公司 基于模型的SystemC代码生成方法

Also Published As

Publication number Publication date
US20190391830A1 (en) 2019-12-26
CN109408194A (zh) 2019-03-01
JP2019036278A (ja) 2019-03-07
JP6586143B2 (ja) 2019-10-02
US10437618B2 (en) 2019-10-08
US10838748B2 (en) 2020-11-17
US20190056963A1 (en) 2019-02-21
RU2659742C1 (ru) 2018-07-03

Similar Documents

Publication Publication Date Title
RU2514141C1 (ru) Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
EP2955658B1 (en) System and methods for detecting harmful files of different formats
RU2617654C2 (ru) Система и способ формирования набора антивирусных записей, используемых для обнаружения вредоносных файлов на компьютере пользователя
RU2514142C1 (ru) Способ повышения эффективности работы аппаратного ускорения эмуляции приложений
CN109558207B (zh) 在虚拟机中形成用于进行文件的防病毒扫描的日志的系统和方法
RU2553056C2 (ru) Система и способ сохранения состояния эмулятора и его последующего восстановления
KR101972825B1 (ko) 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램
RU2748518C1 (ru) Способ противодействия вредоносному программному обеспечению (ВПО) путем имитации проверочной среды
US11397812B2 (en) System and method for categorization of .NET applications
CN114266050A (zh) 一种跨平台恶意软件对抗样本生成方法及系统
WO2014132145A1 (en) Web service black box testing
CN113391874A (zh) 一种虚拟机检测对抗方法、装置、电子设备及存储介质
CN108228312B (zh) 通过解释器执行代码的系统和方法
US9098704B2 (en) Method for function capture and maintaining parameter stack
CN109408194B (zh) 对文件的执行进行仿真的系统和方法
CN113821297A (zh) 仿真器和仿真方法
RU2757409C1 (ru) Эмулятор и способ эмуляции
EP3444737B1 (en) System and method of emulating execution of files
RU2659734C1 (ru) Способ эмуляции исполнения файлов
RU2697951C2 (ru) Система и способ прекращения работы функционально ограниченного приложения, взаимосвязанного с веб-сайтом, запускаемого без установки
CN113378182A (zh) 一种提权漏洞检测方法、装置、设备及介质
RU2546588C2 (ru) Способ перевызова оригинальной функции после ее перехвата с сохранением стека параметров
TW202319944A (zh) 用於資通安全防護機制的驗證方法及驗證系統
CN117034278A (zh) 漏洞检测方法、装置、存储介质及电子设备
CN115238266A (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