CN101438529A - 经由动态转换的主动计算机恶意软件保护 - Google Patents

经由动态转换的主动计算机恶意软件保护 Download PDF

Info

Publication number
CN101438529A
CN101438529A CNA2005800385997A CN200580038599A CN101438529A CN 101438529 A CN101438529 A CN 101438529A CN A2005800385997 A CNA2005800385997 A CN A2005800385997A CN 200580038599 A CN200580038599 A CN 200580038599A CN 101438529 A CN101438529 A CN 101438529A
Authority
CN
China
Prior art keywords
program code
basic block
instruction
malware
execution
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
Application number
CNA2005800385997A
Other languages
English (en)
Other versions
CN101438529B (zh
Inventor
A·M·马里斯库
A·E·史蒂芬
G·M·格奥尔盖斯库
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN101438529A publication Critical patent/CN101438529A/zh
Application granted granted Critical
Publication of CN101438529B publication Critical patent/CN101438529B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)

Abstract

本发明包括用于将潜在恶意软件设备转换成安全程序代码的系统和方法。潜在恶意软件从多个不同类型的源语言,包括但不限于本机CPU程序代码、平台无关.NET字节代码、脚本程序代码等中的任何一种转换。经转换的程序代码被编译成可由本机CPU理解并执行的程序代码。在执行之前和/或期间,本发明使扫描器搜索存储器中存储的潜在恶意软件。如果未检测到恶意软件,则计算设备使CPU执行经转换的程序代码。然而,如果存储潜在恶意软件的计算机存储器在执行期间被更改,则对恶意软件的执行和/或分析可能被中断。在这种情况中,现在存储在存储器中的潜在恶意软件在执行之前被转换成安全程序代码。

Description

