CN101438529B - 经由动态转换的主动计算机恶意软件保护 - Google Patents
经由动态转换的主动计算机恶意软件保护 Download PDFInfo
- Publication number
- CN101438529B CN101438529B CN2005800385997A CN200580038599A CN101438529B CN 101438529 B CN101438529 B CN 101438529B CN 2005800385997 A CN2005800385997 A CN 2005800385997A CN 200580038599 A CN200580038599 A CN 200580038599A CN 101438529 B CN101438529 B CN 101438529B
- Authority
- CN
- China
- Prior art keywords
- program code
- basic block
- malware
- instruction
- 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.)
- Expired - Fee Related
Links
- 238000013519 translation Methods 0.000 title description 6
- 238000000034 method Methods 0.000 claims abstract description 94
- 238000004458 analytical method Methods 0.000 claims abstract description 7
- 238000006243 chemical reaction Methods 0.000 claims description 75
- 230000006870 function Effects 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 4
- 230000007935 neutral effect Effects 0.000 claims description 3
- 238000011084 recovery Methods 0.000 claims description 3
- 238000001514 detection method Methods 0.000 description 23
- 230000000840 anti-viral effect Effects 0.000 description 11
- 241000700605 Viruses Species 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 208000015181 infectious disease Diseases 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000002155 anti-virotic effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 241001068263 Replication competent viruses Species 0.000 description 1
- 238000012300 Sequence Analysis Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 208000028831 congenital heart disease Diseases 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- 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
-
- 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/562—Static detection
- G06F21/563—Static 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 (22)
1.一种用于响应于接收执行潜在恶意软件的请求而生成安全程序代码的计算机实现的方法,所述方法包括:
(a)对所述潜在恶意软件中所包含的程序代码解码;
(b)将已解码的程序代码转换成安全且功能上相等的程序代码;以及
(c)在计算设备上执行所述安全且功能上相等的程序代码;
其中执行所述安全且功能上相等的程序代码的单位是基本块,并且其中所述基本块的执行包括:
(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所述的方法,其特征在于,所执行的安全且功能上相等的程序代码被配置成:
(a)检测在执行期间发生的出错;
(b)中断执行并调用异常处理程序;以及
(c)使所述异常处理程序完成执行之后恢复执行所必需的信息被存储。
12.一种用于响应于接收执行潜在恶意软件的请求而生成安全程序代码的系统,所述系统包括:
(a)用于对所述潜在恶意软件中所包含的程序代码解码的装置;
(b)用于将已解码的程序代码转换成安全且功能上相等的程序代码的装置;以及
(c)用于在计算设备上执行所述安全且功能上相等的程序代码的装置;
其中执行所述安全且功能上相等的程序代码的单位是基本块,并且其中用于实现所述基本块的执行的装置包括:
(a)用于选择所述基本块中的一条指令的装置;
(b)用于使所述指令由中央处理单元执行的装置;以及
(c)用于确定对所选指令的执行是否导致中断条件的装置;
当对所选指令的执行使所述基本块中被调度来在所选指令之后执行的程序代码被更改时,所述基本块被拆分成两个基本块;其中经拆分的两个基本块中的第一基本块包含已经执行的程序代码,经拆分的两个基本块中的第二基本块包含所选指令之后的程序代码,且所述第二基本块将被扫描恶意软件,并在执行之前被转换成安全且功能上相等的程序代码。
13.如权利要求12所述的系统,其特征在于,还包括用于将所述潜在恶意软件的基本块加载到存储器中的装置。
14.如权利要求13所述的系统,其特征在于,还包括用于使扫描器对存储器中所加载的基本块执行分析以确定所述潜在恶意软件是否由具有恶意软件特征的程序代码组成的装置。
15.如权利要求13所述的系统,其特征在于,所述潜在恶意软件的基本块中的第一条指令被标识。
16.如权利要求13所述的系统,其特征在于,所述潜在恶意软件的基本块中的最后一条指令被标识。
17.如权利要求12所述的系统,其特征在于,还包括用于生成描述所述潜在恶意软件中的基本块之间的执行流的数据结构的装置。
18.如权利要求12所述的系统,其特征在于,用于对潜在恶意软件中所包含的程序代码解码的装置还包括用于从所述潜在恶意软件生成体系结构中立程序代码的装置。
19.如权利要求18所述的系统,其特征在于,所述体系结构中立程序代码满足X86-32位计算机体系结构的规范。
20.如权利要求12所述的系统,其特征在于,用于将已解码程序代码转换成安全且功能上相等的程序代码的装置进一步包括:
(a)用于选择所述潜在恶意软件中的一条指令的装置;
(b)用于生成不能实现恶意软件功能的体系结构中立格式的等效的指令集的装置;以及
(c)用于将所述体系结构中立格式的等效的指令集编译成可执行的程序代码的装置。
21.如权利要求12所述的系统,其特征在于,用于将已解码程序代码转换成安全且功能上相等的程序代码的装置进一步包括:
(a)用于选择所述已解码程序代码中的一条指令的装置;以及
(b)用于生成不能实现恶意软件功能的功能上相等且安全的可执行指令集的装置。
22.如权利要求12所述的系统,其特征在于,所执行的安全且功能上相等的程序代码被配置成:
(a)检测在执行期间发生的出错;
(b)中断执行并调用异常处理程序;以及
(c)使所述异常处理程序完成执行之后恢复执行所必需的信息被存储。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/005,000 | 2004-12-06 | ||
US11/005,000 US7636856B2 (en) | 2004-12-06 | 2004-12-06 | Proactive computer malware protection through dynamic translation |
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 CN101438529A (zh) | 2009-05-20 |
CN101438529B true 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) |
Families Citing this family (68)
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 |
US8719924B1 (en) * | 2005-03-04 | 2014-05-06 | AVG Technologies N.V. | Method and apparatus for detecting harmful software |
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 |
US7571476B2 (en) * | 2005-04-14 | 2009-08-04 | Webroot Software, Inc. | System and method for scanning memory for pestware |
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 |
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 |
WO2007022454A2 (en) | 2005-08-18 | 2007-02-22 | 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 |
US8365286B2 (en) * | 2006-06-30 | 2013-01-29 | Sophos Plc | Method and system for classification of software using characteristics and combinations of such characteristics |
US8261344B2 (en) * | 2006-06-30 | 2012-09-04 | 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 |
US8667591B1 (en) | 2008-06-26 | 2014-03-04 | Emc Corporation | Commonality factoring remediation |
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 |
WO2011119137A1 (en) | 2010-03-22 | 2011-09-29 | 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 |
US9495541B2 (en) | 2011-09-15 | 2016-11-15 | The Trustees Of Columbia University In The City Of New York | Detecting return-oriented programming payloads by evaluating data for a gadget address space address and determining whether operations associated with instructions beginning at the address indicate a return-oriented programming payload |
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 |
CN104798075A (zh) * | 2012-09-28 | 2015-07-22 | 惠普发展公司,有限责任合伙企业 | 应用随机化 |
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 | Закрытое акционерное общество "Лаборатория Касперского" | Способ повышения эффективности работы аппаратного ускорения эмуляции приложений |
US9471783B2 (en) * | 2013-03-15 | 2016-10-18 | Mcafee, Inc. | Generic unpacking of applications for malware detection |
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 |
CA2831711A1 (en) * | 2013-10-31 | 2015-04-30 | Ibm Canada Limited - Ibm Canada Limitee | Performing safe conditional-load and conditional-store operations |
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 |
CN107015491B (zh) * | 2017-04-13 | 2019-05-14 | 北京机械设备研究所 | 一种顺序控制方法 |
US11126721B2 (en) * | 2018-06-28 | 2021-09-21 | Intel Corporation | Methods, systems and apparatus to detect polymorphic malware |
WO2020056390A1 (en) * | 2018-09-15 | 2020-03-19 | Quantum Star Technologies LLC | Bit-level data generation and artificial intelligence techniques and architectures for data protection |
US20220292201A1 (en) * | 2019-08-27 | 2022-09-15 | Nec Corporation | Backdoor inspection apparatus, backdoor inspection method, and non-transitory computer readable medium |
CN112527457A (zh) * | 2020-12-11 | 2021-03-19 | 成都云铀子网络科技有限公司 | 一种通用Unicorn模拟指令执行的虚拟机实现方法 |
US20220269784A1 (en) * | 2021-02-25 | 2022-08-25 | Quantum Star Technologies Inc. | N-dimensional model techniques and architectures for data protection |
US11836252B2 (en) | 2021-06-23 | 2023-12-05 | Acronis International Gmbh | Machine learning through iterative memory analysis for malware detection |
US11921850B2 (en) | 2021-06-23 | 2024-03-05 | Acronis International Gmbh | Iterative memory analysis for malware detection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5951698A (en) * | 1996-10-02 | 1999-09-14 | Trend Micro, Incorporated | System, apparatus and method for the detection and removal of viruses in macros |
EP1316873A2 (en) * | 2001-11-29 | 2003-06-04 | Hewlett-Packard Company | System and method for identifying infected program instructions |
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 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU3776793A (en) * | 1992-02-27 | 1993-09-13 | 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 |
US5826013A (en) * | 1995-09-28 | 1998-10-20 | Symantec Corporation | Polymorphic virus detection module |
US5765030A (en) * | 1996-07-19 | 1998-06-09 | Symantec Corp | Processor emulator module having a variable pre-fetch queue size for program execution |
US6067410A (en) * | 1996-02-09 | 2000-05-23 | Symantec Corporation | Emulation repair system |
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 |
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 |
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 |
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 |
-
2004
- 2004-12-06 US US11/005,000 patent/US7636856B2/en active Active
-
2005
- 2005-12-05 KR KR1020077008704A patent/KR101213821B1/ko active IP Right Grant
- 2005-12-05 WO PCT/US2005/043773 patent/WO2006062849A2/en active Application Filing
- 2005-12-05 CN CN2005800385997A patent/CN101438529B/zh not_active Expired - Fee Related
- 2005-12-05 JP JP2007544568A patent/JP4950902B2/ja active Active
- 2005-12-05 EP EP05852859.7A patent/EP1800434B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5951698A (en) * | 1996-10-02 | 1999-09-14 | Trend Micro, Incorporated | System, apparatus and method for the detection and removal of viruses in macros |
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 |
EP1316873A2 (en) * | 2001-11-29 | 2003-06-04 | Hewlett-Packard Company | System and method for identifying infected program instructions |
Also Published As
Publication number | Publication date |
---|---|
KR20070083702A (ko) | 2007-08-24 |
JP4950902B2 (ja) | 2012-06-13 |
US7636856B2 (en) | 2009-12-22 |
WO2006062849A2 (en) | 2006-06-15 |
WO2006062849A3 (en) | 2009-04-30 |
KR101213821B1 (ko) | 2012-12-18 |
EP1800434A4 (en) | 2010-12-29 |
EP1800434A2 (en) | 2007-06-27 |
EP1800434B1 (en) | 2017-03-22 |
US20060123244A1 (en) | 2006-06-08 |
CN101438529A (zh) | 2009-05-20 |
JP2008523471A (ja) | 2008-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101438529B (zh) | 经由动态转换的主动计算机恶意软件保护 | |
Schrittwieser et al. | Protecting software through obfuscation: Can it keep pace with progress in code analysis? | |
Carmony et al. | Extract Me If You Can: Abusing PDF Parsers in Malware Detectors. | |
Christodorescu et al. | Testing malware detectors | |
US6782478B1 (en) | Techniques for encoding information in computer code | |
Xu et al. | VMHunt: A verifiable approach to partially-virtualized binary code simplification | |
US7636945B2 (en) | Detection of polymorphic script language viruses by data driven lexical analysis | |
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 | |
TWI393021B (zh) | 用於防止攻擊之方法、資料處理系統及裝置 | |
Qi et al. | SpecTaint: Speculative Taint Analysis for Discovering Spectre Gadgets. | |
US9900324B1 (en) | System to discover and analyze evasive malware | |
JP2016525760A (ja) | 無関係なコードの特定 | |
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 | |
Jacob et al. | Malware behavioral detection by attribute-automata using abstraction from platform and language | |
He et al. | Exploiting binary-level code virtualization to protect Android applications against app repackaging | |
Li et al. | Chosen-instruction attack against commercial code virtualization obfuscators | |
Yang et al. | Android control flow obfuscation based on dynamic entry points modification | |
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 | |
Brezinski | Complexity-based graph attention network for metamorphic malware detection |
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 |