CN110832488A - 规范化可执行程序文件中的入口点指令 - Google Patents
规范化可执行程序文件中的入口点指令 Download PDFInfo
- Publication number
- CN110832488A CN110832488A CN201880044063.3A CN201880044063A CN110832488A CN 110832488 A CN110832488 A CN 110832488A CN 201880044063 A CN201880044063 A CN 201880044063A CN 110832488 A CN110832488 A CN 110832488A
- Authority
- CN
- China
- Prior art keywords
- instruction
- source
- instructions
- output buffer
- determining
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/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
-
- 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/568—Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
- G06F8/437—Type checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Executing Machine-Instructions (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
用于规范化入口点指令的系统和方法,包括:接收在可执行代码的入口点出开始的指令的范围。对于指令范围中的每条指令,做出该指令是否执行有效操作、或者该指令结合另一指令是否使其中一个指令或两个指令无效的确定。过滤无效指令,使得它们不出现在输出缓存器中。
Description
相关申请的交叉引用
本申请要求于2017年6月29日提交的标题为“规范化可执行程序文件中的入口点指令”的美国临时专利申请序列号No.62/526,994(目前正在申请中)的优先权,通过引用将其全部公开内容并入本文。
技术领域
本公开一般涉及计算系统,更具体地,涉及计算系统的规范化可执行程序文件中的入口点指令。
背景技术
Malware(“恶意软件”的简称)是指在用户不知情或未经用户同意的情况下,可用于中断计算机操作、损坏数据、收集敏感信息或访问私人计算机系统的软件。此类恶意软件的示例包括软件病毒、特洛伊木马、rootkit、勒索软件等。正确识别哪些文件包含恶意软件,并且哪些是良性的可能是一项困难的任务,因为恶意软件开发者经常混淆代码。例如,恶意软件作者可能会使用添加“垃圾”指令的混淆器,这些指令什么也不做,但会使可执行文件的分析更加困难。垃圾指令是随机选择的,并且可以插入在随机点处。因此,即使它们具有相同的功能,一个恶意软件家族中的任何两个成员可能看起来完全不同。
发明内容
本发明的目的是规范化入口点指令,以包括从可执行代码的入口点处开始接收指令的范围。对于指令范围内的每一条指令,确定该指令是否执行无效操作,或者该指令与另一条指令组合是否使其中一条或两条指令无效。过滤无效指令,使其不出现在输出缓存器中。
附图说明
为了更好地理解本发明的主题,可以参考附图,其中:
图1是用于规范可执行文件中的入口点指令的系统框图。
图2是说明用于规范可执行文件中的入口点指令的方法的操作的流程图。
图3是说明用于规范可执行文件中的入口点指令的方法的操作的进一步细节的流程图。
图4是说明使用规范化入口点指令的示例系统的框图。
图5说明了在规范化之前可执行文件家族的入口点处的原始代码的示例块。
图6说明了移除参数后的原始代码的示例块。
图7说明了无条件跳转后以及由于无条件跳转被移除而跳过代码后的原始代码的示例块。
图8说明了指令参数已缩减为一个字节的原始代码的示例块。
图9说明了移除重复项后原始代码的示例块。
图10说明了在规范化之前包括垃圾代码的可执行文件入口点处的原始代码的代码列表。
图11说明了规范化后的原始代码的示例块。
图12是可以在其上执行本发明主题的实施例的计算机系统的示例实施例的框图。
具体实施方式
在下面对本发明的示例实施例的详细描述中,参考了构成本发明一部分的附图,并且在附图中通过说明示出了可实施本发明的特定示例实施例。对这些实施例进行了足够详细的描述,以使本领域技术人员能够实施本发明主题,并且应当理解的是,可以利用其他实施例,并且可以在不脱离本发明主题的范围的情况下进行逻辑、机械、电气和其他改变。
下面的详细描述的一些部分是根据计算机存储器中数据位上的操作的算法和符号表示来呈现的。这些算法描述和表示是数据处理技术领域的技术人员用来最有效地将其工作的实质传达给本领域技术人员的方法。本文中的算法通常被认为是导致期望结果的自洽步骤序列。这些步骤是需要对物理量进行物理操作的步骤。通常(并非必然),这些量以能够被存储、传输、组合、比较和以其他方式操纵的电或磁信号的形式出现。事实证明(主要是由于常用的原因),有时将这些信号称为位、值、元素、符号、字符、项、数字等是方便的。然而,应当记住的是,所有这些和类似的术语都与适当的物理量相关联,并且只是适用于这些量的方便标签。除非在下面的讨论中另有明确说明,否则诸如“处理”或“运算”或“计算”或“确定”或“显示”等的术语是指计算机系统或类似计算设备的操作和处理,其将计算机系统的寄存器和存储器中表示为物理(例如,电)量的数据操作和转换为计算机系统存储器和寄存器或其它类似信息存储器中同样表示为物理量的其它数据。
在图中,始终使用相同的参考号来指出现在多个图中的相同部件。信号和连接可以用相同的参考号或标签来表示,并且其实际含义将从其在描述的上下文中的使用中清晰可见。一般地,本发明的给定项目或部分的参考号的第一位数字应与第一次标识该项目或部分的图号相对应。
对各种实施例的描述仅被解释为示例,并且不描述本发明主题的每个可能实例。可以使用现有或未来技术的组合来实施许多替代方案,这些技术仍属于权利要求的范围。因此,以下详细描述不是限制意义上的,并且本发明主题的范围仅由所附权利要求限定。
图1是用于规范可执行文件中的入口点指令的系统100的框图。在一些实施例中,系统100包括规范器102,其读取可执行文件104以产生规范化输出缓存器106。
在一些方面,可执行文件104可以是常用于各种版本的Microsoft Windows操作系统的可移植可执行(PE)文件。然而,本发明的主题不限于PE文件,并且在替代方面,可执行文件104可以是常用于Linux或基于UNIX的系统的可执行和可链接格式(ELF)文件,或者常用于MAC OS X操作系统的Mach-O文件。实施例不限于特定类型的可执行文件。在一些方面,可执行文件104具有头部、至少一个代码部分(有时称为文本部分)和至少一个数据部分。可执行文件104包括入口点112。入口点的地址可以在可执行文件的头部中指定。入口点112是可执行文件104中可执行代码的起始地址。例如,操作系统可以响应于运行包含在可执行文件中的应用程序或其他程序的请求而将可执行文件104加载到存储器中。操作系统使应用程序或程序开始从入口点112开始执行代码。
规范器102可以读取可执行文件104中的可执行程序代码。在一些实施例中,规范器102读取入口点112的范围110内的可执行文件的一部分。在一些实施例中,范围110可以是从入口点112开始的4096字节。虽然4096字节提供了效率,因为它对应于存储设备上的典型存储块尺寸,但是知晓本公开益处的本领域技术人员应当理解的是,可以使用范围110的其他尺寸并且范围110的其他尺寸在本发明主题范围内。规范器102可以包括反汇编器108,反汇编器108将范围110内的指令(即源指令)解析为组成部分。在处理PE文件的实施例中,这些组件部件可以包括前缀、操作码、ModRM字节、SIB字节、立即数和位移的一个或多个的各种组合。取决于指令的类型和指令中存在的组件,该指令可以是1到15字节长。规范器102可以通过移除(即过滤掉)包含无效指令(即垃圾指令)的反汇编指令的选定部分或对确定可执行文件是否包含恶意软件不重要的指令组件来处理反汇编指令,以产生输出缓存器106。在一些实施例中,输出缓存器是64字节。发明人发现,64字节的尺寸通常足以区分恶意软件家族。然而,知晓本公开益处的本领域技术人员应当理解的是,可以使用输出缓存器的其他尺寸(例如,96字节),并且输出缓存器的其他尺寸在本发明主题的范围内。
关于图2至9在下面提供了关于规范器102的操作的更多细节。
图2和图3是说明用于规范可执行文件中的入口点指令的方法的操作的流程图。图2和图3中所示的方法分别表示通过由一些实施例执行的指令范围的第一遍和第二遍。在一些方面,这些方法可以构成由计算机可执行指令构成的计算机程序。通过参考流程图描述这些方法使得本领域技术人员能够开发这样的程序,该程序包括在适当的处理器(从计算机可读介质执行指令的计算机的一个或多个处理器)上执行该方法的指令。图2和图3所示的方法包括可由规范器102或执行本发明示例实施例的其它程序采取的动作。
图2是说明用于确定指令是否执行有效操作的方法的操作的流程图200。
在框202处,加载指令范围内的指令以进行处理。在一些实施例中,加载从入口点处开始的4096字节范围。
在框204处,读取和解析(例如,反汇编)来自作该范围的指令。
在框206处,进行检查以确定在框204处读取和解析的指令是否执行有效操作。例如,有效操作是导致寄存器、标志、堆栈和/或内存位置中的变化的操作。规范器将表现为类似于NOP(无操作)的指令确定为不执行有效操作。英特尔x86指令集体系结构中不执行有效操作的指令的示例是XCHG ECX,ECX,它是同一个寄存器之间的交换。知晓本公开益处的本领域技术人员应当理解的是,x86体系结构和其他处理器体系结构中的其他指令可以表现为类似于NOP。
如果指令不执行有效操作,则在框208处,该指令被标记为NOP(即,该指令被指示为“垃圾”或无效指令)。流程从方框208前进到方框218。
如果框206处的检查确定指令确实执行有效操作,则流程前进到框210。
在框210处,进行检查以确定指令是否丢弃先前的操作。如果当前指令使先前的操作无效,则认为先前操作被丢弃。例如,假设第一个操作将值123分配给某个寄存器或存储器单元,并且通过随后的操作,将相同的存储器单元或寄存器设置为不同的值,例如,在被另一个操作使用之前为234。在这种情况下,第一个操作已被丢弃(即变得无用)。前一个操作可以紧接在当前操作之前,也可以通过在前一个操作和当前操作之间插入指令将其分开。如果该指令丢弃先前的操作,则流程前进到框212,其中先前指令(即其操作被丢弃的指令)被标记为NOP。流程从框212前进到框218。
如果框210处的检查确定指令没有放弃先前的操作,则流程前进到框214。
在框214处,进行检查以确定该指令是否恢复先前的指令。换言之,进行检查以确定当前指令与先前指令或指令集的组合是否未做任何有效的事情。例如,在x86体系结构中,NEG EAX指令后跟随第二个NEG EAX是在同一个寄存器上调用两次的否定。第二个NEG指令恢复第一个NEG指令。类似地,INC EAX后跟随DEC EAX导致EAX寄存器具有与执行指令组合之前相同的值,因此不会执行任何操作(即,表现为类似于NOP)。前一个操作可以紧接在当前操作之前,也可以通过在前一个操作和当前操作之间插入指令将其分开。因此,框214检查组合起来不执行任何操作的指令,即,组合起来导致寄存器、标志、堆栈和内存的状态与执行前相同的指令。
如果框214处的检查确定指令恢复先前的指令,则流程前进到框216,其中当前指令和先前的指令都标记为NOP。
如果框214处的检查确定当前指令没有还原先前的指令,则流程前进到框218。
在框218处,进行检查以确定是否已经分析了指令范围内的最后一条指令。如果否,则该方法返回到框204以读取和解析指令范围中的下一条指令。否则,方法结束。
图3是说明用于规范可执行文件中的入口点指令的方法的操作的进一步细节的流程图300。在一些实施例中,这些操作作为图2所示方法之后的第二遍来执行。
在框302处,执行初始化操作。例如,可以将读取指针设置到指令范围110中的第一指令。读取指针可以包含正在处理的当前指令的输入范围中的地址。如有必要,可以分配输出缓存器。在一些实施例中,输出缓存器的长度为64字节。
框304至326形成处理指令范围110中的代码的循环。在框304处,进行检查以确定输出缓存器是否已满。如果输出缓存器已满,则方法终止。
否则,输出缓存器具有容纳另外一个规范化指令的至少一部分的空间,并且该方法前进到框306。
在框306处,从指令范围110获取当前读取指针处的指令。
在框308处,进行检查以确定该指令是否标记为NOP(即,指示该指令在图2的方法的执行期间无效)。如果该指令被标记为NOP,则流程前进到框318,在该框318中该指令被忽略。例如,不将指令放入输出缓存器,并且指令范围的读取指针可以前进到下一条指令。然后,流程返回到框304。
如果框308处的检查确定该指令未被标记为NOP,则流程从框308前进到框310,在框310中进行检查以确定该指令是否为跳转指令。如果该指令是跳转指令,则在框312处进行检查以确定跳转的目标是否在指令范围内。如果目标在指令范围内,则在框314处,指令范围的读取指针前进到跳转的目标位置。然后,该方法返回到框304。这导致跳转指令、以及跳转指令与目标位置之间的代码被忽略,即不放入输出缓存器。否则,如果目标位置不在指令范围内,则流程前进到框320。
如果框310处的检查确定该指令不是跳转指令,则流程前进到框316。在框316处,可以选择性地执行检查以确定该指令是否属于被指定为被忽略的指令类别。例如,可能需要忽略执行堆栈操作和/或比较指令的指令。为了创建可以与和其它可执行文件相关联的规范化指令进行比较的规范化指令的统一集合,需要忽略此类指令。如果该指令属于被忽略指令的类别,则流程前进到框318,如上文所述,可通过将读取指针移过当前指令并返回到框304来使该指令被忽略。如果该指令不属于被忽略指令的类别,则流程前进到框320。
如果指令未标记为NOP、不是指令范围之外的跳转、并且不属于被忽略的指令类别,则到达框320。在这种情况下,指令可能执行有效操作。在框320处,部分指令被复制到输出缓存器。在一些实施例中,任何指令前缀、操作码、ModRM字节、以及SIB字节被复制到输出缓存器。在一些实施例中,指令的其他部分不被复制到输出缓存器中。
在框322处,进行检查以确定指令是否包含立即数或移位部分。如果指令不包含立即数或移位,则流程前进到框326。如果指令包含立即数或移位,则流程前进到框324,在框324中将盲标记复制到输出缓存器。这样做的效果是用盲标记代替立即数或位移。在一些实施例中,即使指令具有多个立即数和/或位移,也将单个盲标记用于指令。当认为由人工操作员读取结果时,盲标记是有用的。盲标记划分指令流,并指示插入盲标记的位置是一些不重要的数据,这些数据已被忽略。在一些实施例中,使用双破折号(“--”,如图5-9所示),并且可以从前缀、操作码、ModRM字节和SIB字节的十六进制序列中直观地区分出来。在替代实施例中,一个或多个字符的其他序列(例如,问号、星号等)可用于盲标记。在盲标记被插入到输出缓存器之后,流程接着前进到框326。
在框326处,进行检查以确定当前指令是否是指令范围中的最后一条指令。如果是,则方法结束。如果否,则读取位置被更新到下一条指令,并且流程返回到框304以处理下一条指令。
知晓本公开的益处的本领域的技术人员应当理解的是,在图2和图3所述的方法中执行的操作的顺序可以以与上述不同的顺序执行。例如,图2的判定框206、210和214处的检查及其相关联的操作可以按照与所示不同的顺序执行。类似地,图3的框308、310和316处的检查及其相关联的操作可以按照不同的顺序执行。此外,图2和图3中方法的一些或全部操作可以组合成单个方法。
在执行图2和图3的方法的操作之后,输出缓存器中的指令是来自指令范围的有效指令。可以通过图2和图3所示的方法过滤掉无效指令,因此不会复制到输出缓存器。在一些实施例中,输出缓存器中的指令表示来自始终执行的可执行文件的指令,而无需任何可能的绕道。输出缓存器中的指令不必包含所有原始功能。相反地,指令提供代码架构就足够了,它通常总是出现在病毒或其他恶意软件的每个家族成员中,并且总是具有相同的“形状”。形状是对于恶意软件家族的所有成员来说都看上去相同或非常相似的规范化代码(前缀、操作码、ModRM字节、SIB字节和盲标记)的视觉模式。“形状”或模式允许分析人员直观地确定所考虑的样本代码的形状或模式是否与恶意软件家族匹配。
输出缓存器中的指令可以用作恶意软件检测软件可以使用的文件指纹、相似性向量或其他文件比较数据结构的全部或部分。例如,可以将输出缓存器、指纹、相似性向量或其他文件比较数据结构与和已知恶意软件或已知去除可执行文件相关联的第二输出缓存器、指纹、相似性向量或其他文件比较数据结构进行比较。如果比较显示足够的相似性(即,相似性高于预定的或可配置的阈值),则与考虑中的可执行代码相关联的输出缓存器可以被指示为感染已知恶意软件或被清除。
图4是说明使用规范化入口点指令的示例系统400的框图。在一些实施例中,系统400包括客户端计算设备402、提交服务器408、内部文件数据库410、主应用服务器416、内部分析服务器424和分析用户界面(U/I)418。
客户端计算设备402可以是台式计算机、笔记本电脑、服务器计算机、平板计算机、智能电话、个人数字助理、媒体播放器、机顶盒、游戏机、IoT(物联网)设备或具有用于执行计算机程序的一个或多个处理器和存储器的任何其他设备。这些实施例不限于任何特定类型的计算设备。客户端计算设备402可以包括反恶意软件单元406。反恶意软件单元406可以包括能够检测恶意文件的软件、固件或其他可编程逻辑中的一个或多个。另外,反恶意软件单元406可以提交新文件404以进行分析。新文件可以是反恶意软件单元406以前没有看到过的文件,或者只能在少量系统上看到(例如,该文件可以是第一天的恶意软件源)。反恶意软件单元406可以包括规范器102,其生成上面如图2和3所述的规范化指令输出缓存器。所生成的输出缓存器可以与和已知恶意软件相关联的存储输出缓存器进行比较,以确定文件404是否包含恶意软件,或者是否怀疑包含恶意软件。响应于确定文件包含恶意软件,反恶意软件单元可以警告用户、隔离文件404和/或从文件404移除恶意软件。
响应于确定文件404涉嫌包含恶意软件,客户端计算设备402可以将文件404提交到提交服务器408。提交服务器408可以对新文件404执行预处理,并将新文件添加到文件412的集合中。
分析者U/I 418可以为分析者提供用户界面,以访问可用于确定文件是否包含恶意软件的工具。分析者U/I 418可以包括可用于生成如上所述的输出缓存器的规范器102,该输出缓存器可与被分析的文件相关联。生成的输出缓存器可以与和已知包含恶意软件或清除文件的文件相关联的输出缓存器进行比较,以帮助确定文件是否包含恶意软件。此外,在一些方面,分析者U/I可以接收未知文件(即,尚未分析的PE文件)。分析者U/I可以对未知文件使用规范器102来生成如上所述的输出缓存器。然后,分析者U/I可以将从未知文件生成的输出缓存器与和内部文件数据库410中的文件412相关联的输出缓存器进行比较。
内部分析服务器424可以对内部数据库410的文件执行静态或动态分析。在一些方面,内部分析应用可以对文件执行静态分析。内部分析服务器424可以包括规范器102,其可用于生成如上所述的与被分析的文件相关联的输出缓存器。生成的输出缓存器可以与和已知恶意软件或已知清除文件相关联的输出缓存器进行比较,以帮助确定文件是否包含恶意软件。例如,如果生成的输出缓存器与先前确定的与已知恶意软件相关联的输出缓存器足够相似,则可以认为与生成的输出缓存器相关联的文件包括恶意软件。如果两个缓存器完全匹配或匹配的置信度被确定为在预定或可配置阈值上或高于预定或可配置阈值,则可以认为生成的输出缓存器与另一输出缓存器足够相似。
此外,为该文件生成的输出缓存器可以与该文件一起存储在内部文件数据库410中。例如,为文件生成的输出缓存器可以存储为文件的指纹。
一些实施例可以提供更有效的方法来分析可执行文件以指示恶意软件。例如,不需要运行代码来确定哪些指令有效。相反地,可以静态地分析可执行文件,而无需运行时分析。这种静态分析比运行时分析更有效和方便。此外,上述方法可用于识别包含恶意软件的文件。防止此类恶意软件在计算系统上执行可以导致计算系统的更有效和更安全的运行。
图5说明了在规范化之前可执行文件家族的入口点处的原始代码的示例块。原始代码的示例块包括具有相同恶意软件的一个模糊可执行文件家族的原始代码。代码转储中的每一行都表示可能以各种方式混淆的家族中的单个可执行文件。虽然存在一些相似,但家庭成员之间的差异(即行)相对较高。
图6说明了移除指令参数(立即数和移位)并用破折号替换后的原始代码的示例块。同样,虽然表示家庭成员的行之间存在相似性,但仍然存在显著差异。
图7说明了无条件跳转后以及由于无条件跳转被移除而跳过代码后的原始代码的示例块。在这里,表示族成员的行之间的相似性变得更加明显。
图8说明了其中指令参数已被单字节盲标记(由图8中的双破折号表示)替换的原始代码的示例块。表示家庭成员的行之间的相似性变得甚至更加明显。
图9说明了移除重复行之后的原始代码的示例块。移除重复后仍保留三个类似的序列。这可以与图5中所示的可执行文件家族的18个非常不同的序列形成对比。
图10说明了在规范化之前包括无效代码的可执行文件入口点处的原始代码的代码列表。图10中提供的代码列表与图9的第三个样本(即行)相关联。无效指令在图10的示例代码列表中以斜体显示。
图11说明了规范化以移除了无效代码后图10中所示的原始代码的示例块。
图12是可以在其上执行本发明主题的实施例的计算机系统1200的示例实施例的框图。图12的描述旨在提供可与其结合实施本发明的适当计算机硬件和适当计算环境的简要的、通用的描述。在一些实施例中,在由计算机执行的计算机可执行指令(诸如程序模块)的一般上下文中描述本发明主题。一般来说,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。
如上所述,本文公开的系统可以分布在许多物理主机上。因此,图12中的许多系统和子系统可以参与实现本文公开的本发明主题。
此外,本领域技术人员应当理解的是,本发明可与其他计算机系统配置一起实施,包括手持设备、多处理器系统、基于微处理器或可编程消费电子产品、智能电话、网络PC、小型计算机、大型机等。本发明的实施例也可以在通过通信网络链接的I/O远程处理设备执行任务的分布式计算机环境中实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
参考图12,将示例实施例扩展到计算机系统1200的示例形式的机器中,在计算机系统1200中,可以执行用于使机器执行本文讨论的任何一种或多种方法的指令。在替代示例实施例中,机器作为独立设备运行,或者可以连接(例如,联网)到其他机器。在网络部署中,机器可以在服务器-客户机网络环境中以服务器或客户机的身份运行,或者在对等(或分布式)网络环境中以对等机的身份运行。此外,虽然仅示出单个机器,但术语“机器”还应被视为包括单独或联合执行指令集(或多个指令集)以执行本文所讨论的任何一种或多种方法的任何机器的集合。
示例计算机系统1200可以包括处理器1202(例如,中央处理单元(CPU)、图形处理单元(GPU)或两者)、主存储器1204和静态存储器1206,它们通过总线1208彼此通信。计算机系统1200还可以包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))。在示例实施例中,计算机系统1200还包括字母数字输入设备1212(例如,键盘)、用户界面(UI)导航设备或光标控制设备1214(例如,鼠标)、磁盘驱动单元1216、信号生成设备1218(例如,扬声器)和网络接口设备1220中的一个或多个。
磁盘驱动单元1216包括机器可读介质1222,其上存储有实施本文所述的方法或功能的任何一种或多种的、或由本文所述的方法或功能的任何一种或多种使用的一组或多组指令1224和数据结构(例如,软件指令)。在计算机系统1200执行指令1224期间,指令1224也可以完全或至少部分地驻留在主存储器1204内或处理器1202内,主存储器1204和处理器1202也构成机器可读介质。
虽然机器可读介质1222在示例实施例中被示为单个介质,但是术语“机器可读介质”可以包括存储一个或多个指令的单个介质或多个介质(例如,集中式或分布式数据库,或相关联的缓存和服务器)。术语“机器可读介质”还应被视为包括任何有形介质,该有形介质能够存储、编码或携带供机器执行、并且使机器执行本发明实施例的任何一种或多种方法的代码,或者能够存储、编码,或携带由此类指令使用或与此类指令相关联的数据结构。因此,术语“机器可读存储介质”应被视为包括但不限于能够以非暂时方式存储信息的固态存储器、以及光学和磁性介质,即能够存储信息的介质。机器可读存储介质的具体示例包括非易失性存储器,例如包括半导体存储器设备(例如,可擦除的可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存设备);磁盘,诸如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。
还可以使用信号传输介质通过网络接口设备1220并利用许多已知传输协议(例如,FTP、HTTP)中的任何一个来在通信网络1226上发送或接收指令1224。通信网络的示例包括局域网(LAN)、广域网(WAN)、因特网、移动电话网络、普通电话(POTS)网络和无线数据网络(例如,WiFi和WiMax网络)。术语“机器可读信号介质”应被视为包括能够存储、编码或携带用于机器执行的指令的任何暂时性无形介质,并且包括数字或模拟通信信号或其他无形介质,以促进此类软件的通信。
尽管已经参考具体的示例实施例描述了本发明主题的概述,但是可以在不脱离本发明实施例的更广泛的精神和范围的情况下对这些实施例进行各种修改和改变。如果事实上公开了不止一个发明或发明概念,则仅仅为了方便、并且不意图主动将本申请的范围限制到任何单个发明或发明概念,可以通过术语“发明”在本文中单独或集体地提及本发明主题的这些实施例。
从上述描述显而易见的是,本发明主题的一些方面不受本文所示示例的特定细节的限制,因此可以预期本领域技术人员将进行其他修改和应用、或做出其等效体。因此,意图使权利要求应当涵盖所有不背离本发明主题的精神和范围的修改和应用。因此,本发明的主题显然仅受以下权利要求及其等效体的限制。
提供摘要以符合37C.F.R.§1.72(b),以允许读者能够快速确定本技术公开的性质和要点。在知晓摘要将不用于限制权利要求的范围的情况下提交摘要。
Claims (21)
1.一种用于规范化入口点指令的方法,所述方法包括:
接收包括可执行代码的入口点的多个指令;
对于所述多个指令中的每个指令:
解析所述指令,
确定所述指令是否执行有效操作,以及
响应于确定所述指令不执行有效操作,将所述指令标记为无效;以及
过滤被标记为无效的所述多个指令中的一个或多个指令,使得不将所述一个或多个指令复制到输出缓存器。
2.根据权利要求1所述的方法,还包括:
确定所述指令是否放弃先前指令的操作;以及
响应于确定所述指令放弃所述先前指令的所述操作,将所述先前指令标记为无效。
3.根据权利要求1所述的方法,还包括:
确定所述指令是否恢复先前指令的操作;以及
响应于确定所述指令恢复所述先前指令的所述操作,将所述指令和所述先前指令标记为无效。
4.根据权利要求1所述的方法,还包括:
确定所述指令是否包括目标地址在所述多个指令内的跳转指令;以及
响应于确定所述指令包括所述目标地址在所述多个指令内的所述跳转指令,过滤所述跳转指令和所述跳转指令与所述目标地址之间的指令,以便不将所述跳转指令和所述跳转指令与所述目标地址之间的指令复制到所述输出缓存器。
5.根据权利要求1所述的方法,还包括:
确定所述指令是否具有与被忽略的指令相关联的类型;以及
响应于确定所述指令具有与被忽略的指令相关联的所述类型,过滤所述指令,以便不将所述指令复制到所述输出缓存器中。
6.根据权利要求1所述的方法,还包括:
确定所述指令是否包含立即数或移位;以及
响应于确定所述指令包含所述立即数或移位,在所述输出缓存器中用盲标记替换所述立即数或移位。
7.根据权利要求1所述的方法,还包括:
将所述输出缓存器与和包含已知恶意软件的可执行文件相关联的第二输出缓存器进行比较;以及
响应于确定所述输出缓存器和所述第二输出缓存器足够相似,指示所述可执行代码包含所述已知恶意软件。
8.一种非暂时性机器可读存储介质,其上存储有用于规范化入口点指令的计算机可执行指令,所述计算机可执行指令使一个或多个处理器执行操作,包括:
接收包括可执行代码的入口点的多个源指令;
对于所述多个源指令中的每个源指令:
解析所述源指令,
确定所述源指令是否执行有效操作,以及
响应于确定所述源指令不执行有效操作,将所述源指令标记为无效;以及
过滤被标记为无效的所述多个源指令中的一个或多个源指令,使得不将所述一个或多个源指令复制到输出缓存器。
9.根据权利要求8所述的非暂时性机器可读存储介质,其中所述操作还包括:
确定所述源指令是否放弃先前源指令的操作;以及
响应于确定所述源指令放弃所述先前源指令的所述操作,将所述先前源指令标记为无效。
10.根据权利要求8所述的非暂时性机器可读存储介质,其中所述操作还包括:
确定所述源指令是否恢复先前源指令的操作;以及
响应于确定所述源指令恢复所述先前源指令的所述操作,将所述源指令和所述先前源指令标记为无效。
11.根据权利要求8所述的非暂时性机器可读存储介质,其中所述操作还包括:
确定所述源指令是否包括目标地址在所述多个源指令内的跳转指令;以及
响应于确定所述源指令包括所述目标地址在所述多个源指令内的所述跳转指令,过滤所述跳转指令和所述跳转指令与所述目标地址之间的源指令,以便不将所述跳转指令和所述跳转指令与所述目标地址之间的源指令复制到所述输出缓存器。
12.根据权利要求8所述的非暂时性机器可读存储介质,其中所述操作还包括:
确定所述源指令是否具有与被忽略的指令相关联的类型;以及
响应于确定所述源指令具有与被忽略的指令相关联的所述类型,过滤所述源指令,以便不将所述源指令复制到所述输出缓存器中。
13.根据权利要求8所述的非暂时性机器可读存储介质,其中所述操作还包括:
确定所述源指令是否包含立即数或移位;以及
响应于确定所述源指令包含所述立即数或移位,在所述输出缓存器中用盲标记替换所述立即数或移位。
14.根据权利要求8所述的非暂时性机器可读存储介质,其中所述操作还包括:
将所述输出缓存器与和包含已知恶意软件的可执行文件相关联的第二输出缓存器进行比较;以及
响应于确定所述输出缓存器和所述第二输出缓存器足够相似,指示所述可执行代码包含所述已知恶意软件。
15.一种用于规范化入口点指令的装置,所述装置包括:
一个或多个处理器;以及
一种非暂时性机器可读介质,其上存储有计算机可执行指令,所述计算机可执行指令使所述一个或多个处理器:
接收包括可执行代码的入口点的多个源指令;
对于所述多个源指令中的每个源指令:
解析所述源指令,
确定所述源指令是否执行有效操作,以及
响应于确定所述源指令不执行有效操作,将所述源指令标记为无效;以及
过滤被标记为无效的所述多个源指令中的一个或多个源指令,使得不将所述一个或多个源指令复制到输出缓存器。
16.根据权利要求15所述的装置,其中,所述计算机可执行指令还包括指令,使所述一个或多个处理器:
确定所述源指令是否放弃先前源指令的操作;以及
响应于确定所述源指令放弃所述先前源指令的所述操作,将所述先前源指令标记为无效。
17.根据权利要求15所述的装置,其中,所述计算机可执行指令还包括指令,使所述一个或多个处理器:
确定所述源指令是否恢复先前源指令的操作;以及
响应于确定所述源指令恢复所述先前源指令的所述操作,将所述源指令和所述先前源指令标记为无效。
18.根据权利要求15所述的装置,其中,所述计算机可执行指令还包括指令,使所述一个或多个处理器:
确定所述源指令是否包括目标地址在所述多个源指令内的跳转指令;以及
响应于确定所述源指令包括所述目标地址在所述多个源指令内的所述跳转指令,过滤所述跳转指令和所述跳转指令与所述目标地址之间的源指令,以便不将所述跳转指令和所述跳转指令与所述目标地址之间的源指令复制到所述输出缓存器。
19.根据权利要求15所述的装置,其中,所述计算机可执行指令还包括指令,使所述一个或多个处理器:
确定所述源指令是否具有与被忽略的指令相关联的类型;以及
响应于确定所述源指令具有与被忽略的指令相关联的所述类型,过滤所述源指令,以便不将所述源指令复制到所述输出缓存器中。
20.根据权利要求15所述的装置,其中所述计算机可执行指令还包括指令,使所述一个或多个处理器:
确定所述源指令是否包含立即数或移位;以及
响应于确定所述源指令包含所述立即数或移位,在所述输出缓存器中用盲标记替换所述立即数或移位。
21.根据权利要求15所述的装置,其中所述计算机可执行指令还包括指令,使所述一个或多个处理器:
将所述输出缓存器与和包含已知恶意软件的可执行文件相关联的第二输出缓存器进行比较;以及
响应于确定所述输出缓存器和所述第二输出缓存器足够相似,指示所述可执行代码包含所述已知恶意软件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762526994P | 2017-06-29 | 2017-06-29 | |
US62/526,994 | 2017-06-29 | ||
PCT/EP2018/067593 WO2019002558A1 (en) | 2017-06-29 | 2018-06-29 | STANDARDIZATION OF ENTRY POINT INSTRUCTIONS IN EXECUTABLE PROGRAM FILES |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110832488A true CN110832488A (zh) | 2020-02-21 |
Family
ID=62784174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880044063.3A Pending CN110832488A (zh) | 2017-06-29 | 2018-06-29 | 规范化可执行程序文件中的入口点指令 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10909243B2 (zh) |
CN (1) | CN110832488A (zh) |
WO (1) | WO2019002558A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10713359B2 (en) * | 2017-09-29 | 2020-07-14 | AO Kaspersky Lab | System and method of identifying a malicious intermediate language file |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172338A1 (en) * | 2004-01-30 | 2005-08-04 | Sandu Catalin D. | System and method for detecting malware in executable scripts according to its functionality |
US20050223238A1 (en) * | 2003-09-26 | 2005-10-06 | Schmid Matthew N | Methods for identifying malicious software |
US20070074287A1 (en) * | 2005-09-13 | 2007-03-29 | Christopher Abad | Signature for executable code |
CN101359352A (zh) * | 2008-09-25 | 2009-02-04 | 中国人民解放军信息工程大学 | 分层协同的混淆后api调用行为发现及其恶意性判定方法 |
US20110010697A1 (en) * | 2009-07-10 | 2011-01-13 | Golovkin Maxim Y | Systems and Methods for Detecting Obfuscated Malware |
CN104834837A (zh) * | 2015-04-03 | 2015-08-12 | 西北大学 | 一种基于语义的二进制代码反混淆方法 |
CN106796640A (zh) * | 2014-09-26 | 2017-05-31 | 迈克菲股份有限公司 | 分类恶意软件检测和抑制 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0815510B1 (en) * | 1995-12-28 | 2000-11-08 | InDefense, Inc. | Method for protecting executable software programs against infection by software viruses |
US6164841A (en) * | 1998-05-04 | 2000-12-26 | Hewlett-Packard Company | Method, apparatus, and product for dynamic software code translation system |
US8904189B1 (en) * | 2010-07-15 | 2014-12-02 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time using control flow signatures |
RU2454714C1 (ru) * | 2010-12-30 | 2012-06-27 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ повышения эффективности обнаружения неизвестных вредоносных объектов |
US9305165B2 (en) * | 2011-05-06 | 2016-04-05 | The University Of North Carolina At Chapel Hill | Methods, systems, and computer readable media for detecting injected machine code |
US9900324B1 (en) * | 2014-01-29 | 2018-02-20 | SecondWrite LLC | System to discover and analyze evasive malware |
US9858058B2 (en) * | 2014-03-31 | 2018-01-02 | International Business Machines Corporation | Partition mobility for partitions with extended code |
US9361102B2 (en) * | 2014-06-09 | 2016-06-07 | Lehigh University | Methods for enforcing control flow of a computer program |
WO2016027641A1 (ja) | 2014-08-20 | 2016-02-25 | 日本電信電話株式会社 | 脆弱性発見装置、脆弱性発見方法、及び脆弱性発見プログラム |
US11042631B2 (en) * | 2014-12-11 | 2021-06-22 | University Of Virginia Patent Foundation | System, method and computer readable medium for software protection via composable process-level virtual machines |
US10623438B2 (en) * | 2016-12-28 | 2020-04-14 | Mcafee, Llc | Detecting execution of modified executable code |
-
2018
- 2018-06-28 US US16/022,587 patent/US10909243B2/en active Active
- 2018-06-29 WO PCT/EP2018/067593 patent/WO2019002558A1/en active Application Filing
- 2018-06-29 CN CN201880044063.3A patent/CN110832488A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050223238A1 (en) * | 2003-09-26 | 2005-10-06 | Schmid Matthew N | Methods for identifying malicious software |
US20050172338A1 (en) * | 2004-01-30 | 2005-08-04 | Sandu Catalin D. | System and method for detecting malware in executable scripts according to its functionality |
US20070074287A1 (en) * | 2005-09-13 | 2007-03-29 | Christopher Abad | Signature for executable code |
CN101359352A (zh) * | 2008-09-25 | 2009-02-04 | 中国人民解放军信息工程大学 | 分层协同的混淆后api调用行为发现及其恶意性判定方法 |
US20110010697A1 (en) * | 2009-07-10 | 2011-01-13 | Golovkin Maxim Y | Systems and Methods for Detecting Obfuscated Malware |
CN106796640A (zh) * | 2014-09-26 | 2017-05-31 | 迈克菲股份有限公司 | 分类恶意软件检测和抑制 |
CN104834837A (zh) * | 2015-04-03 | 2015-08-12 | 西北大学 | 一种基于语义的二进制代码反混淆方法 |
Non-Patent Citations (1)
Title |
---|
戴超等: ""针对指令重叠混淆技术的恶意代码反汇编研究"" * |
Also Published As
Publication number | Publication date |
---|---|
US20190005238A1 (en) | 2019-01-03 |
US10909243B2 (en) | 2021-02-02 |
WO2019002558A1 (en) | 2019-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601451B2 (en) | System, method, and computer program product for determining whether code is unwanted based on the decompilation thereof | |
US10200391B2 (en) | Detection of malware in derived pattern space | |
JP6088713B2 (ja) | 脆弱性発見装置、脆弱性発見方法、及び脆弱性発見プログラム | |
US8782791B2 (en) | Computer virus detection systems and methods | |
CN110023938B (zh) | 利用函数长度统计确定文件相似度的系统和方法 | |
US11256804B2 (en) | Malware classification of executable files by convolutional networks | |
CN109983464B (zh) | 检测恶意脚本 | |
US11048798B2 (en) | Method for detecting libraries in program binaries | |
WO2017012241A1 (zh) | 文件的检测方法、装置、设备及非易失性计算机存储介质 | |
US20180285565A1 (en) | Malware detection in applications based on presence of computer generated strings | |
US10198576B2 (en) | Identification of mislabeled samples via phantom nodes in label propagation | |
US20160196427A1 (en) | System and Method for Detecting Branch Oriented Programming Anomalies | |
US10255436B2 (en) | Creating rules describing malicious files based on file properties | |
US8458794B1 (en) | System, method, and computer program product for determining whether a hook is associated with potentially unwanted activity | |
CN111448552A (zh) | 设备事件的观察和分类 | |
JP6459289B2 (ja) | マルウェア推定装置、マルウェア推定方法、及び、マルウェア推定プログラム | |
EP3087527B1 (en) | System and method of detecting malicious multimedia files | |
WO2022100489A1 (en) | System, method and apparatus for malicious software detection | |
US10909243B2 (en) | Normalizing entry point instructions in executable program files | |
CN106372508B (zh) | 恶意文档的处理方法及装置 | |
US20170279841A1 (en) | Methods of determining a file similarity fingerprint | |
de Souza et al. | Inference of Endianness and Wordsize From Memory Dumps | |
CN105631320B (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 |