经由动态转换的主动计算机恶意软件保护
技术领域
本发明涉及计算设备,尤其涉及针对恶意软件的计算设备保护。
背景技术
随着越来越多的计算机和其它计算设备经由诸如因特网等各种网络互连,计算机安全变得日益重要,尤其对于经由网络或信息流传递的侵入或攻击。如本领域的技术人员可以认识到的,这些攻击具有各种形式,包括但当然不限于,计算机病毒、计算机蠕虫、系统组件替换、服务拒绝攻击、甚至是对合法的计算机系统特性的误用/滥用,所有这些都为不合法的目的而利用一个或多个计算机系统的漏洞。尽管本领域的技术人员将认识到各种计算机攻击在技术上彼此不同,但为本发明的目的以及描述的简明性起见,所有恶意计算机程序在后文中一般被称为计算机恶意软件,或简称为恶意软件。
当计算设备被计算机恶意软件攻击或“感染”时,不利的结果是各有不同的,包括禁用系统设备;擦除或破坏固件、应用程序或数据文件;将潜在敏感的数据发送给网络上的另一位置;关闭计算机设备;或使计算设备崩溃。众多而不是全部计算机恶意软件的另一有害方面在于,受感染的计算设备被用于感染其它系统。
针对计算机恶意软件,尤其是计算机病毒和蠕虫的传统防御是反病毒软件。一般而言,反病毒软件扫描传入的数据、查找与已知计算机恶意软件相关联的可标识模式。而且,反病毒软件越来越多地利用将传入的数据与已知恶意软件的特征进行比较的试探技术。在任何情况中,当检测到计算机恶意软件时,反病毒软件可通过从受感染的数据中移除该计算机恶意软件、隔离该数据或删除受感染的传入数据来响应。不幸的是,反病毒软件一般对已知的、可标识的计算机恶意软件起作用。通常,这是通过将数据内的模式与所谓的恶意软件的“签名”进行比较来完成的。这种恶意软件检测模型的核心缺陷之一在于,未知的计算机恶意软件可在网络中未经检查地传播,直到计算设备上的反病毒软件被更新来标识并响应该恶意软件。
随着反病毒软件对识别成千种已知计算机恶意软件变得越来越老练且高效,计算机恶意软件也变得越来越复杂。例如,恶意计算机用户现在对恶意软件加密以便在不可识别模式背后模糊恶意软件签名。例如,多形(polymorphic)恶意软件由恶意软件解密例程和经加密的恶意软件“有效负载”组成。当用户执行受感染程序时,恶意软件解密例程获取对该计算设备的控制,并对之前加密的恶意软件有效负载解密。然后,解密例程将对计算设备的控制传送给已解密的恶意软件有效负载。每当新目标被感染时,恶意软件复制解密例程和恶意软件有效负载两者。一般,用于加密恶意软件有效负载的加密密钥在恶意软件被复制时被改变。结果是,经加密的恶意软件不具有反病毒软件可用于识别恶意软件的可标识模式或“签名”。
当寡形(oligomorphic)恶意软件被创建时,反病毒软件开发员认识到,解密例程在恶意软件的各版本之间保持不变。反病毒软件开发员通过不仅扫描恶意软件签名,还扫描已知与恶意软件相关联的专用解密例程来利用该弱点。作为响应,恶意计算机用户开发了被设计成防止解密例程被标识的更复杂的恶意软件(后文中,使用被设计成隐藏恶意软件签名的技术的所有类型的恶意软件将被称为“隐蔽(obscured)恶意软件”)。
图1是示出可用于分发“有效负载”的被称为多形恶意软件100的一种隐蔽恶意软件的示意图。如图1中所示,多形恶意软件100附加到主机程序102,且在此实例中,它被示为包括加密引擎106、解密例程108以及多形文件传染者110的病毒104。多形恶意软件100对病毒104的片段加密以防止可标识签名被标识。然而,病毒104还包括每当病毒104传播时即生成随机加密例程的加密引擎106。当病毒104运行时,多形文件传染者110标识新目标,并在计算机存储器中复制病毒104。此时,加密引擎106随机生成具有极少或不具有与之前开发的加密例程的相似性的新加密例程。然后,病毒104的经加密的副本被追加给被标识的目标。结果,病毒104被加密,且用于加密和解密的例程随感染而有所不同。在没有固定恶意软件签名或固定加密例程的情况中,常规的反病毒软件不可能检测多形恶意软件100,因为签名不可标识。
考虑到上述问题,计算机用户拥有针对诸如隐蔽恶意软件等恶意软件来主动保护计算机的软件将是有利的。
发明概述
本发明提供用于针对恶意软件保护计算设备的安全模型。根据本发明的一个方面,提供了一种用于将与计算设备相关联的潜在恶意软件转换成安全程序代码的方法。本发明的这一方面以在存储器中所标识的程序入口点处分析潜在恶意软件开始。对恶意软件的初始分析包括通过对指令解码直到遇到基本块中的最后一条指令来将程序代码分成“基本块”。在基本块中的指令之前未经扫描的情况中,扫描器搜索基本块以查找恶意软件。如果检测到恶意软件且以足够级别的精确性得出该恶意软件的身份,则包含该恶意软件的文件被报告为受到感染。在这种情况中,本发明的进一步分析是不必要的。在其它情况中,基本块中的已解码指令被转换成可执行的等效且安全的程序代码。这种转换可从潜在恶意软件直接执行。或者,可使用被“编译”成可执行程序代码的体系结构中立格式来执行转换。
根据本发明的另一方面,提供了一种用于安全地执行经转换程序代码的基本块的方法。本发明的这一方面包括确定经转换的程序代码的基本块在转换之后是否被更改。在发生更改的情况中,经修改的基本块在执行之前被转换。当没有发生更改时,不需要额外的转换,且执行现有的“经编译”的程序代码。可执行程序代码能够确定之前转换的程序代码是否作为执行结果而被更改。曾被更改的程序代码的任何基本块被丢弃并在执行之前被再次转换。当执行完成之后,当前执行点被更新,且执行控制被转移给后续基本块。然后重复基本块的转换和执行直到恶意软件被标识、中断条件出现、或程序完成执行。
附图简述
通过结合附图考虑参考以下详细描述,本发明的前述方面和众多伴随的优点将更容易被领会且将更好地被理解,附图中:
图1是示出可使用本发明来标识的多形恶意软件的组件的框图;
图2是根据本发明的适用于执行动态转换并执行程序代码的计算设备的组件的框图;
图3是根据本发明的利用体系结构中立格式(neutral format)将潜在的恶意软件转换成安全程序代码的过程的框图;
图4是示出根据本发明的可用于将潜在的恶意软件转换成安全程序代码的转换方法的示例性实施例的流程图;
图5是示出根据本发明的可用于执行程序代码的执行方法的示例性实施例的流程图。
详细描述
根据本发明,提供了一种用于将与计算设备相关联的潜在的恶意软件转换成安全代码的系统、方法和计算机可读介质。潜在的恶意软件从包括但不限于本机CPU程序代码、平台无关.NET字节代码、以及脚本程序代码等的多种不同类型的源语言中的任何一种被转换成体系结构中立格式的安全且功能上相等的程序代码。然后,所转换的程序代码被“编译”回可由本机CPU执行的程序代码。在执行之前和/或期间,本发明使扫描器搜索存储器中所存储的恶意软件。如果未检测到恶意软件,则计算设备使CPU执行经转换的程序代码。然而,如果存储潜在恶意软件的计算机存储器在执行期间被更改,则执行可被中断。在这种情况中,现在存储在存储器中的新的潜在恶意软件将在被执行之前被转换成安全程序代码。
尽管将主要在专用计算机体系结构和源语言的上下文中描述本发明,但相关领域的技术人员和其他人将理解,本发明也可应用于除所述以外的其它计算机体系结构或源语言。以下描述首先提供了可在其中实现本发明的系统的概观。然后,描述实现本发明的方法。此处提供的说明性的示例不旨在是详尽的,或将本发明限制于所公开的精确形式。类似地,此处所述的任何步骤可与其它步骤或步骤的组合互换,以便达到相同的结果。
现在参考图2,以下旨在提供可在其中实现本发明的一个合适的恶意软件检测系统200的示例性概观。所示的恶意软件检测系统200包括中央处理单元202、扫描器204、转换引擎206、块管理器208、编译引擎210以及虚拟环境212。在本发明的一个实施例中,虚拟环境212包括虚拟I/O系统214和虚拟存储器216。而且,如以下进一步详细描述的,转换引擎206和编译引擎210各自可支持一个或多个插件模块,诸如插件模块218和220。在描述本发明的一个实施例的一般术语中,恶意软件检测系统200的组件提供扫描器204检测隐蔽恶意软件所需的基础架构。而且,恶意软件检测系统200的组件允许在执行从潜在恶意软件转换的安全程序代码时对恶意软件的快速解密和检测。
如图2中所示,恶意软件检测系统200包括CPU 202。本领域中的技术人员及其他人将认识到,CPU 202通过支持本机程序代码的执行来用作恶意软件检测系统200的计算中心。用于检测隐蔽恶意软件的一种现有技术系统在包括虚拟CPU的虚拟操作环境中“模拟”程序执行。在模拟期间,基于在虚拟操作环境中所观察到的程序事件生成行为签名。行为签名适用于分析来确定所模拟的程序是否是恶意软件。在这种类型的系统中,程序中的每一指令在虚拟CPU上被模拟。结果是,模拟可能是耗时的,且与由本发明提供的恶意软件检测基础架构相比可能导致可观的性能降级。例如,经由循环为每一迭代在虚拟CPU上模拟循环中的程序指令,即使程序指令的效果在之前迭代中已被观察到。而且,程序在消费显著计算开销的软件实现的虚拟CPU上被模拟。作为对比,本发明在实际或基于硬件的CPU 202上执行程序代码。为了确保恶意软件不被执行,潜在恶意软件中的程序代码在被执行之前被转换成安全程序代码。
如图2中所示,恶意软件检测系统200包括被设计成检测恶意软件的扫描器204。如本领域的技术人员及其他人所知的,众多不同的软件厂商在反病毒软件中包括被配置成标识恶意软件的程序代码特征的扫描器。不幸的是,现有的扫描器未被配置成结合在执行之前将潜在恶意软件转换成安全程序代码的系统一起工作。相反,某些现有的扫描器与上述类型的模拟系统一起工作。在这些系统中,扫描器增加了附加的开销,使得模拟过程将花费不合理的时间量。然而,由本发明实现的软件例程向扫描器204提供迅速标识诸如在运行时“被打开”(即,解密)或加载到存储器内的恶意软件等隐蔽恶意软件所需的基础架构。
恶意软件检测系统200还包括被设计成将潜在恶意软件转换成体系结构中立程序代码的转换引擎206。更具体地,转换引擎206可从按照包括但不限于本机CPU程序代码、独立于平台的字节代码以及脚本程序代码等多种不同格式中的任何一种的源语言对潜在的恶意软件解码。然后,已解码程序代码中的每一指令被转换成体系结构中立格式。在转换期间,已解码的程序代码可被分成基本块。如本领域中的技术人员及其他人所知的,基本块是仅在序列的开始处包含单个入口点且在序列结尾处包含单个出口点的程序代码序列。换言之,基本块至多包含单条“跳转”指令。经转换的程序代码的基本块是本发明转换并执行潜在恶意软件的单位。由于程序代码可从众多源语言转换,因此转换引擎206支持诸如插件模块218等插件模块。插件模块提供用于将源语言的程序代码转换成体系结构中立格式的安全程序代码的逻辑。在替换实施例中,转换引擎206将潜在恶意软件直接从源语言转换成可被执行的安全程序代码。在此实施例中,不使用体系结构中立格式。然而,体系结构中立格式在转换引擎206被配置成从多种源语言转换程序代码的情况中简化了转换过程的实现。
恶意软件检测系统200还包括用于管理基本块的执行的块管理器208。块管理器208被配置成分析基本块,并构建存储关于不同基本块之间的关系的信息的数据结构。当执行了经转换的程序代码之后,块管理器208中所包含的逻辑提供用于确定何时转换其它程序代码的决策制定过程。在这点上,块管理器208将参考并更新数据结构中所存储的数据。块管理器208还包含用于确定何时应由扫描器204对程序代码搜索恶意软件的逻辑。
如图2中所示,恶意软件检测系统200包括生成可由CPU 202执行的程序代码的编译引擎210。更具体地,由转换引擎206生成的体系结构中立程序代码由编译引擎210编译成体系结构专用格式。由于可能需要对不同的体系结构编译程序代码,因此编译引擎210支持插件模块,诸如插件模块220。插件模块提供用于将体系结构中立程序代码编译成遵循由专用计算机体系结构施加的约束的程序代码的逻辑。
如图2中所示,恶意软件检测系统200还支持虚拟环境212,它包括虚拟I/O系统214和虚拟存储器216。由于虚拟环境的众多功能对理解本发明而言不是重要的,因此它们将不在此处详细说明。而且,因为它们对理解本发明而言不是重要的,因此虚拟环境212中的众多组件将不在图2中示出。就本发明而言,虚拟环境212提供关于潜在恶意软件对资源的使用的信息。例如,块管理器208提供用于确定何时转换程序代码的决策制定过程。在这点上,块管理器208可对虚拟环境212作出调用以确定基本块在执行期间是否在存储器中被更改。虚拟环境212被配置成向由本发明实现的软件例程提供关于资源使用的信息,包括存储器分配中的改变。
如图2中所示,恶意软件检测系统200的每一组件,例如中央处理单元202、扫描器204、转换引擎206、块管理器208、编译引擎210以及虚拟环境212被互连且能够与其它组件通信。如本领域的技术人员及其他人所知的,图2是能够执行由本发明实现的功能的一种恶意软件检测系统200的简化示例。恶意软件检测系统200的实际实施例将具有未在图2中示出或未在附随的文字中描述的其它组件。而且,图2示出用于安全执行经转换的程序代码的一种组件体系结构,但其它组件体系结构也是可能的。
现在参考图3,将描述为恶意软件检测的目的而由本发明实现以产生安全程序代码的组件和例程。图3示出包括AMD-64可执行代码302、X86-32可执行代码304以及.NET字节代码306的潜在恶意软件的三个示例。图3中还示出图2中所示的转换引擎206、编译引擎210、以及插件模块218-220。一般而言,转换引擎206和编译引擎210一起工作来产生执行安全的程序代码。图3中所示的本发明的实施例利用体系结构中立格式来产生安全程序代码。然而,在替换实施例中,潜在恶意软件302-306可无需利用体系结构中立格式而被直接转换成安全程序代码。
动态转换一般被定义为用于将程序代码从源语言转化成目标语言或格式的过程。程序代码一般被转换以便满足目的。例如,某些现有的转换器通过将指令集缩减成较小但功能上相等的指令集来优化程序代码。作为另一示例,某些CPU支持将程序代码从由老计算机体系结构所理解的语言转换成最近开发的语言,使得传统程序可在新计算设备上执行。大多数现代转换器是动态的,这表现在转化程序代码的过程在运行时或当程序代码被执行时“在运行中”被执行。实现动态转换的过程被限于恶意软件检测的区域之外。然而,如图3中所示,本发明提供了转换引擎206中的一般框架,以便为恶意软件检测的目的而将程序代码从源语言(即,AMD64位、X86 32位、以及.NET字节代码)转换成目标格式(即,体系结构中立格式)。换言之,转换引擎206不限于仅在两种语言之间转换程序代码。相反,转换引擎206可被配置成支持从多种源语言转换。在这一点上,插件模块可被添加到转换引擎206来支持源语言与体系结构中立格式之间的转换。图3中所示的这种类型的源语言应被解释为示例性而非限制性的。例如,本发明可被配置成从图3中未示出的脚本语言或体系结构无关源语言转换程序代码。
在本发明的一个实际实施例中,插件模块218支持满足“X86”32位指令集要求的语言与体系结构中立格式之间的转换。在转换过程期间,不仅程序代码从源语言转换成使用目标语言的功能上相等的代码,而且程序代码也变为“安全的”(即,如果执行则不能够引起对计算设备的损害)。例如,以下指令可使用源语言——“X/Y”来实现,其中“X”和“Y”是数字变量。如果“Y”等于值0,则这种类型的指令将引起程序崩溃。在这种情况中,指令被转换成“只要Y≠0则为X/Y”。作为另一示例,插件模块218转换试图访问诸如硬件设备、存储器和寄存器等资源的指令。如以上参考图2所述的,结合维护虚拟资源的虚拟环境212来实现本发明。在这种情况中,本发明转换访问资源的指令,以便完成虚拟资源与实际资源之间必需的映射。
如图3中所示,当潜在恶意软件302-306被转换成体系结构中立程序代码308之后,编译引擎210和插件模块220将体系结构中立程序代码308“编译”成安全程序代码。在图3中,安全程序代码由安全程序代码310、安全程序代码312、以及安全程序代码314表示。如图所示,安全程序代码可取决于CPU 202(图2)的体系结构使用多种不同格式中的任一种。如本领域中的技术人员及其他人所已知的,编译在传统上被定义为将高级程序代码转换成可执行代码。就本发明而言,编译引擎210从体系结构中立程序代码308生成可执行程序代码。在本发明的一个实施例中,体系结构中立程序代码308是二进制格式的。因此,由编译引擎210执行的“编译”被定义为从体系结构中立二进制代码生成可执行程序代码。而且,编译引擎210提供用于将程序代码从体系结构中立格式“编译”成满足专用计算机体系结构的约束的可执行代码的一般框架。换言之,编译引擎210不限于在两种格式之间“编译”程序代码。相反,取决于CPU 202的体系结构,编译引擎210可将体系结构中立程序代码308编译成多种格式中的任一种的程序代码。在这点上,由编译引擎210提供的功能可由插件模块扩展。在本发明的一个实际实施例中,插件模块220支持将体系结构中立程序代码“编译”成满足“X86”32位指令集的约束的程序代码。
图4是示出根据本发明形成的转换方法400的一个示例性实施例的流程图。响应于接收执行潜在恶意软件的请求,转换方法400顺序分析潜该恶意软件中的指令。当遇到作为之前未由本发明分析的基本块中的第一条指令的指令时,转换方法400使扫描器执行对基本块中的恶意软件的搜索。所选指令被解码成描述该指令属性的数据集。然而,该数据集被用于将所选指令转换成体系结构中立格式的安全且功能上相等的程序代码。当程序代码的基本块被转换成体系结构中立格式之后,经转换的程序代码被“编译”成可执行代码。继续参考图1-3及其所伴随的描述,现在将描述图4中所示的示例性转换方法400。
在步骤402处,转换方法400保持空闲,并等待执行潜在恶意软件的请求。如本领域中的技术人员及其他人所知的,可经由各种不同的机制发起执行潜在恶意软件的请求。例如,计算机用户可通过在与程序相关联的图标上“双击”而发出启动程序执行的请求。作为另一示例,计算机用户可通过从下拉式菜单或其它基于图形的输入系统发出“打开文件”命令来发起与文件相关联的程序的执行。然而,如本领域中的技术人员及其他人所知的,以上提供的示例应被解释为示例性而非限制性的,因为对发出执行潜在恶意软件的请求而言存在众多不同的机制。
为了满足步骤402处接收的请求,操作系统的现有组件在步骤404处执行动作来为执行潜在恶意软件作准备。一般,为了执行程序,操作系统为程序初始化地址空间(即,存储器),并将所需程序代码复制到经初始化的地址空间内。然而,如本领域中的技术人员及其他人所知的,恶意软件可能通过在恶意软件签名可被标识之前对有效负载解密或“打开”来在执行期间更改存储器中的数据。一般,恶意软件有效负载作为对已经存储在存储器中的数据的算术和/或逻辑运算的应用的结果而被“打开”。在任何情况中,与潜在恶意软件相关联的程序代码在步骤404处被加载到存储器中。
在步骤406处,转换方法400初始化描述潜在恶意软件中包括基本块之间的执行流在内的基本块属性的数据结构。如以下将参考图5进一步详细描述的,本发明一般执行程序代码的单位是基本块。在步骤406处,使用描述每一基本块的信息初始化数据结构。例如,标识被调度成在当前基本块之后执行的基本块的后继基本块并将其存储在数据结构中。而且,标识在基本块之间发生的控制转移的类型(即,条件和非条件分支等)并将其存储在数据结构中。在这一点上,标识从其它基本块中接受控制或将控制转移给另一基本块的指令。
在步骤408处,选择将由转换方法400分析的指令。如前所述,程序中的指令以定义的顺序被执行。然而,诸如分支等某些指令通过在用于标识被调度来执行的下一指令的寄存器中置新值来中断正常的执行顺序。如将在以下进一步详细描述的,中断正常执行顺序的指令标记基本块的末尾。由转换方法400执行的分析遵循程序执行时发生的同一执行流。然而,分析以及之后执行程序代码的基本单位是基本块。由于可使用本领域中公知的技术来标识位于执行流中的指令,因此将不在此处提供对转换方法在步骤408处使用的技术的进一步描述。
如图4中所示,转换方法400在步骤410处确定步骤408处所选的指令是否是基本块中之前未被本发明分析过的第一条指令。在本发明的一个实施例中,位于程序入口点处或位于跳转指令的目的地地址处的指令被标识为基本块中的第一条指令。而且,转换方法400通过将所选指令的地址与之前分析过的每一基本块(如有)中的第一条指令的地址进行比较来确定基本块之前是否已被转换成安全程序代码。如果所选指令不匹配之前分析的基本块中的第一条指令的地址,则所选指令是之前未被转换成安全程序代码的新基本块的开头,且转换方法400前进至步骤412。反之,如果所选指令不是基本块中的第一条指令或者当前基本块之前已被分析,则转换方法400前进至步骤414。
在步骤412处,在步骤406处初始化的数据结构中创建步骤410处所标识的基本块的条目。如前所述,由本发明维护的数据结构描述了被转换成安全程序代码的基本块的属性。例如,每一基本块的起始地址以及描述基本块的属性的其它数据被存储在该数据结构中。而且,步骤412处在数据结构中创建条目包括实例化与基本块相关联的某些变量。例如,实例化指示是否已对基本块扫描恶意软件的变量(后文中称为“扫描变量”)以及指示基本块是否被转换成安全程序代码的变量(后文中称为“转换变量”)并将其存储在数据结构中。当实例化这些变量时,在步骤412处,它们的值指示尚未对基本块扫描恶意软件或基本块尚未被转换成安全程序代码。
在步骤414处,转换方法400确定是否需要在执行包含所选指令的基本块前对其搜索恶意软件。如上所述,“扫描”变量与每一基本块相关联,它指示之前是否对该基本块扫描过恶意软件。在步骤414处,转换方法400标识与当前基本块相关联的变量的值。如果之前未对当前基本块搜索恶意软件,则转换方法400前进至步骤416。反之,如果之前搜索过该基本块,则转换方法400前进至下述步骤426。
在步骤416处,转换方法400使得为步骤408处所选指令所在的基本块执行扫描。在本发明的一个实施例中,扫描器204(图2)中的软件实现的例程对当前基本块搜索恶意软件。如上所述,大多数防病毒软件应用程序或扫描器通过将数据模式与恶意软件“签名”进行匹配来搜索恶意软件。然而,当数据被“打开”(即解密)或在执行期间下载到存储器中时,随着某些隐蔽恶意软件的出现而出现现有反病毒软件的漏洞。在这种情况中,潜在恶意软件中的程序代码的执行继续,而没有执行对恶意软件的附加扫描。换言之,当数据在运行时被“打开”时,执行不会被中断。然而,如将在以下参考图5更详细描述的,本发明当数据在运行时被“打开”时会中断程序执行。因此,在步骤416处,在恶意软件有效负载被“打开”或加载到存储器中之后,扫描器204可搜索隐蔽恶意软件。而且,在当前基本块被扫描之后,在步骤416处,转换方法400设置与当前基本块相关联的“扫描”变量的值来指示已对当前基本块扫描了恶意软件。
如图4中所示,在步骤418处,转换方法400确定当前基本块在步骤416处是否被标识为受到恶意软件感染。如果标识了恶意软件感染,则方法400进而在步骤420处使用本领域中公知的技术向用户报告感染。如果未标识恶意软件感染,则转换方法400前进至下述步骤426。
在步骤422处,转换方法400确定是否以足够的精确性得出恶意软件的身份。当检测到恶意软件时,通常可从恶意软件的签名或其它特性中明显得出恶意软件的身份。然而,在某些情况中,恶意软件的感染是显而易见的,但不知道恶意软件的确切身份。例如,某些恶意软件具有难以区分的变体。在任何情况中,如果基本块受到感染,且以足够的精确性得出恶意软件的身份,则转换方法400前进至步骤424,在那里它终止。反之,如果不能以足够的精确性得出恶意软件的身份,则转换方法400前进至步骤426。
在步骤426处,转换方法400确定包含所选指令的基本块在被执行之前是否需要被转换成安全程序代码。如前所述,本发明使“转换”变量与每一基本块相关联,该变量指示该基本块之前是否被转换并被“编译”成安全且可执行的程序代码。如果基本块之前未被转换并“编译”成可执行且安全的程序代码,则转换变量指示该基本块是潜在恶意软件。在步骤426处,转换方法400标识当前基本块的转换变量的值。如果当前基本块是潜在恶意软件,则转换方法400前进至步骤428。反之,如果基本块之前被转换并被“编译”成可执行且安全的程序代码,则转换方法400前进至步骤440,在那里它终止。在这种情况中,基本块可根据以下参考图5描述的执行方法500被安全地执行。
如图4中所示,转换方法400在步骤428处将所选指令从源语言(即,本机CPU程序代码、平台无关字节代码、脚本程序代码等)解码成描述该指令的数据集。该数据集包括但不限于,指令的长度和类型、操作数的个数和类型、执行该指令所需的特权级别。在步骤428处,将所选指令从源语言解码成描述指令的数据集,以使由所选指令提供的功能可被转换成体系结构中立格式。由于所选指令可使用本领域中公知的技术来解码,因此将不在此处提供对本发明所使用的技术的进一步描述。
在步骤430处,所选指令被转换成体系结构中立格式的安全程序代码。这种转换可由转换引擎206的插件模块,诸如插件模块218(图2)来执行。在描述本发明的一个示例性实施例的一般情况中,转换方法400将正被分析的所选指令转换成体系结构中立格式的安全指令。为了执行这种转换,可用于“打开”(即,解密)或导致恶意软件功能的每一类指令由转换引擎206的插件模块中所包含的例程转换成安全程序代码。在这一点上,实现算术运算(即,“加”、“乘”等)、逐位运算(即,“与”、“或”、“异或”等)、使用硬件设备的输入/输出(即,“读”、“写”等)等的指令被转换成体系结构中立格式的功能相等的程序代码。例如,本发明使用包括虚拟I/O系统214的虚拟环境212(图2)中的资源。因此,如果所选指令试图访问I/O设备,则方法400转换该指令,以使输入和输出被发送给虚拟I/O系统214。尽管描述了本发明转换的指令的具体示例,但所提供的示例应该被解释为示例性而非限制性的。
如图4中所示,转换方法400在步骤432处确定步骤408处所选的指令是否是基本块中的最后一条指令。本领域中的技术人员及其他人可以认识到,基本块以诸如跳转指令等单个退出点结束。在步骤432处,转换方法400确定所分析的指令是否是基本块中的最后一条指令。由于基本块中的最后一条指令可使用本领域中公知的技术来标识,因此将不在此处更详细描述本发明所使用的技术的进一步描述。如果所分析的指令是当前基本块中的最后一条指令,则转换方法400前进至步骤432。反之,如果所选指令不是基本块中的最后一条指令,则转换方法400回到步骤408,并重复步骤408到432直到选择了当前基本块中的最后一条指令。
如图4中所示,在步骤434处,转换方法400使当前基本块被“编译”成可执行程序代码。如本领域的技术人员及其他人所知的,编译器是获取以源语言编写的程序代码并生成为特定体系结构设计的可执行程序代码的程序。一般,编译器首先从源语言逐个解析所有的程序代码。然后,在一个或多个相继阶段,编译器以确保指令正确引用其它指令的方式来构建可执行代码。由编译器产生的输出满足计算设备的体系结构要求,并允许CPU顺序执行指令。对于本发明,在步骤434处,转换方法400从体系结构中立程序代码生成可执行程序代码。由于体系结构中立程序代码是二进制格式,因此在步骤434处进行的“编译”涉及从体系结构中立二进制代码生成可执行程序代码。而且,如将在以下进一步详细描述的,在“编译”期间,可将一条或多条指令添加到已编译代码中。在本发明的一个实际实施例中,编译引擎210的插件模块220支持将体系结构中立程序代码“编译”成满足“X86”32位指令集的约束的程序代码。然后,转换方法前进至步骤436,在那里它终止。
在步骤436处,转换方法400确定“已编译”程序代码中的最后一条指令是否是跳转指令。一般,基本块以将执行控制转移给当前基本块以外的程序代码的跳转指令结束。在步骤430处,本发明将所遇到的跳转指令转换成在基本块执行之后使执行控制返回给块管理器208(图2)的新跳转指令。在基本块被执行之前,块管理器208执行上述包括使扫描器204搜索恶意软件在内的一些动作。然而,程序代码的基本块可由本发明为恶意软件检测的目的而被拆分、合并或以其它方式处理。例如,如将在以下参考图5更详细描述的,当执行使得存储器中的程序代码在当前执行点之后在基本块中改变时,在没有对该基本块扫描恶意软件的情况下继续执行可能导致不合需要的功能。在这种情况中,基本块被“拆分”成两个或更多的基本块。结果,在这种或其它情况中,转换方法400将遇到不以跳转指令结束的基本块。如果已编译程序代码中的最后一条指令是跳转指令,则程序控制将在当前基本块执行之后被返回给块管理器208。在这种情况中,转换方法400前进至块440,在那里它终止。反之,如果已编译程序代码中的最后一条指令不是跳转指令,则在当前基本块执行之后控制将不会正常地返回给块管理器208。在这种情况中,转换方法400前进至步骤438。
在步骤438处,向“已编译”程序代码添加在基本块的执行完成之后使程序控制返回给块管理器208(图2)的指令。本发明管理程序执行流的各方面,使得加载到存储器中的潜在恶意软件在执行之前可被扫描并被转换成安全程序代码。如前所述,块管理器208控制执行流。因此,在步骤438处向已编译程序代码添加在基本块执行完成之后使程序控制返回给块管理器208的指令。
在本发明的替换实施例中,向“已编译”程序代码添加不会将程序控制转移给块管理器208的指令。在该实施例中,如果被调度来执行的下一基本块是干净的,例如之前曾扫描过恶意软件且不会作为执行结果而被更改,则在步骤438添加将程序控制转移给调度来执行的下一基本块的指令。
参考图4描述的转换方法400中的步骤也可按照不同于所示的顺序执行。而且,某些步骤可被添加或可从转换方法400移除,而不背离本发明的范围。例如,当潜在恶意软件的基本块被转换成程序代码之后,安全程序代码可被“优化”,即重新配置,以便迅速执行。因此,图4中所述的方法400仅提供可在其中实现本发明的实施例的方式的一个示例。
图5是可结合以上参考图4所述的转换400使用以执行已转换程序代码的基本块的一个示例性执行方法500的流程图。特别地,在基于硬件的CPU上顺序选择并执行基本块中的指令。在某些情况中,存储器中的程序代码被“打开”(即,解密),且之前转换的程序代码被更改。在这种情况中,曾被更改的基本块为“脏”,例如需要在被执行之前对其搜索恶意软件并被转换成安全程序代码。继续参考图1-4以及伴随的描述,现在将描述图5中所示的示例性执行方法500。
在步骤502处,执行方法500保持空闲并等待,直到已转换程序代码准备好被执行。在本发明的实际实施例中,当转换方法400(图4)完成基本块的转换时,已转换程序代码准备好被执行。
在步骤504处,执行方法500选择被调度来执行的基本块中的指令。在本发明的一个实施例中,已被转换成安全程序代码的基本块被存储在用于临时存储的“缓冲区”或存储区中。分配给“缓冲区”的存储器地址可能不会被潜在恶意软件更改。对所选的每一指令,执行方法500使得指令被执行。然后作出执行是否导致中断条件的判断。在所选指令导致中断条件的情况中,执行方法500标识中断条件的来源。在某些情况中,中断条件源于存储器中正被“打开”(即,解密)的程序代码。在这种情况中,曾被更改或重写的基本块在被执行之前被重新转换成安全程序代码。
在步骤506处,执行方法500使所选指令被执行。如本领域的技术人员及其他人所知的,CPU的主要用途是执行指令。因此,多种市场上销售的CPU中的任一种可用于实现执行方法500的这一方面。一般,CPU遵循“取出并执行”周期,其中指令被顺序地从存储器中“取出”然后被“执行”。对于本发明,从缓冲区而非存储潜在恶意软件的存储器位置中“取出”指令。如上所述,缓冲区包含可被安全执行而不会使计算设备受到恶意软件的影响的已转换程序代码。
在执行期间,方法500确定所选指令是否试图执行非法或特许操作。例如,所选指令可能试图执行数字除以0的算术运算或访问特许存储器位置。在本发明的一个实施例中,从潜在恶意软件转换的安全程序代码被配置成使得程序代码能够检测在执行期间出现的出错条件并中断执行。如果在执行期间标识了出错条件,则之前开发的异常处理程序将试图从出错条件恢复。如本领域的技术人员及其他人所知的,异常处理程序是使用处理中断的结构化方法的事件驱动的例程。在某些情况中,出错条件是可恢复的,且程序执行可在遇到中断条件之后恢复。在其它情况中,中断条件是临界的,且程序执行在完成之前停止。然而,在出错条件可恢复的情况中,在程序控制被转移给异常处理程序之前,存储恢复执行所必需的信息。
如图5中所示,在步骤508处,当所选指令被执行之后,执行方法500确定作为执行结果是否导致了中断条件。中断条件可在不同的情况中出现,包括但不限于当执行导致(1)当前基本块中执行点之后的数据被更改;以及(2)被调度来将执行的后续基本块中的数据被更改时的情况。如将在以下更详细描述的,执行方法500有差别地处理这些中断条件。如果在步骤508处检测到中断条件,则执行方法500前进至如下所述的框512。反之,如果未在步骤508处检测到中断条件,则执行方法500前进至步骤510。
在步骤510处,执行方法500确定是否当前基本块中的所有指令均已被执行。如前所述,本发明执行程序代码的基本单位是基本块。如果当前基本块中的所有指令都已被执行,则执行方法500前进至下述步骤520。反之,如果当前基本块中还有未被执行的指令,则方法500回到步骤504,并重复步骤504到510直到当前基本块中的所有指令均被执行。
在步骤512处,执行方法500确定步骤508处所标识的中断条件是否需要立即转换程序代码。例如,在执行导致潜在恶意软件被“打开”(即,解密)使得当前基本块中被调度来在所选指令之后执行的程序代码被更改的情况中,在执行恢复之前执行对被更改的程序代码的转换。如前参考图4所述的,程序代码的基本块可由本发明为恶意软件检测的目的而被拆分、合并或以其它方式处理。在当前基本块中当前执行点之后的程序代码被更改的情况中,该基本块被拆分成两个基本块;第一个块包含已经执行的程序代码,第二个块包含所选指令之后的程序代码。如以下进一步详细描述的,对第二基本块扫描恶意软件,并在执行之前将其转换成安全程序代码。如果不需要立即转换程序代码,则执行方法500前进至下述的步骤516。反之,如果需要立即转换程序代码,则执行方法500前进至步骤514。
在步骤514处,执行方法500使得基本块被扫描并被转换成安全程序代码。更具体地,如果到达步骤514,则基于当前执行点将基本块拆分成两个基本块。包含被调度来在所选指令之后执行的程序代码的基本块被标记为在执行之前需要扫描并转换成安全程序代码。以上参考图4描述了用于将程序代码的基本块转换成安全程序代码的方法的一个实施例。然后,执行方法500前进至下述步骤520。
在步骤516处,执行方法500确定是否因为被调度来在当前基本块之后执行的随后基本块中的程序代码作为执行结果而被更改而导致步骤508处所标识的中断条件。例如,在执行所选指令使程序代码“打开”(即,解密)使得后续基本块中的数据被更改的情况中,则在执行该后续基本块之前对该其搜索恶意软件并将其转换成安全程序代码。如果因为后续基本块中的程序代码被更改而导致步骤506处标识的中断条件,则执行方法500前进至步骤518。反之,如有由于一不同的原因而导致中断条件,则执行方法500前进至下述步骤520。
在步骤518处,执行方法500标记作为所选指令的执行结果而被更改的基本块,以便在这些基本块执行之前对其搜索恶意软件并将其转换成安全程序代码。如参考图4所述(步骤412),一扫描变量和转换变量与每一基本块相关联。这些变量指示是否对基本块搜索了恶意软件或者它们是否已被转换成安全程序代码。在步骤518处,执行方法500改变与作为执行结果而被更改的每一基本块相关联的变量的值,以指示这些基本块需要执行之前针扫描恶意软件并转换成安全程序代码。
在步骤520处,执行方法500使步骤406(图4)处初始化的数据结构被更新。如前所述,本发明使用数据结构来跟踪基本块之间的执行流。当实现本发明的这一方面时,块管理器208(图2)获取执行的控制,并对数据结构执行更新。本领域的技术人员及其他人可以认识到,使用执行方法500执行基本块可导致原始执行流改变。例如,执行基本块可导致加载到存储器中的数据被之前解密的数据更改。显然,在这种情况中,改变了基本块之间的原始执行流。结果,执行方法500更新数据结构来反映作为执行结果而发生的改变。一般,被调度来执行的下一基本块然后将根据转换方法400和执行方法500被转换成安全程序代码并被执行。然后,执行方法500前进至步骤522,在那里它终止。
尽管示出和描述了本发明的较佳实施例,但可以理解,可在其中进行各种改变而不背离本发明的精神和范围。

Claims (35)

1.一种用于响应于接收执行潜在恶意软件的请求而生成安全程序代码的计算机实现的方法,所述方法包括:
(a)对所述潜在恶意软件中所包含的程序代码解码;
(b)将所述已解码程序代码转换成安全且功能上相等的程序代码;以及
(c)在计算设备上执行所述安全且功能上相等的程序代码。
2.如权利要求1所述的方法,其特征在于,还包括将所述潜在恶意软件的基本块加载到存储器中。
3.如权利要求2所述的方法,其特征在于,还包括使扫描器对存储器中所加载的基本块执行分析以确定所述潜在恶意软件是否由具有恶意的程序代码特征组成。
4.如权利要求2所述的方法,其特征在于,所述基本块中的第一条指令被标识。
5.如权利要求2所述的方法,其特征在于,所述基本块中的最后一条指令被标识。
6.如权利要求1所述的方法,其特征在于,还包括,生成描述所述潜在恶意软件中的基本块之间的执行流的数据结构。
7.如权利要求1所述的方法,其特征在于,所述对潜在恶意软件中所包含的程序代码解码包括从所述潜在恶意软件生成体系结构中立程序代码。
8.如权利要求7所述的方法,其特征在于,所述源语言满足X86-32位计算机体系结构的规范。
9.如权利要求1所述的方法,其特征在于,所述将已解码程序代码转换成安全且功能上相等的程序代码包括:
(a)选择所述潜在恶意软件中的一条指令;
(b)生成不能实现恶意软件功能的体系结构中立格式的等效的指令集;以及
(c)将所述体系结构中立格式的指令集编译成可执行的程序代码。
10.如权利要求1所述的方法,其特征在于,所述将已解码的程序代码转换成安全且功能上相等的程序代码包括:
(a)选择所述已解码程序代码中的一条指令;以及
(b)生成不能实现恶意软件功能的功能上相等且安全的可执行指令集。
11.如权利要求1所述的方法,其特征在于,执行所述安全且功能上相等的程序代码的单位是基本块。
12.如权利要求11所述的方法,其特征在于,所述基本块的执行包括:
(a)选择所述基本块中的一条指令;
(b)使所述指令由中央处理单元执行;以及
(c)确定对所选指令的执行是否导致中断条件。
13.如权利要求12所述的方法,其特征在于,当对所选指令的执行使所述基本块中被调度来在所选指令之后执行的程序代码被更改时,所述基本块被拆分成两个基本块。
14.如权利要求12所述的方法,其特征在于,所执行的安全且功能上相等的程序代码被配置成:
(a)检测在执行期间发生的出错;
(b)中断执行并调用异常处理程序;以及
(c)使所述异常处理程序完成执行之后恢复执行所必需的信息被存储。
15.一种承载计算机可执行指令的计算机可读介质,所述指令当被执行时实现用于响应于接收执行潜在恶意软件的请求而生成安全程序代码的方法,所述方法包括:
(a)对所述潜在恶意软件中所包含的程序代码解码;
(b)将所述已解码程序代码转换成安全且功能上相等的程序代码;以及
(c)在计算设备上执行所述安全且功能上相等的程序代码。
16.如权利要求15所述的计算机可读介质,其特征在于,还包括将所述潜在恶意软件的基本块加载到存储器中。
17.如权利要求16所述的计算机可读介质,其特征在于,还包括使扫描器对存储器中所加载的基本块执行分析以确定所述潜在恶意软件是否由具有恶意软件特征的程序代码组成。
18.如权利要求16所述的计算机可读介质,其特征在于,所述基本块中的第一条指令被标识。
19.如权利要求16所述的计算机可读介质,其特征在于,所述基本块中的最后一条指令被标识。
20.如权利要求15所述的计算机可读介质,其特征在于,还包括生成描述所述潜在恶意软件中的基本块之间的执行流的数据结构。
21.如权利要求15所述的计算机可读介质,其特征在于,所述对潜在恶意软件中所包含的程序代码解码包括从所述潜在恶意软件生成体系结构中立程序代码。
22.如权利要求21所述的计算机可读介质,其特征在于,所述源语言满足X86-32位计算机体系结构的规范。
23.如权利要求15所述的计算机可读介质,其特征在于,所述将已解码程序代码转换成安全且功能上相等的程序代码包括:
(a)选择所述潜在恶意软件中的一条指令;
(b)生成不能实现恶意软件功能的体系结构中立格式的等效的指令集;以及
(c)将所述体系结构中立格式的指令集编译成可执行的程序代码。
24.如权利要求15所述的计算机可读介质,其特征在于,所述将已解码程序代码转换成安全且功能上相等的程序代码包括:
(a)选择所述已解码程序代码中的一条指令;以及
(b)生成不能实现恶意软件功能的功能上相等且安全的可执行指令集。
25.如权利要求15所述的计算机可读介质,其特征在于,执行所述安全且功能上相等的程序代码的单位是基本块。
26.如权利要求25所述的计算机可读介质,其特征在于,所述基本块的执行包括:
(a)选择所述基本块中的一条指令;
(b)使所述指令由中央处理单元执行;以及
(c)确定对所选指令的执行是否导致中断条件。
27.如权利要求25所述的计算机可读介质,其特征在于,当对所选指令的执行使所述基本块中被调度来在所选指令之后执行的程序代码被更改时,所述基本块被拆分成两个基本块。
28.如权利要求25所述的计算机可读介质,其特征在于,所执行的安全且功能上相等的程序代码被配置成:
(a)检测在执行期间发生的出错;
(b)中断执行并调用异常处理程序;以及
(c)使所述异常处理程序完成执行之后恢复执行所必需的信息被存储。
29.一种用于在计算设备上安全地执行潜在恶意软件的软件系统,所述软件系统包括:
(a)用于确定加载到存储器中的程序代码是否是恶意软件的扫描器;
(b)用于将源语言转换成体系结构中立格式的功能上相等且安全的程序代码的转换引擎;
(c)用于将所述体系结构中立程序代码编译成可执行程序代码的编译引擎;以及
(d)跟踪所述潜在恶意软件的基本块之间的程序执行流的块管理器。
30.如权利要求29所述的软件系统,其特征在于,还包括执行由所述编译引擎编译的程序代码的中央处理单元。
31.如权利要求29所述的软件系统,其特征在于,还包括被配置成当加载到存储器中的程序代码被更改时与所述块管理器通信的虚拟环境。
32.如权利要求29所述的软件系统,其特征在于,所述转换引擎被配置成支持用于将源语言转换成体系结构中立格式的程序代码的插件模块。
33.如权利要求29所述的软件系统,其特征在于,所述编译引擎被配置成支持用于将所述体系结构中立格式的程序代码编译成可在所述计算设备上执行的程序代码的插件模块。
34.如权利要求29所述的软件系统,其特征在于,所述块管理器被配置成将跳转指令插入到不以跳转指令结束的基本块中,其中所述跳转指令使执行控制在所述基本块执行之后返回给所述块管理器或后续基本块;以及将跳转指令插入到被拆分的基本块中。
35.如权利要求29所述的软件系统,其特征在于,所述转换引擎被配置成将所述潜在恶意软件中的跳转指令转换成在基本块执行完成之后将程序控制返回给所述块管理器或将执行控制转移给所述后续基本块的指令。
CN2005800385997A 2004-12-06 2005-12-05 经由动态转换的主动计算机恶意软件保护 Expired - Fee Related CN101438529B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/005,000 US7636856B2 (en) 2004-12-06 2004-12-06 Proactive computer malware protection through dynamic translation
US11/005,000 2004-12-06
PCT/US2005/043773 WO2006062849A2 (en) 2004-12-06 2005-12-05 Proactive computer malware protection through dynamic translation

Publications (2)

Publication Number Publication Date
CN101438529A true CN101438529A (zh) 2009-05-20
CN101438529B CN101438529B (zh) 2011-12-28

Family

ID=36575761

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800385997A Expired - Fee Related CN101438529B (zh) 2004-12-06 2005-12-05 经由动态转换的主动计算机恶意软件保护

Country Status (6)

Country Link
US (1) US7636856B2 (zh)
EP (1) EP1800434B1 (zh)
JP (1) JP4950902B2 (zh)
KR (1) KR101213821B1 (zh)
CN (1) CN101438529B (zh)
WO (1) WO2006062849A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598217A (zh) * 2013-10-31 2015-05-06 国际商业机器公司 用于执行安全有条件加载和有条件存储操作的方法和设备
CN105009139A (zh) * 2013-03-15 2015-10-28 迈克菲股份有限公司 用于恶意软件检测的对应用的通用拆包
CN107015491A (zh) * 2017-04-13 2017-08-04 北京机械设备研究所 一种顺序控制方法
CN112527457A (zh) * 2020-12-11 2021-03-19 成都云铀子网络科技有限公司 一种通用Unicorn模拟指令执行的虚拟机实现方法

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7810158B2 (en) * 2004-12-16 2010-10-05 At&T Intellectual Property I, L.P. Methods and systems for deceptively trapping electronic worms
US8646080B2 (en) * 2005-09-16 2014-02-04 Avg Technologies Cy Limited Method and apparatus for removing harmful software
US20070067844A1 (en) * 2005-09-16 2007-03-22 Sana Security Method and apparatus for removing harmful software
US8719924B1 (en) * 2005-03-04 2014-05-06 AVG Technologies N.V. Method and apparatus for detecting harmful software
US7591016B2 (en) * 2005-04-14 2009-09-15 Webroot Software, Inc. System and method for scanning memory for pestware offset signatures
US7349931B2 (en) * 2005-04-14 2008-03-25 Webroot Software, Inc. System and method for scanning obfuscated files for pestware
US7571476B2 (en) * 2005-04-14 2009-08-04 Webroot Software, Inc. System and method for scanning memory for pestware
US7562293B2 (en) * 2005-05-27 2009-07-14 International Business Machines Corporation Method and apparatus for processing a parseable document
US8078740B2 (en) 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
GB2427048A (en) 2005-06-09 2006-12-13 Avecho Group Ltd Detection of unwanted code or data in electronic mail
US7730040B2 (en) * 2005-07-27 2010-06-01 Microsoft Corporation Feedback-driven malware detector
US8407785B2 (en) 2005-08-18 2013-03-26 The Trustees Of Columbia University In The City Of New York Systems, methods, and media protecting a digital data processing device from attack
US8763103B2 (en) 2006-04-21 2014-06-24 The Trustees Of Columbia University In The City Of New York Systems and methods for inhibiting attacks on applications
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
US8261344B2 (en) * 2006-06-30 2012-09-04 Sophos Plc Method and system for classification of software using characteristics and combinations of such characteristics
US8365286B2 (en) * 2006-06-30 2013-01-29 Sophos Plc Method and system for classification of software using characteristics and combinations of such characteristics
US8151352B1 (en) * 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
US8190868B2 (en) 2006-08-07 2012-05-29 Webroot Inc. Malware management through kernel detection
US20080127114A1 (en) * 2006-11-28 2008-05-29 Amit Vasudevan Framework for stealth dynamic coarse and fine-grained malware analysis
GB2444514A (en) 2006-12-04 2008-06-11 Glasswall Electronic file re-generation
US9729513B2 (en) 2007-11-08 2017-08-08 Glasswall (Ip) Limited Using multiple layers of policy management to manage risk
US7945787B2 (en) * 2007-04-13 2011-05-17 Computer Associates Think, Inc. Method and system for detecting malware using a remote server
US7912894B2 (en) * 2007-05-15 2011-03-22 Adams Phillip M Computerized, copy-detection and discrimination apparatus and method
US10019570B2 (en) 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
GB2452479A (en) * 2007-08-31 2009-03-11 Sony Corp Content protection through deletion of a decryption key in response to a predetermined event
US8341736B2 (en) 2007-10-12 2012-12-25 Microsoft Corporation Detection and dynamic alteration of execution of potential software threats
US8353041B2 (en) * 2008-05-16 2013-01-08 Symantec Corporation Secure application streaming
US8732825B2 (en) * 2008-05-28 2014-05-20 Symantec Corporation Intelligent hashes for centralized malware detection
US8745703B2 (en) * 2008-06-24 2014-06-03 Microsoft Corporation Identifying exploitation of vulnerabilities using error report
US8938806B1 (en) 2008-06-26 2015-01-20 Emc Corporation Partial pattern detection with commonality factoring
US20090328210A1 (en) * 2008-06-30 2009-12-31 Microsoft Corporation Chain of events tracking with data tainting for automated security feedback
US8522200B2 (en) * 2008-08-28 2013-08-27 Microsoft Corporation Detouring in scripting systems
US20100058474A1 (en) * 2008-08-29 2010-03-04 Avg Technologies Cz, S.R.O. System and method for the detection of malware
US9122797B2 (en) * 2008-09-30 2015-09-01 Honeywell International Inc. Deterministic remote interface unit emulator
US11489857B2 (en) 2009-04-21 2022-11-01 Webroot Inc. System and method for developing a risk profile for an internet resource
US9087195B2 (en) * 2009-07-10 2015-07-21 Kaspersky Lab Zao Systems and methods for detecting obfuscated malware
EP2438511B1 (en) 2010-03-22 2019-07-03 LRDC Systems, LLC A method of identifying and protecting the integrity of a set of source data
US8082585B1 (en) * 2010-09-13 2011-12-20 Raymond R. Givonetti Protecting computers from malware using a hardware solution that is not alterable by any software
US9058492B1 (en) * 2011-02-14 2015-06-16 Symantec Corporation Techniques for reducing executable code vulnerability
US9032526B2 (en) * 2011-05-12 2015-05-12 Microsoft Technology Licensing, Llc Emulating mixed-code programs using a virtual machine instance
US20120331303A1 (en) * 2011-06-23 2012-12-27 Andersson Jonathan E Method and system for preventing execution of malware
EP2756366B1 (en) 2011-09-15 2020-01-15 The Trustees of Columbia University in the City of New York Systems, methods, and media for detecting return-oriented programming payloads
CN103257914B (zh) * 2012-02-16 2016-08-17 联想(北京)有限公司 一种获取电池信息的方法和电子装置
US9424427B1 (en) 2012-03-16 2016-08-23 Bitdefender IPR Management Ltd. Anti-rootkit systems and methods
WO2014051608A1 (en) * 2012-09-28 2014-04-03 Hewlett-Packard Development Company, L.P. Application randomization
US9043906B2 (en) * 2012-11-28 2015-05-26 William Christopher Hardy System and method for preventing operation of undetected malware loaded onto a computing device
RU2514142C1 (ru) 2012-12-25 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ повышения эффективности работы аппаратного ускорения эмуляции приложений
US20150007330A1 (en) * 2013-06-26 2015-01-01 Sap Ag Scoring security risks of web browser extensions
GB2518880A (en) 2013-10-04 2015-04-08 Glasswall Ip Ltd Anti-Malware mobile content data management apparatus and method
US9330264B1 (en) 2014-11-26 2016-05-03 Glasswall (Ip) Limited Statistical analytic method for the determination of the risk posed by file based content
US10291647B2 (en) 2015-04-27 2019-05-14 The Johns Hopkins University Apparatus and method for enabling safe handling of malware
US10713146B2 (en) * 2015-06-26 2020-07-14 AVAST Software s.r.o. Dynamic binary translation and instrumentation with postponed attachment to running native threads
RU2622627C2 (ru) 2015-09-30 2017-06-16 Акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносных исполняемых файлов, содержащих интерпретатор, посредством комбинирования эмуляторов
US10437998B2 (en) * 2015-10-26 2019-10-08 Mcafee, Llc Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection
US9858423B2 (en) * 2016-01-11 2018-01-02 International Business Machines Corporation Application modification based on a security vulnerability
US10528734B2 (en) * 2016-03-25 2020-01-07 The Mitre Corporation System and method for vetting mobile phone software applications
US10169581B2 (en) * 2016-08-29 2019-01-01 Trend Micro Incorporated Detecting malicious code in sections of computer files
EP3352110B1 (en) * 2017-01-23 2020-04-01 Cyphort Inc. System and method for detecting and classifying malware
US11126721B2 (en) * 2018-06-28 2021-09-21 Intel Corporation Methods, systems and apparatus to detect polymorphic malware
EP3850517A4 (en) * 2018-09-15 2022-06-01 Quantum Star Technologies Inc. DATA GENERATION AT BIT LEVEL AND ARTIFICIAL INTELLIGENCE PROCEDURES AND ARCHITECTURES FOR DATA PROTECTION
WO2021038705A1 (ja) * 2019-08-27 2021-03-04 日本電気株式会社 バックドア検査装置、バックドア検査方法、及び非一時的なコンピュータ可読媒体
US20220269784A1 (en) * 2021-02-25 2022-08-25 Quantum Star Technologies Inc. N-dimensional model techniques and architectures for data protection
US11921850B2 (en) 2021-06-23 2024-03-05 Acronis International Gmbh Iterative memory analysis for malware detection
US11836252B2 (en) 2021-06-23 2023-12-05 Acronis International Gmbh Machine learning through iterative memory analysis for malware detection

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993017385A1 (en) * 1992-02-27 1993-09-02 Intel Corporation Dynamic flow instruction cache memory
US5398196A (en) * 1993-07-29 1995-03-14 Chambers; David A. Method and apparatus for detection of computer viruses
US6067410A (en) * 1996-02-09 2000-05-23 Symantec Corporation Emulation repair system
US5765030A (en) * 1996-07-19 1998-06-09 Symantec Corp Processor emulator module having a variable pre-fetch queue size for program execution
US5826013A (en) * 1995-09-28 1998-10-20 Symantec Corporation Polymorphic virus detection module
US6330691B1 (en) * 1996-02-23 2001-12-11 Institute For The Development Of Emerging Architectures Llc Use of dynamic translation to provide breakpoints in non-writeable object code
US5732210A (en) * 1996-03-15 1998-03-24 Hewlett-Packard Company Use of dynamic translation to provide fast debug event checks
US5951698A (en) * 1996-10-02 1999-09-14 Trend Micro, Incorporated System, apparatus and method for the detection and removal of viruses in macros
JPH10301772A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US6357008B1 (en) * 1997-09-23 2002-03-12 Symantec Corporation Dynamic heuristic method for detecting computer viruses using decryption exploration and evaluation phases
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
US6704925B1 (en) * 1998-09-10 2004-03-09 Vmware, Inc. Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache
US7350235B2 (en) * 2000-07-14 2008-03-25 Computer Associates Think, Inc. Detection of decryption to identify encrypted virus
US7069583B2 (en) * 2000-07-14 2006-06-27 Computer Associates Think, Inc. Detection of polymorphic virus code using dataflow analysis
US20030041315A1 (en) * 2001-08-21 2003-02-27 International Business Machines Corporation Debugger with automatic detection of control points influencing program behavior
US20030101381A1 (en) * 2001-11-29 2003-05-29 Nikolay Mateev System and method for virus checking software
GB2393274B (en) * 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US7367057B2 (en) * 2003-06-30 2008-04-29 Intel Corporation Processor based system and method for virus detection

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105009139A (zh) * 2013-03-15 2015-10-28 迈克菲股份有限公司 用于恶意软件检测的对应用的通用拆包
CN104598217A (zh) * 2013-10-31 2015-05-06 国际商业机器公司 用于执行安全有条件加载和有条件存储操作的方法和设备
CN104598217B (zh) * 2013-10-31 2018-06-29 国际商业机器公司 用于执行安全有条件加载和有条件存储操作的方法和设备
CN107015491A (zh) * 2017-04-13 2017-08-04 北京机械设备研究所 一种顺序控制方法
CN112527457A (zh) * 2020-12-11 2021-03-19 成都云铀子网络科技有限公司 一种通用Unicorn模拟指令执行的虚拟机实现方法

Also Published As

Publication number Publication date
EP1800434A4 (en) 2010-12-29
KR101213821B1 (ko) 2012-12-18
WO2006062849A2 (en) 2006-06-15
WO2006062849A3 (en) 2009-04-30
US20060123244A1 (en) 2006-06-08
CN101438529B (zh) 2011-12-28
JP4950902B2 (ja) 2012-06-13
EP1800434A2 (en) 2007-06-27
KR20070083702A (ko) 2007-08-24
EP1800434B1 (en) 2017-03-22
JP2008523471A (ja) 2008-07-03
US7636856B2 (en) 2009-12-22

Similar Documents

Publication Publication Date Title
CN101438529B (zh) 经由动态转换的主动计算机恶意软件保护
Konstantinou et al. Metamorphic virus: Analysis and detection
Christodorescu et al. Testing malware detectors
Carmony et al. Extract Me If You Can: Abusing PDF Parsers in Malware Detectors.
US6782478B1 (en) Techniques for encoding information in computer code
US7636945B2 (en) Detection of polymorphic script language viruses by data driven lexical analysis
Xu et al. VMHunt: A verifiable approach to partially-virtualized binary code simplification
CN103761475B (zh) 检测智能终端中恶意代码的方法及装置
KR100503387B1 (ko) 악성 암호화 스크립트에 대한 분석 및 해독 방법
US7367057B2 (en) Processor based system and method for virus detection
Lu et al. AutoD: Intelligent blockchain application unpacking based on JNI layer deception call
US20050028002A1 (en) Method and apparatus to detect malicious software
Qi et al. SpecTaint: Speculative Taint Analysis for Discovering Spectre Gadgets.
US9900324B1 (en) System to discover and analyze evasive malware
JP2016525760A (ja) 無関係なコードの特定
Yang et al. Deepmal: maliciousness-preserving adversarial instruction learning against static malware detection
Guo et al. Eliminating the hardware-software boundary: A proof-carrying approach for trust evaluation on computer systems
Brezinski et al. Metamorphic malware and obfuscation: a survey of techniques, variants, and generation kits
He et al. Exploiting binary-level code virtualization to protect Android applications against app repackaging
Yang et al. Android control flow obfuscation based on dynamic entry points modification
Li et al. Chosen-instruction attack against commercial code virtualization obfuscators
Guo et al. A survey of obfuscation and deobfuscation techniques in android code protection
Hellal et al. A survey on graph-based methods for malware detection
Volynkin et al. Evaluation of run-time detection of self-replication in binary executable malware
Jeong et al. Exploiting Metaobjects to Reinforce Data Leakage Attacks

Legal Events

Date Code Title Description
C06 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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150430

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150430

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111228

CF01 Termination of patent right due to non-payment of annual fee