CN107615240A - 用于分析二进制文件的基于生物序列的方案 - Google Patents
用于分析二进制文件的基于生物序列的方案 Download PDFInfo
- Publication number
- CN107615240A CN107615240A CN201680031549.4A CN201680031549A CN107615240A CN 107615240 A CN107615240 A CN 107615240A CN 201680031549 A CN201680031549 A CN 201680031549A CN 107615240 A CN107615240 A CN 107615240A
- Authority
- CN
- China
- Prior art keywords
- working machine
- sequence
- memory
- binary file
- main frame
- 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
Links
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
- G16B30/10—Sequence alignment; Homology search
-
- 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/53—Decompilation; Disassembly
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
- G16B30/20—Sequence assembly
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Chemical & Material Sciences (AREA)
- Biotechnology (AREA)
- Analytical Chemistry (AREA)
- Biophysics (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Evolutionary Biology (AREA)
- Medical Informatics (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在动态计算环境中,验证在环境中运行的代码是一项不平凡的任务,因为用于软件相似性的大多数方法需要二进制文件的大量且耗时的分析,或者这些方案无法识别相似但非完全相同的可执行文件。用于量化可执行二进制文件的相似性的基于生物序列的方法被用于标识在真实世界的多用户环境中允许的代码。
Description
相关申请的交叉引用
本申请根据35U.S.C.§119(e)要求于2015年4月17日提交的标题为“What'sReally Running on Your Cluster:A Biosequence-Based Approach to WhitelistingHPC Applications in a Development Environment”的美国临时专利申请系列No.62/149,126的优先权,其全部内容为了所有目的通过引用方式并入本文。
美国政府机构和政府合同
本发明部分地由美国政府机构资助或与美国政府机构签订合同。美国政府机构的名称和政府合同编号为:经由数据密集计算倡议(DICI)、信息和基础设施完整性倡议(14)、和签名发现倡议(SDI)在太平洋西北国家实验室(PNNL)处的实验室指导研究与开发(LDRD)。西北太平洋国家实验室PNNL由Battelle根据合同DE-ACO6-76RL0-1 830为DOE运行。
技术领域
本发明涉及计算机分析领域。更具体地,本发明涉及软件身份验证。
背景技术
对于诸如高性能计算(HPC)中心和云平台的许多多用户环境,存在日益增加的安全相关的需求以了解这些资源如何被使用。从防止检测不需要或非法代码的能力的低效使用方面,存在系统维护人员应当认识到的一连串期望和不期望的代码。可靠地开发和标识各种网络数据集合(诸如可执行软件语料库(corpus))的签名的科学越来越受到可用软件的速率、数量和复杂性的挑战。随着计算能力、网络带宽和计算周期根据摩尔定律继续增加,新的应用程序将以不断增加的速度上线。特别的,因为应用程序的数量和复杂性的增加以及任何给定应用程序的变体的数量,软件身份验证或标识在给定时间在系统上执行什么二进制文件的挑战越来越困难。二进制文件是文件或代码。一些二进制文件在没有安装程序的情况下起作用。
克隆检测是一种现有的软件分析方案,其可能被用于标识二进制文件家族的高度相似的变体。克隆检测的应用程序通常针对以下目的被应用于大规模的代码库软件:1)在大型软件项目中发现和消除剪切和粘贴分段,因为它们特别容易引入复杂性和错误,2)标识软件抄袭的实例,或3)确保许可代码不含开源代码片段或会危害商业许可的其他软件。
克隆检测通常通过分析源代码或者通过在反汇编的二进制文件(例如汇编指令)上操作来完成。
直接检测相似的二进制文件是许多商业产品和研究项目的目标,其中大部分是基于代码签名的。通常,这些签名是根据二进制文件序列的校验和或向数字表示的其他变换而被构建的,其中查找匹配等同于发现相等的校验和。存在针对这个主题的许多变化,包括针对每个二进制文件计算单个校验和的简单方法。这种精确匹配方法不适合在开发环境中识别二进制文件,因为二进制文件不应当是精确匹配的。同样在云环境中,可能存在很多(几乎完全相同的)变体,事先详尽地特征化它们是不实际的。基于精确匹配的方法失败了,因为通过添加单个无意义指令或改变单个数据字段(诸如内部作者名称或时间戳)导致完全不相关的校验和值。这是因为一般来说,校验和不能保留相似性。
基于散列的方法的主要限制是,因为散列确定了散列片段的准确匹配或不匹配(而不是近似匹配),所以它们在灵敏度和特异性之间具有固有折衷。如果它们是准确匹配,整个二进制文件的散列才将与另一个二进制文件匹配。向一个二进制文件引入单个无意义的指令将会改变它的散列,使其显示为一个完全不同的制品。散列相反在针对相同示例的部分层次上会产生一系列相同的散列和一个不同的散列。然而,每个部分的单个琐碎的添加将使他们看起来不同,再次混淆该方法。在图谱的另一端,图形相似性方案在计算上花费很大(并且因此对于克隆的线速标识是不实际的解决方案),或者为了速度灵敏度被牺牲。
发明内容
在动态计算环境中,验证在环境中运行的代码是一项不平凡的任务,因为大多数软件相似性方案需要对二进制文件的大量且耗时的分析,或者这些方案不能识别相似但不相同的可执行文件。用于量化可执行二进制文件的相似性的基于生物序列的方法被用于标识真实世界的多用户环境中允许的代码。
附图说明
图1示出了根据一些实施例的软件的蛋白质表示的比对。
图2图示了根据一些实施例的MADBlast的缩放性能。
图3图示了根据一些实施例的具有所有ADF家族成员为灰色或黑色,并且所有非ADF个人为白色的家族树的结果。
图4图示了根据一些实施例的ROC曲线下面积的结果。
图5图示了根据一些实施例的ROC曲线下面积的结果。
图6图示了根据一些实施例的被配置为实现基于生物序列的二进制文件分析方法的示例性计算设备的框图。
图7图示了根据一些实施例的基于生物序列的二进制文件分析方法的流程图。
具体实施方式
二进制文件群体中的一个有组织变体激发了一种用于识别软件二进制文件的“家族和变体”而不是“个体”的方案。识别相关但不同变体的能力对于几个实际应用是重要的,诸如维护一个大型的软件库(例如NIST库)(其中人们不想要许多冗余的密切相关的二进制文件副本),检测开发代码库中免费软件或其他授权代码的存在,并确保只有特定的应用程序在受限制的环境(白名单)中使用,等等。对于这样的应用,而不是传统的代码分析(这可能需要大量的计算能力和远远多于需要的详细分析),存在需要来自其他领域的技术(诸如可修改的以容易识别家族和变体的生物科学)的引导。
本文描述的是一种用于识别相似软件的新颖的生物启发式方法。这种方法经由验证软件身份与已知的软件示例被证明是用于的可执行二进制文件白名单的问题的合适的算法内核。在主动环境中,可能存在许多轻微的软件变体。期望每个正在执行的个体是与任何以前报告的软件个体的准确匹配是不合理的。因此,生物序列分析是量化新软件与基于序列的软件模型的匹配程度的理想技术。
对于软件身份验证,来自相同代码家族的软件变体的集合被认为是“种类”,并且每次用户想要执行代码时,“个体”被检查以确保其是种类的真正成员。作为一个简单的示例,记事本应用程序的集合是一个种类,每个个体LINPACK可执行二进制文件是一个个体。LINPACK是与计算化学代码NWChem不同的种类。LINPACK版本1.2和2.3是相同种类内的不同个体。如果多用户平台的用户想要使用批量提交脚本来运行LINPACK,则软件身份验证过程将在允许作业运行之前通过与已知的LINPACK家族成员进行比较来分析二进制文件,以确保提交的可执行文件实际上是LINPACK家族的成员。
由于多用户环境中的软件是高度动态的,因此不能期望每个正在执行的个体与先前看到的任何软件个体完全匹配。另外,维护所有可能变体的列表并且对整个列表检查新请求是不实际的。相反,生物序列分析被用作一种用于量化新软件与剩余家族的序列模型的匹配程度的方式。如果软件请求通过测试,则它将被允许在HPC平台上运行。
本文描述,通过允许在阈值下发生的插入或不匹配来解析指令,并且使精确匹配更加灵活。在更复杂的方案中,反汇编被用作预处理步骤来标识代码分段,诸如生成校验和签名的函数。这是一个非常有前景的方案,并且已经被示出可以消除来自已知恶意软件语料库的许多重复或接近重复。其他变体使用技术(诸如使用反汇编)来将二进制文件的入口点标识为汇编流签名的起始点。虽然签名确实允许二进制文件识别具有一定的灵活性,但需要一种方法来“发现”特定代码家族的最可靠指示符。
更进一步,已经示出二进制文件的高度相似的区域能够使用与局部敏感性散列(局部保持散列的一种松散形式)组合的反汇编的、规范化的序列来标识。当程序行为与静态分析相关时,包括用规范化指令序列的动态分析已经被示出为增加敏感性。
本文描述了两种方法:指令频率向量和基于生物信息学的相似性分析。用于软件身份验证的这两种方案证明了超出了基于散列的方案的限制(其将不能标识任何相似但不相同的软件制品)。在抽象语法树(AST)上运行时,基于生物信息学的方案已被证明是一个强大的工具。本文描述的方法使用相似的方案,但是不使用AST,而仅依赖于二进制文件的反汇编。这些方法不依赖于源代码的存在,也不分析二进制文件中复杂的词汇特征或结构,因此可以快速地操作原始二进制文件。他们只依靠对反汇编指令的分析。以下部分将更详细地描述这两种方案的动机和特点。
指令频率向量相似性
基于指令频率向量的相似性分析测试软件二进制文件的反汇编指令的全局的、基于频率的表示能够检测相似软件实例的程度,即使当这些二进制文件是不完全相同的。向量化是一种“全局”方法,因为单个特征向量描述整个代码实例,并且因此在整个实例与另一整个实例相似时在识别中将是最有用的。这种方法在检测个体部分的相似性方面是无用的。对于软件识别验证的应用,这种整个代码方案在很多情况下可能是合理的,因为人们试图回答“是否有足够的证据证明测试二进制文件确实是预定的二进制文件家族的成员?”的问题。像这样的全局二进制文件相似性方法在大型或高度变异的家族或子家族中预计也不会起作用,但是表示快速软件标识验证的简单起点,并且被包括以用于比较。特征向量方案做了一个简化的假设:指令的顺序在区分二进制文件家族中并不重要。因此,基于特征向量的方案在计算上比更复杂的分析(诸如基于生物信息学的分析)更简单,但是在标识高度变异的二进制文件家族的成员方面不预期具有相同的统计性能。
基于生物信息学的相似性
生物序列分析对用于二进制文件分析的基于散列和基于图的方法的局限性提供了替代方案。生物序列是来自固定数量的子单元(DNA和RNA的4种子单元类型,以及蛋白质的20种子单元类型)的化学链。由于DNA是一代又一代被遗传和修改的,DNA序列(或与DNA序列相关的蛋白质序列)中的相似性出现在共有祖先的生物体中。用于发现生物序列中序列相似性的计算方法已经开发和完善了数十年。这些方法是动态编程方法的变体,该动态编程方法将表示生物分子的字符串映射到另一个上---被称为比对的过程。比对也会导致可以用作接近性度量的相似性评分。
本文描述的基于生物信息学的方法基于计算算法BLAST,其是用于比较表示生物化学子单元的文本串的统计方法。在BLAST中,执行字符串比对会发现超出统计期望的通用区域,并且会高度容忍错配、插入和删除。应用于二进制文件分析的BLAST是有吸引力的,因为其容忍高度的不相似性,并且具有标识别高度相似的二进制文件的子区域的能力。BLAST中的字符串匹配比正则表达式、编辑距离或其他传统计算方法更灵活。BLAST将测试字符串与参考字符串集合进行比较,以量化测试字符串被认为与参考字符串相关的程度。这被报告为针对具有超过用户定义的阈值的评分的每个测试/参考对的评分和统计置信度度量。字符串之间的所计算的比对也被报告。图1图示了在BLAST中如何报告两个字符串之间的比对。
图1显示了软件的蛋白质表示的比对。顶部面板是两个代码个体的字符串表示,底部面板显示它们之间的比对。虚线表示在其中一个代码包含在其他代码中未找到的插入指令的地方。粗体字符指示比对区域中的个体之间的不匹配。
由于BLAST并不是在更高级别的结构上运行的,所以它不会导致从二进制文件中确定抽象语法树(AST)或程序相关图(PDG)信息的开销,但有可能比代码的基于频率的特征向量表示更具体,因为指令的序列中的关键模式被保留。
该方案是通过将分析分为两个阶段来将软件身份验证的挑战映射到序列分析问题上。在第一阶段,软件家族的成员被反汇编并转换为序列,并使用序列分析软件的高性能实现进行分析。被称为MADBlast的高性能序列分析软件是BLAST序列比对方法的多处理器实现。MADBlast允许更广义的字母表,并在任务执行期间节点利用率的更有效监视。在第二阶段,为了比较在多用户系统上执行代码的新请求,构建代码类(软件种类)的模型。比较提交的可执行文件与在该第二阶段中的可接受的代码模型库不需要HPC,并且能够在管理节点上执行得非常快,从而为用户请求运行的代码提供一些保证。
在BLAST中,这些方法中最值得注意的是,字符串比对发现超出统计期望的通用区域,并且对于错配、插入和删除具有高度的容忍性。应用于二进制文件分析的BLAST是基于散列的方法的有吸引力的替代方案,因为它容忍高度的不相似性。类似地,由于BLAST并不是在更高级别的结构上运行,所以它不会导致从反汇编中获得AST或PDG信息的开销,但是可能比代码的向量表示更具体,因为一些指令序列的概念被保存。MADBlast可以在第一阶段的非常大的数据集合上运行大规模并行BLAST计算,其中二进制文件家族的模型被生成。MADBlast还允许在串行模式下测试(未知)二进制文件与已知家族模型库的非常快速的比较。
包括正在开发的代码的软件本质上是有组织的。各代代码之间存在着继承、共享、专业化和变异,以及高效利用有限资源的优化。通过使用BLAST作为量化二进制文件相似性的基础,有机模型被用作为代码相似性的度量。在这样做的过程中,对代码正在做什么的精确理解已经消失,但是获得了查看跨软件二进制文件的大的语料库的相似性的能力。虽然BLAST分析并不是用于明确地说明代码在做什么,但是这种方法仍然能够被用于把大数据集合组织成有意义的家族来发现签名,并预测先前未知的个体的家族成员。
克隆检测问题通过在可用时反汇编包括功能块信息的感兴趣的二进制文件来被映射到字符串比对问题。代码中的功能块与一个种类内的蛋白质相似。单个种类将会有许多蛋白质,就像单个二进制文件将具有多个功能块一样。另外,当使用小的字母表(几十个字符来表示数千种指令类型)进行时,字符串比对做的最好,而不是分离地处理所有的指令/参数组合并寻找相似性(其是常规字符串匹配通常如何在反汇编的二进制文件上完成的),该方法将执行相似任务的许多指令合并为主题类别并忽略参数。这具有概括指令流的效果。类似于标记化方法,这种概括在汇编级别上操作。汇编级别的“标记化(Tokenizing)”是通过对相似类型的指令进行分组来完成的,并且针对在源代码的标记化中忽略变量名的相同原因,指令的细节被规范化,并且采取忽略参数的另一步骤(而不是潜在地作为反汇编中的错误检测源)。
这是与大多数克隆检测方法的显著偏差,因为来自原始二进制文件中的所有语法和结构信息都是故意不被保留的。相反,克隆检测问题完全改变,问题被询问:“这两个二进制文件流之间是否存在比偶然发生的可能性更高的高度保守的模式?”。这个问题的答案产生了关于在软件家族和这些家族的签名中可能有意义的关于共同性的信息。二进制文件序列分析自身直接适用于这些类型的分析,因为它们是蛋白质系统研究得很好的问题。这是从二进制文件分析到蛋白质序列分析的映射提供价值的地方-自动地获得系统发育和基于家族的分析技术和主题发现能力,作为使用成熟的生物信息学方案的结果。
转换可执行二进制文件和规范化
将二进制文件转换为字符串表示形式以反汇编开始。通常,反汇编过程将可执行二进制文件转换为汇编指令的功能块及其相关的参数。例如,源代码中的单个加法操作将被转换为一对“mov”操作以从存储器中检索值并将它们放置在算术单元中,第二个操作用于“添加”这些值,而另一个“mov”操作将添加操作的结果放入存储器中的新位置。
在一些实施例中,反汇编方法基于由哥本哈根大学的Agner Fog博士编写的名为Objconv的GNU GPL许可项目,其与大多数Linux操作系统一起分发。Objconv提供了准确的反汇编和速度的完美平衡。为了将反汇编过程自动化为被正确的格式化以用于序列分析的文件的创建,Objconv已经扩展了被称为Distfast的应用程序,它是允许控制输入到Objconv和处理来自Objconv的输出以C++或Python语言的包装器。Distfast还使用上述的标记化提供Objconv输出到蛋白质表示的转换。这种格式称为FASTA格式(BLAST分析能够直接应用的格式),消除发布用于比对分析的处理文件的需要。
这个修改后的反汇编程序被应用到感兴趣的二进制文件中,导致汇编序列被反汇编为针对每个二进制文件的功能块。通过移除所有参数并将相似的操作码分类地分组(将每个类别映射到单个字母)来将汇编序列规范化。这个映射捕捉绝大多数常见的指令,除了无操作。
发生了两种类型的规范化以发展从原始二进制文件到频率向量或生物序列表示的映射。第一个规范化步骤是放弃汇编指令的所有参数。第二个规范化步骤滤除高频率和非常低频率发生的指令。最常出现的指令被忽略,因为它们经常发生,它们将控制任何二进制文件表示。这导致覆盖了语料库中的大部分指令的27组指令。所有剩余的不经常发生的指令被忽略。这个过滤步骤被完成以通过不为高度不频繁的指令预留空间或字符来最大化向量和生物序列二进制文件形式的信息内容。
指令频率向量法
每个规范化的二进制文件序列被表示为具有27个元素的特征向量,每个元素的值是二进制文件中特定指令的相对丰度(abundance)。这掩盖了二进制文件的长度可能具有的任何影响。为了生成ith和jth二进制文件之间的距离度量,它们的频率向量之间的欧几里德距离(Dij)被计算。由于向量被规范化到正的超球面,1-Dy的简单相似性度量在所有二进制文件对之间被计算。
基于生物信息学的相似性方法
将生物序列分析应用于软件二进制文件是几个步骤的过程。如上所述过滤指令序列,并将二进制文件代码转换成将由在MADBlast工具中实现的BLAST算法使用的蛋白质表示。MADBlast被用于执行序列比对以找到相关的子序列。
MADBlast采用评分矩阵和评分参数作为输入文本字符串,评分矩阵包含用于文本比对和未比对事件的奖励值,以及评分参数诸如间隔开放和间隔扩展处罚。这种方法已经在先前的工作中被推广,以适用于字符串字母表,而不仅仅是由生物BLAST代码期望的标准20个氨基酸字符。特定于二进制文件分析的评分矩阵被利用。这些步骤中的每一个都在本文被更详细地描述。
生成序列的相似性评分
MADBlast用于将来自HPC二进制文件的语料库(corpus)的反汇编的序列中的每一个与来自该语料库的其他序列中的每一个进行比较。这产生具有序列的记录的BLAST输出文件,该序列的记录显著与来自具有来自语料库中的所有其他二进制文件的所有功能每个二进制文件的每个功能块和进行比对。得到的MADBlast评分是使用单独序列作为二进制文件模型来发现其他相似的二进制文件的基础。这些评分也被用作使用以欧几里德距离作为距离度量的分级集群工具WEKA的家族树分析的距离度量。
针对序列之间的正向“命中”,两个不同的严格水平被测试。不太严格的截断值由共享至少10个字符且具有至少50%相同性(Len 10,Id 50%)的比对的序列定义。当一对具有长度为50且具有80%相同性或更好相同性(Len 50,Id 80%)的BLAST比对时,更严格的截断被定义。这些评分是基于利用MADBlast的先前经验选择的,并且多个评分被选择以避免对任何一个截断值集合的敏感度。由于BLAST算法掩盖了低复杂度的序列,许多功能甚至不能自己匹配。不能自匹配的故障被用作功能过滤器来消除表现出低复杂度的序列。
二进制文件由许多功能构成,每个功能都被视为个体的序列。为了将功能级别相似性的结果聚合到与两个二进制文件(本文中表示为A和B)的相似性评分,结果被报告为分数,其中分母是具有高于所选择的严格性水平的任何比对的二进制文件A的序列的数目。每个相似性的分子是在给定的严格性水平中匹配B中的任何功能的A中的序列的数目。完美评分1.0表示具有匹配A到B的任何比对的所有功能。差的评分0.5意味着来自A的只有1/2的功能与B中的序列相匹配,并且1/2与其他目标相匹配。
重新实现串行BLAST
在处理非常大的高性能代码时,发现获得了非常长的功能块以及有些非常短的功能块。非常短的序列没有足够的信息来可靠地确定它们与另一序列的相似性是否是随机的,因此转换后不超过10个字符的序列被消除。非常长的序列通过将它们分成多个固定长度的子序列以在MADBlast代码中被特别处理。
BLAST算法最初发表于1990年,且其相关论文被引用超过10万次以用于应用研究,诸如药物发现和生物标志物研究,以及数十年对分子过程的基础研究,该分子过程使种类和群落能够生存。实际上,大多数负责分析新序列的通量以进行分析的典型测序平台比摩尔定律更快地提高了吞吐量,从而导致用于计算的需求超过了底层硬件的改进的情况。这激发了对诸如ScalaBLAST的BLAST的并行实现的需求。然而,BLAST并没有作为库来实现,所以将其用作ScalaBLAST和其他并行实现的算法内核是具有挑战性的,因为它缺少外部API,并且由于在修改BLAST内核时无意的副作用的可能性的问题。与大多数科学软件一样,BLAST如何实现的低层级细节已被排除在出版物之外。即使有关于BLAST细节的出版物的大的语料库,也存在被发现用于创建可重复的BLAST计算内核的许多实现级别的细节。
用于驱动蛋白质比较计算(blastp操作模式)的BLAST功能已经被重新实现,以用于实现细节的透明性和理解,并且避免在用并行MADBlast控制层驱动时将不想要的副作用引入串行BLAST内核。用于重构BLAST内核的第二动机是生成域不可知(例如非生物)字符串分析平台。
用于史密斯-沃特曼计算所需的存储器被预先分配一次,并重新用于每个比对。分配的存储器大小是经由对程序的选项确定。这提供了增加的速度并防止了许多基于存储器的错误和问题。
在BLAST的标准版本中,大序列没有被很好的处理-它们本质上不常见,但在二进制文件分析中很常见。大的序列基于可用存储器的数量被分割,并以片被处理。MADBlast完成即使在它们已经被分割时也能正确输出比对所需的工作。
如上所述,BLAST基于生物学,因此仅允许20个“字母”(氨基酸)。这个数字针对二进制文件分析是过于约束的,所以MADBlast可以采用任意的字母表。在一些实施例中,允许任何可打印的ASCII字符(用作为输入文件一部分的>和#除外)。算法和启发式已被修改以考虑任意的字母表。
字母表的背景频率在评分矩阵中被指定,其通常被硬编码到BLAST实现中的。MADBlast允许基于所选字母表的新评分矩阵的即插即用。还存在可被配置并且不再被硬编码的一些其他“调整”变量。
这些改变使能从BLAST算法中移除生物学和化学,并且基于诸如二进制文件代码的蛋白质的域进行比对。
通过MADBlast快速运行大量数据的能力以及理解基于二进制文件的蛋白质的能力是重要的。
MADBlast在集群模式下运行时使用ZeroMQ(REF)用于进程间通信并且使用Slurm库。其内核是BLAST算法(SerialBlast)的单处理器实现(多线程),其能够独立运行。MADBlast不依赖任何外部库。在“集群”模式下,ZeroMQ层直接封装SerialBlast。每个内核接收任务并使用其SerialBlast内核执行比对。
MADBlast是使用主机/工作机/任务概念构建的。每个作业有一个主进程,其他所有内核都是工作进程。任务由主机分发给工作机内核。主机读取查询FASTA文件(要比较的蛋白质集合),并在请求时分发任务。
在启动时,主机打开查询FASTA文件并等待请求。工作机分配足够的存储器来运行本地史密斯-沃特曼计算。一个节点上的每个内核一次分配一个存储器。如果没有足够的存储器剩余,稍后联机的内核将不会分配存储器或运行-因此运行的内核总是保证有足够的存储器来完成它们的BLAST计算。一旦内核分配了它的存储器,它就从主机请求任务-它不必等待剩余的内核获得它们的存储器。预先分配存储器一次避免了持续的分配/销毁呼叫。避免在机器上耗尽存储器,因为吞吐量被降低以保持在存储器限制之内。每个节点都可以分配不同数量的内核/存储器。如果特定群集或作业中的节点具有不同数量的RAM,则不需要计划最低的通用数量。
当数据库(被比较的事物的列表)非常大并且查询非常长时,这种方案遇到了一个问题。所有其他查询完成处理后,长查询将继续在大型数据库中搜索很长时间。例如,在一个案例中,97%的查询在20分钟内完成,但最后3%的查询需要2个多小时。
开发了一个无处不在的解决方案,它将检测问题并在代码中缓解问题。如果工作机内核已经处理了相同的查询超过30秒,它将要求主机帮忙。主机可能会用“不”回答,因为所有的内核仍然很忙,所以任务将继续工作,然后在另一30秒内再次询问是否还没有完成。它将继续这样做,直到获得“是”或完成。当主机有一些可用的资源时,它将分割工作机无法搜索的数据库的剩余部分,并将这些工作分发给空闲的工作机。请求帮助的工作机等待来自具有它们的结果的工作机的答复。然后原来的工作机将结果组合起来并正常完成。MADBlast的缩放性能如图2所图示。
为了确保生物学假设不被强加在非生物学数据集合上,并且为了增强BLAST算法内核的重用,一种没有被称为MADBlast的生物学假设的BLAST实现被开发。下面介绍算法重新设计和伴随它的并行驱动程序。
BLAST支持许多不同的运行模式(例如DNA与DNA比较以及蛋白质与蛋白质的比较)。但是为了分析可执行的二进制文件的目的,唯一需要的功能是比较蛋白质序列的能力-blastp操作模式。几个代码特征对于这个重构的BLAST实现是重要的:
·存储器针对动态编程计算(密钥比对算法)预先被分配一次,并针对每次比对重用。
·大型序列基于可用存储器的数量被分割,并以分片被处理并根据需要被重新组合。
·支持高达大约80个字符的任意字母表,使用标准的ASCII字符,具有由文件格式限制引起的一些限制。
·在运行时用户特定的评分矩阵被选择,以及一些其他“调整”变量,这些变量现在是可容易配置的,不再被硬编码。
进行串行BLAST并行处理
使能本文所描述的分析的MADBlast的关键特性是使用ZeroMQ的并行化。这允许使用群集快速分析大的二进制文件语料库。应当注意,这只在执行初始相似性评分生成时是重要的。在正常操作期间,单个内核足以将未知的二进制文件与已知的二进制文件进行相比较。
数据
这个二进制文件相似性方法的示例应用程序中使用的二进制文件来自西北太平洋国家实验室分子科学计算设施,一个专注于环境和分子科学计算的生产计算HPC中心。该中心支持开发和运行各种计算化学和其他代码的许多用户。为了模拟白名单应用,针对该系统编译的可执行二进制文件的样本被获得并被分析以使用所描述的两种方法来量化已知为相似的二进制文件被发现相似的程度。这个二进制文件的集合有5个不同的计算化学代码,每个代码都有不同数量的变体,以及生物信息学应用程序的一个实例。最大的家族是计算化学包,阿姆斯特丹密度泛函(ADF),有22个不同版本的系统。ADF被用作本研究中感兴趣的家族,并将其他代码视为“外群组(“out group”)”,诸如Amber、CP2K、VASP、Lammps和ScalaBLAST。
表1包含每个家族的反汇编时间和家族数量。
表1.代码种类反汇编时间
反汇编之后,代码语料库中存在被表示为不同的生物序列的520,060个功能块。
对于阶段I,MADBlast被使用以将该列表中的每个序列与列表中的每个其他序列进行比较。这产生了具有序列记录的BLAST输出文件,其与来自具有与来自所有其他二进制文件的所有功能的每个二进制文件个体的每个功能块显著比对。
这些评分被用于计算所有的二进制文件对之间的相似性,如下所述。使用相似性评分来评估家族(或子家族)的每个成员正确标识家族(或子家族)的其他成员的能力。这些评分也被用在使用具有欧几里得距离的分级集群工具WEKA的家族树分析中。
对于阶段II分析,序列之间的正向“命中”的两个不同定义被使用。不太严格的定义是当序列共享至少10个字符并具有至少50%的相同性(Len 10,50%)的对比时。更严格的定义是当一对具有长度为50且具有80%相同性或更好(Len 50,80%)的BLAST比对时。由于BLAST掩盖了低复杂度的序列,许多功能甚至不匹配它们自己。这被用作用于消除表现出低复杂度的序列的功能过滤器。表2包含使用各种pre-BLAST长度过滤器(#Seq.)的保留在该数据集合中的序列的数目,展现足够复杂性以被比对的数目(#Cplx),以及在更少或更严格的比对水平具有任意比对的序列的数目。
表2.来自不同长度序列的比对
评估统计性能
如本文所述,针对二进制文件个体之间的相似性的程度的本文报道的结果是分数,其中分母是具有特定严格性水平的任何比对的给定查询二进制文件的序列的数目。每个相似性的分子是查询二进制文件中、与给定严格级别的目标二进制文件中的任何函数相匹配的序列的数量。
该方法的统计性能使用受试者工作特征(Receiver Operator Characteristic(ROC))在所有二进制文件对之间的排序的百分比相似性评分上被计算。这等同于使用家族的单个成员作为用于识别整个家族的分类器,并且如果查询以及所有其他家族成员比所有非家族成员具有更高的百分比相似性,则ROC是完美的(例如,具有1.0的曲线下面积(AUC))。由于ROC只依赖测试主题的相对排名,因此阈值评分也会被报告,其是正确标识真正家族成员90%所需的百分比相似性评分。理想地,这将接近100%,因此严格的截断可以被用于标识给定系统中的其他家族成员,但不完全是100%,因为家族成员之间的不同是被预期的。
使用每个二进制文件作为分类器,ROC(其是真正的正值与假负值的图因为相似性截断值从1到0的变化)通过相对于测试集合中的所有二进制文件对该二进制文件的相似性评分进行排序而被计算。ROC曲线下的面积用作统计性能的度量,其中1.0是完美的评分。通过使用每个二进制文件的排序的相似性列表和定位至少90%的真正正值已经被标识的的相似性值来计算正确标识90%的家族真实成员(T90)所需的相似性阈值。由于ADF是最大的代码家族,具有22个不同的成员,所以ADF被视为正值组,所有非ADF实例被视为负值组。
使用单因素方差分析(ANOVA)测试特征向量和基于生物的技术的AUC和T90结果的统计学显著性,以标识哪些家族和子家族具有统计学性能差异。对于通过ANOVA确定具有统计学显著性差异的家族或子家族,使用Tukey的诚实显著性差异(HSD)方法来标识哪些技术对产生统计学显著性差异。对于ANOVA和Tukey的HSD测试两者,使用0.05的显著性值。
结果
对MADBlast输出应用层次集群表明,在ADF个体的3个子组中存在强烈的家族相似性。图3图示了以灰色或黑色的具有所有ADF家族成员的家族树和以白色的所有非ADF个体的结果。以黑色表示的家族(以后被任意标识为家族1)有10名成员,几乎是所有ADF个体的一半。以深灰色(家族2)表示的家族有8名成员。剩余的ADF成员以浅灰色显示。黑色和深灰色是强子家族,每个仅有ADF实例(ADF家族2和ADF家族3,分别地)。浅灰色是离群值((outlier))ADF实例,而白色是非ADF代码。
该分析表明,使用该分析一些ADF个体之间存在很强的家族相似性,但是显著差异存在于一些子家族之间。
接下来,相对于完整的ADF家族以及在子家族1+2的组合内和针对子家族2,计算由每个ADF成员产生的ROC曲线的AUC。针对每个ROC曲线的这些AUC被呈现在表3中。即使当来自不同子家族的所有ADF成员被组合,使用该家族的任何成员来标识所有其他成员的平均AUC高于0.9,不管是否使用严格比对(10/50/80)或不太严格的比对标准(10/50/80)。但是将这个ADF个体不同集合处理为家族需要将被用在平均值上的44%到35%的非常自由的相似性阈值(取决于比对严格度)以正确地标识90%的真实正值。理想地,这将尽可能接近100%,以防止无关的相似性被接受,但不完全是100%,使得可以容忍修改。相比之下,通过组合ADF家族1和2并且排除其他ADF成员,使用根据图2建议的子家族结构来调整ADF家族成员的标识保持AUC评分并且将两个比对制度的阈值显著提高至53%或47%。最后,将ADF分类限于仅子家族2,AUC指示其他子家族成员近乎完美的标识,并且正确标识90%的真实正值的阈值跳跃以超过70%。
表3.对ADF进行分类的统计性能
第一个ADF组是来自2013年的由软件维护人员标识为“dirac”、“adfnbo”、“sgf”和“runadf”的版本集合。这个组是ADF组离群值(outlier),在图3中以浅灰色显示,并且不具有强的家族子结构。第二组(ADF子组2)有10个成员,每个成员具有来自2014年的一个或两个版本,来自2013年的一个版本(标记为“14”、“14*”或“13”),并代码被标识为“dftb”、“band”、“nao”和“adf”。ADF家族2在图3中用黑色标出。图3以深灰色显示的第三组(ADF子家族3)仅包含来自2014年的ADF版本,每个版本都有“dirac”、“adfnbo”、“sgf”和“runadf”两个不同的实例。基于生物(示出)和基于向量(结果未示出)的家族树产生完全相同的ADF家族2和3,并且相同的ADF离群值,并且所有非ADF代码都在ADF子家族结构之外。根据这个分析,被分组成仅具有2个例外--Vasp 4和5的正确的较小的家族的所有非ADF代码是非常不同的,CP2K 2.4版本是相互相似的,但是与CP2K 2.5非常不同。
通过相对于全部的ADF家族以及在子家族2+3组合内和单独地针对子家族2和3来比较每个ADF成员,ROC曲线的AUC被生成。图4图示了针地这些的AUC。图4示出了用于使用向量方法来和具有不同过滤参数的基于生物信息学方法来对所有ADF实例(ADF全部)、来自两个组合的子家族(ADF f2+3)和个体子家族(ADF f2和ADF f3)的ADF实例进行分类的平均AUC值。向量和一种基于生物的方法之间的统计学显著差异由*指示。向量和两种基于生物的方法之间的统计学显著差异由**指示。
当来自不同子家族的所有ADF成员被组合时(ADF所有结果),使用基于生物信息学的方法,用于使用该家族的任何成员来标识所有其他成员的平均AUC高于0.9,而不管是使用严格比对(Len 50,Id 80)还是较不严格的比对准则(Len 10,Id 50)。相比之下,基于特征向量的方案产生了更差的性能,当与任一种基于生物的严格度分类器相比该更差的性能在统计学上是显著的。为了探索使用家族谱结果改进家族定义的效果,基于生物序列的严格水平和特征向量方案两者的性能在ADF家族2和家族3的组合上进行评估。这是一个更加调整的家族,该家族不包含4个ADF离群值。图4中用于组合ADF家族2和3(ADF f2+3)的结果表明,严格的基于生物学的方案比基于特征向量的方案在达到统计显著性的水平上执行的更好。然而,当分析仅限于ADF家族2(ADF f2)时,特征向量方案在统计学上优于基于生物序列的严格度水平。当分析仅限于ADF家族3(ADF f3)时,所有这三种方法几乎完美地执行,并且在它们之间没有统计学显著差异。
用于家族分类器以标识多种家族成员的另一个措施是T90。一般来说,一种标识具有较高相似程度的大多数家族成员的方法可能无法找到已建立家族的新的远亲。图4图示了两个基于生物序列的严格度水平和基于特征向量的方案的亲属T90值。
图5示出了使用向量方法和具有不同的过滤参数的基于生物信息学的方法对所有ADF实例(ADF all)、来自两个组合子家族(ADF f2+3)和单个子家族(ADF f2和ADF f3)的ADF实例、进行分类的平均T90值。向量和两种基于生物的方法之间的统计学显著差异由**指示。所有三种方法之间的统计学显著性差异由***指示。
当一起标识所有的ADF成员时(全部ADF,其中两种生物序列方法均优于由AUC评估的基于特征向量的方法),特征向量T90在统计学上显著高于两种基于生物序列的方法。通过排除ADF离群值(ADFf2+3)来减少家族的异质性减少了特征向量方案和生物序列方案的T90之间的差异,但差异仍然是统计学显著的。考虑到下一个更为同质的家族(ADF f2和ADFf3),特征向量与基于生物序列的相似性度量之间的T90中的差异进一步减小,但在这两种情况下仍然达到统计学显著性。据解释,这些结果表明,尽管对高度调整的二进制文件子家族,特征向量方法有时可能优于基于生物序列的方法,但基于生物序列的方法通常在标识不同家族的成员方面更灵活。
本文描述了一对用于标识可执行的相似的二进制文件的算法设计,并且在诸如HPC中心或云平台的多用户架构中找到相似的二进制文件的应用中展示了这些方法。一种方法基于反汇编指令的特征向量,另一种方法是基于生物序列的方案。这些方法的可行性已经通过将这些方法应用于标识来自可操作HPC系统的变体的实际软件集合中的计算化学代码以及生物代码的挑战来证明,该HPC系统包括相同家族以及来自其他家族的其他化学二进制文件。
这是与大多数克隆检测方法的一个显著的偏差,因为大部分的语法和结构信息都从原始的二进制文件被故意忽略。相反,克隆检测问题开始回答:“两个二进制文件流之间是否存在比偶然发生的可能性更大的高度保守的模式?”这个问题的答案产生了关于在软件家族和这些家族的签名中可能有意义的共同性的信息。针对二进制文件的序列分析直接适用于这些类型的分析,因为它们是蛋白质系统研究得很好的问题。这是从二进制文件分析到蛋白质序列分析的映射提供价值的地方-基于家族的分析技术和基序发现(家族的单个表示)的能力立即适用作为使用成熟的生物信息学的方案的结果。
本文中的分析显示时,使用基于生物信息学的方法使用已知的二进制文件实例来生成分类器能够可靠地标识二进制文件的许多变体,甚至当这些变体被构建有不同的功能。使用对二进制文件家族的家族树分析给出了对被视为子家族的子组深入了解,当子家族具有不同构成的成员时,获得相似的分类结果。
三个最显著的发现是:1)基于生物信息学的方法在代码家族较大且变体较多时在统计学上优于基于特征向量的方法;2)基于特征向量和基于生物序列的方案两者的相似性度量为示例二进制文件语料库产生了几乎完全相同的家族树;以及3)使用家族树改进家族定义能够提高基于生物序列或基于特征向量的标识方法的性能,在某些情况下可以达到接近完美的统计性能。
对于ADF的示例,在子家族结构先验未知的情况下,基于生物序列的方案在一般情况下在统计学上更好。当这种结构已知时,能够调整一些子家族的性能,可能为基于向量的标识打开大门。然而,因为在大的复杂代码家族的更一般情况下,基于生物序列的方案更加灵活,对于许多其他应用于说,这将是优选的方法。
使用基于生物序列的相似性度量来分析子家族,在ADF二进制文件集合中发现了三个有趣的部分,在二进制文件集合中存在一个ADF孤儿变体。没有落入家族的代码集合被认为是孤儿。在与这个系统上的ADF维护者交谈之后,孤儿被标识为较老的驱动程序代码,其没有出人意料地不同于其他程序代码。子家族构成的其他差异可以通过代码版本中的差异或二进制文件版本的功能来解释。
基于生物序列的方法对家族和子家族的统计性能是识别家族变体的生物相似性算法灵活但准确的说明。所描述的在生产HIPC环境中标识相似二进制文件的应用程序只是如何使用该方法的一个示例。
基于生物序列的方法能够在各种其他应用中使用,包括运行期间的机器利用度量。虽然这可能无法阻止不适当的二进制文件运行,但它应当能够检测到不适当的资源利用。用户可能以不可接受的方式运行可接受的二进制文件,导致整体机器利用率降低或造成其他资源瓶颈。特征化关于硬件利用的软件的行为可能会向所呈现的静态二进制文件提供具有动态分析的相似性的替代方案。
本文描述的方法能够被应用于最适合用于黑名单的应用。例如,相似的技术可能用于标识不应当在系统上使用的二进制文件(或二进制文件片段)。在这种情况下,签名是针对功能块的,而不是针对整个二进制文件的。生物信息学方案特别适用于这个应用程序,因为具有不允许的二进制文件的模型将使得能够标识被使用得、包含不允许的功能的二进制文件,甚至当它被嵌入到更大的看似可接受的应用程序中时。
本文描述了一种新的基于生物序列的方案的实例,该方法产生用于标示相似的可执行二进制文件的可靠的、灵活的匹配方法。该方法在白名单应用程序的一个示例中被证明,该应用用于使用来自具有6种不同科学代码的语料库的实时主题HPC系统的数据来验证可执行二进制文件的身份,在系统上大多数具有多个版本。重点被放在使用其他家族成员作为样本来识别最大家族的成员以评估这种方法在高度复杂、动态的代码上运行的能力。针对这个应用,当两个子家族组合成单个分类器时,针对研究中的二进制文件家族生物序列方法在统计学上优于的较简单的基于特征向量的方法。一个子家族被生物序列和特征向量方法两者很好的识别,并且对于另一个子家族,向量方法优于生物序列方法。在所有情况下,当使用基于特征向量的方法时,用于检测90%家族成员的阈值评分更高(更严格),表明不管错误的正值率如何,生物序列方法都能够使用更放宽相似性阈值来正确地找到真正的正值。使用这种基于生物序列的处理的HPC实现,该家族的结构被迅速了解,以指导标识过程的调整,导致软件家族成员的更准确和敏感的标识。最终,这种技术可以应用于可执行的二进制文件特征和标识中的各种应用。
分析表明,使用这种基于生物信息学的方法以生成使用已知的代码实例的分类器,可以可靠地标识许多代码变体,即使在这些变体是用不同的功能和优化级别构建的时。
该方法对家族和子家族的统计性能说明了识别以家族变体的生物相似性算法的灵活而准确的能力。实际上,多用户中心可以使用这种分析来生成已知可接受的二进制文件的家族树,并且选择每个子家族的单个成员作为样本以分类新的声称的家族成员。这将提供一些可靠性的度量:运行的代码是可以接受的,并且它匹配用户对它是什么代码的断言。
虽然该方法使用可能会花费数小时的反汇编,但是该方法在许多批处理系统中是实用的,因为用户经常等待很长时间用于将被授予的运行时间分配。在不实用的情况下,可以采用更快速的反汇编技术,或者该方法可能与使用更简单但灵活性较低的基于散列的方案的分类阶段(triage phase)相组合。
生物序列方案给出了用于在多用户、多处理器系统上启动之前验证可执行二进制文件的身份的可靠的模糊匹配方法。这已经使用来自使用6个不同科学代码的实时主题HPC系统的数据进行了证明,在系统上大多数都具有多个版本。使用其他家族成员作为样本来对最大家族的成员的识别是一个焦点。该方法也被用于预测这类二进制文件中子家族的关键差异。使用此过程的HPC实现,可以学习这种家族结构来指导标识过程的调整,为多用户系统提供用于验证只有可接受的二进制文件正在运行的快速而强大的工具。
图6图示了根据一些实施例的被配置为实现基于生物序列的二进制文件分析方法的示例性计算设备的框图。计算设备600能够被用于获取、存储、计算、处理、传送和/或显示诸如二进制文件的信息。通常,适合于实现计算设备600的硬件结构包括网络接口602、存储器604、处理器606、I/O设备608、总线610和存储设备612。只要具有足够速度的合适处理器被选择,处理器的选择不是关键的。在一些实施例中,计算设备600包括多个处理器来实现并行处理。存储器604能够是本领域已知的任何常规计算机存储器。存储设备612能够包括硬盘驱动器、CDROM、CDRW、DVD、DVDRW、高清光盘/驱动器、超高清驱动器、闪存卡或任何其他存储设备。计算设备600能够包括一个或多个网络接口602。网络接口的示例包括连接到以太网或其他类型的LAN的网卡。I/O设备608能够包括以下一项或多项:键盘、鼠标、监视器、屏幕、打印机、调制解调器、触摸屏、按钮接口和其他设备。用于执行基于生物序列的二进制文件分析方法的基于生物序列的二进制文件分析应用程序630可能被存储在存储设备612和存储器604中,并且在应用程序通常被处理时被处理。图6中所示的更多或更少的组件能够被包括在计算设备600中。在一些实施例中,包括基于生物序列的二进制文件分析硬件620。虽然图6中的计算设备600包括用于基于生物序列的二进制文件分析方法的应用程序630和硬件620,但是基于生物序列的二进制文件分析方法能够以硬件、固件、软件或其任何组合在计算设备上被实现。例如,在一些实施例中,基于生物序列的二进制文件分析应用程序630被编程在存储器中并且使用处理器来执行。在另一示例中,在一些实施例中,基于生物序列的二进制文件分析硬件620是编程的硬件逻辑,其包括专门设计用于实现基于生物序列的二进制文件分析方法的门。
在一些实施例中,基于生物序列的二进制文件分析应用程序630包括若干应用程序和/或模块。在一些实施例中,模块也包括一个或多个子模块。在一些实施例中,能够包括更少或附加的模块。
合适的计算设备的示例包括高性能计算系统、个人计算机、膝上型计算机、计算机工作站、服务器、大型计算机、手持式计算机、个人数字助理、蜂窝/移动电话、智能电器、游戏机、数码摄像机、数码摄像机、拍照手机、智能手机、便携式音乐播放器、平板计算机、移动设备、视频播放器、视频盘写入器/播放器(例如DVD刻录机/播放器、高清晰度光盘刻录机/播放器、超高清光盘刻录机/播放器)、电视机、增强现实设备、虚拟现实设备、家族娱乐系统、智能珠宝(例如智能手表)或任何其他合适的计算设备。
在一些实施例中,使用联网设备(例如,云计算)来实现基于生物序列的二进制文件分析方法。例如,多台服务器执行基于生物序列的二进制文件分析方法被实现。
图7图示了根据一些实施例的基于生物序列的二进制文件分析方法的流程图。在步骤700中,二进制文件(例如,软件二进制文件、恶意软件二进制文件)被反汇编成汇编指令序列。反汇编可以自动生成用于序列分析的正确格式化的文件。
在步骤702中,汇编指令的序列被规范化。规范化的汇编指令序列包括移除所有参数并将相似的操作码分组地分类,将每个类别映射为单个字母。在一些实施例中,找到相关序列包括将操作码分组成组或箱(bin)。例如,“移动”操作码在一个箱中,所有“跳转”操作码都在另一箱中。操作码的顺序能够被称为“蛋白质”。
在步骤704中,汇编指令的规范化序列被映射成文本序列。
在步骤706中,使用算法(例如,MadBlast)对文本序列执行序列比对以找到相关序列。该算法被一般化为可应用于超过标准的20个氨基酸字符的字符串字母表。字符串字母表包括大约任何可打印的ASCII字符(例如,任何可打印的ASCII字符(除了用作输入文件一部分的>和#)。在一些实施例中,短于第一阈值的文本序列被消除,长于第二阈值的文本的序列被分成固定长度的多个序列;基于可用存储器的量,长于第二阈值的文本的序列被划分;在一些实施例中,序列比对包括比较操作码和基于比较来生成评分,其中评分用于将蛋白质分类为家族或集群。分类地对相似的操作码分组包括生成每个集群的表示,生成每个集群的表示(例如,主题(motif))是通过一致性或隐藏标记。一致性包括比对集群中的项目,并提供比对的部分,并且隐藏标记包括通过找到相同的段和不同的段来生成集群的一个或多个简档。在一些实施例中,一个蛋白质代表恶意软件家族(例如,一百万件恶意软件能够变成一千个家族,因此一千个表示能够用于一百万件恶意软件,这是大量数据减少)。在一些实施例中,每个集群的表示被存储在能够是动态的主题库中,使得它基于新的数据/分析而增长。在一些实施例中,基于新数据/分析重新比对家族和主题。数据(例如表示)能够被存储在诸如便携式存储设备(例如,拇指驱动器)的存储设备上的单个文件或多个文件中。
在一些实施例中,用于史密斯-沃特曼计算的存储器最初被分配一次,并且存储器被重新用于每个比对。分配的存储器大小是可配置的。该算法利用主机/工作机/任务概念,其中任务由主机给予工作机内核。在启动时,主机打开查询文件并等待请求,工作机内核分配存储器以运行本地史密斯-沃特曼计算,并且节点上的每个工作机内核一次分配一个存储器,并且如果没有足够的存储器剩余,则稍后联机的工作机内核不会分配存储器或运行。只要工作机内核分配存储器,工作机内核就会从主机请求任务,而不用等待其他工作机内核分配存储器。每个节点分配可变数量的工作机内核和存储器。如果工作机内核处理长于阈值的查询,则工作机内核请求主机帮助,如果其他工作机内核仍然忙,则主机拒绝,否则主机帮助工作机内核。
在一些实施例中,实现更少或附加的步骤。例如,在一些实施例中,接收文本序列、包含用于文本比对和未比对事件的奖励值的评分矩阵、和评分参数。在一些实施例中,评分矩阵是基于所选字母表的即插即用评分矩阵。在一些实施例中,该方法使用并行处理来实现。在一些实施例中,步骤的顺序被修改。
在一些实施例中,表示能够被用于检测恶意软件。例如,当接收到二进制文件(例如,经由电子邮件)时,二进制文件被反汇编并转换成蛋白质表示,与表示库(例如,主题库)进行比较,如果存在匹配,则确定该二进制文件属于特定的恶意软件家族。在检测到匹配时,能够采取适当的措施,诸如删除二进制文件、隔离二进制文件、发送警报、和/或任何其他动作。基于生物序列的二进制文件分析方法能够捕获零日恶意软件。
在一些实施例中,基于生物序列的二进制文件分析方法被用于实现白名单-被允许在计算机上的项目。该方法分析二进制文件,以确保它们是他们所说的。例如,程序X的版本3是否看起来与版本1和版本2相似,还是看起来像不是计算机上的事物?如果看起来相似,则基于本文所述的分析,程序将被允许运行,但如果它看起来不相似,则能够采取诸如措施阻止程序访问、警告用户或网络管理员的步骤和/或任何其他步骤。
在一些实施例中,服务器日志通过获取净流量(网络之间的业务数据)而被分析,聚集净流量的一些属性并基于净流量信息生成蛋白质来分析。净流量属性的示例包括但不限于谁在与谁交谈、何时进行连接、发送/接收了多少数据、端口的元数据、IP和来自何处、和/或任何其他净流量数据。用户的行为能够被表示(诸如用户搜索合法的网页、发送电子邮件),然后确定用户正在做的事情的熵是否改变,如果是,则认为用户的行为已经改变,并且改变被记录(例如,标志被发送给系统管理员以执行进一步的分析)。
为了利用基于生物序列的二进制文件分析方法,二进制文件数据(例如,二进制文件信息被提供给算法)被分析,其处理信息并将其分类为箱,并生成表示二进制文件数据的蛋白质家族。该蛋白质家族然后能够被实现以与进入的或新的二进制文件信息进行比较,以确定是否允许新的二进制文件信息运行,或者新的二进制文件信息是否是恶意软件,以及是否应采取额外的行动。在一些实施例中,监视/比较过程能够在计算设备的背景下或者在网络级别上实现,使得最终用户在利用计算设备时几乎没有注意到(如果有的话)差异。
在操作中,基于生物序列的二进制文件分析方法使能诸如恶意软件二进制文件或其他软件二进制文件的信息的分析。基于生物序列的二进制文件分析不利用精确的匹配方案,因此能够更好地检测稍微修改的二进制文件。另外,不需要运行恶意软件来执行分析,因此能够安全地实现分析。此外,通过忽略操作数并利用其他改进,基于生物序列的二进制文件分析能够被高效且快速地执行。
已经在并入细节的特定实施例的方面描述了本发明,以促进本发明的构造和操作的原理的理解。本文对具体实施例及其细节的这种引用不旨在限制所附权利要求的范围。对于本领域的技术人员来说显而易见的是,在不脱离由权利要求限定的本发明的精神和范围的情况下,可以在为了说明在选择的实施例中进行其他各种修改。
Claims (33)
1.一种在设备的非暂时性存储器中编程的方法,包括:
a.将软件二进制文件反汇编成汇编指令序列;
b.规范化所述汇编指令序列;
c.将所规范化的所述汇编指令序列映射为文本序列;以及
d.对所述文本序列执行序列比对,以使用算法找到相关子序列。
2.根据权利要求1所述的方法,还包括:接收所述文本序列、包含用于文本比对和未比对事件的奖励值的评分矩阵、以及在所述算法处的评分参数,其中所述评分矩阵是基于所选择的字母表的即插即用评分矩阵。
3.根据权利要求1所述的方法,其中所述算法被一般化为可应用于超过标准20个氨基酸字符的字符串字母表,其中所述字符串字母表包括近似任何可打印的ASCII字符。
4.根据权利要求1所述的方法,其中反汇编被自动化,以生成用于序列分析的、适当地被格式化的文件。
5.根据权利要求1所述的方法,其中规范化所述汇编指令序列包括:移除所有参数并分类地对相似的操作码进行分组,将每个类别映射为单个字母,其中分类地对相似的操作码进行分组包括:生成每个集群的表示。
6.根据权利要求5所述的方法,其中生成所述每个集群的表示是通过一致性或隐藏标记的,其中一致性包括:比对所述集群中的项目并提供比对的分段,并且隐藏标记包括:通过找到相同的分段和不同的分段来生成集群的一个或多个简档。
7.根据权利要求1所述的方法,还包括:消除短于第一阈值的文本序列,并且将长于第二阈值的文本序列分成固定长度的多个序列,其中长于所述第二阈值的所述文本序列是基于可用存储器的数量而被分割的。
8.根据权利要求1所述的方法,还包括:为史密斯-沃特曼计算初始分配一次存储器,并且针对每个比对重新使用所述存储器,其中所分配的所述存储器的大小是可配置的。
9.根据权利要求1所述的方法,其中所述算法利用主机/工作机/任务概念,其中任务由主机被给予工作机内核,其中在启动时,所述主机打开查询文件并等待请求,所述工作机内核分配存储器以运行本地史密斯-沃特曼计算,其中节点上的每个工作机内核一次分配一个存储器,并且如果不存在足够的剩余存储器,则稍后联机的所述工作机内核不分配存储器或运行,进一步地,其中一旦工作机内核分配存储器,所述工作机内核就从所述主机请求任务而不等待其他工作机内核分配存储器。
10.根据权利要求9所述的方法,其中每个节点分配可变数量的工作机内核和存储器。
11.根据权利要求9所述的方法,其中如果工作机内核处理长于阈值的查询,则所述工作机内核请求所述主机帮助,并且如果所述其他工作机内核仍然繁忙,则所述主机拒绝,否则,所述主机帮助所述工作机内核。
12.一种系统,包括:
a.反汇编模块,被配置用于将软件二进制文件代码反汇编成汇编指令序列;
b.规范化模块,被配置用于规范化所述汇编指令序列;
c.映射模块,被配置用于将所规范化的所述汇编指令序列映射为文本序列;以及
d.比对模块,被配置用于对所述文本序列执行序列比对,以使用算法找到相关子序列。
13.根据权利要求12所述的系统,其中所述反汇编模块还被配置用于:接收所述文本序列、包含用于文本比对和未比对事件的奖励值的评分矩阵、以及在所述算法处的评分参数,其中所述评分矩阵是基于所选择的字母表的即插即用评分矩阵。
14.根据权利要求12所述的系统,其中所述算法被一般化为可应用于超过标准20个氨基酸字符的字符串字母表,其中所述字符串字母表包括近似任何可打印的ASCII字符。
15.根据权利要求12所述的系统,其中反汇编被自动化,以生成用于序列分析的、适当地被格式化的文件。
16.根据权利要求12所述的系统,其中规范化所述汇编指令序列包括:移除所有参数并分类地对相似的操作码进行分组,将每个类别映射为单个字母,其中分类地对相似的操作码进行分组包括:生成每个集群的表示。
17.根据权利要求16所述的系统,其中生成所述每个集群的表示是通过一致性或隐藏标记的,其中一致性包括:比对所述集群中的项目并提供比对的分段,并且隐藏标记包括:通过找到相同的分段和不同的分段来生成集群的一个或多个简档。
18.根据权利要求12所述的系统,其中所述规范化模块还被配置用于:消除短于第一阈值的文本序列,并且将长于第二阈值的文本序列分成固定长度的多个序列,其中长于所述第二阈值的所述文本序列是基于可用存储器的数量被分割的。
19.根据权利要求12所述的系统,其中所述比对模块还被配置用于:为史密斯-沃特曼计算初始分配一次存储器,并且针对每个比对重新使用所述存储器,其中所分配的所述存储器的大小是可配置的。
20.根据权利要求12所述的系统,其中所述算法利用主机/工作机/任务概念,其中任务由主机被给予工作机内核,其中在启动时,所述主机打开查询文件并等待请求,所述工作机内核分配存储器运行本地史密斯-沃特曼计算,其中节点上的每个工作机内核一次分配一个存储器,并且如果不存在足够的剩余存储器,则稍后联机的所述工作机内核不分配存储器或运行,进一步地其中一旦工作机内核分配存储器,所述工作机内核就从所述主机请求任务而不等待其他工作机内核分配存储器。
21.根据权利要求20所述的系统,其中每个节点分配可变数量的工作机内核和存储器。
22.根据权利要求20所述的系统,其中如果工作机内核处理长于阈值的查询,则所述工作机内核请求所述主机帮助,并且如果所述其他工作机内核仍然繁忙,则所述主机拒绝,否则,所述主机帮助所述工作机内核。
23.一种装置,包括:
a.非暂时性存储器,用于存储应用,所述应用用于:
i.将软件二进制文件代码反汇编成汇编指令序列;
ii.规范化所述汇编指令序列;
iii.将所规范化的所述汇编指令序列映射为文本序列;以及
iv.对所述文本序列执行序列比对,以使用算法找到相关子序列;
b.处理器,被耦合到所述存储器,所述处理器被配置用于处理所述应用。
24.根据权利要求23所述的装置,其中所述应用还被配置用于:接收所述文本序列、包含用于文本比对和未比对事件的奖励值的评分矩阵、以及在所述算法处的评分参数,其中所述评分矩阵是基于所选择的字母表的即插即用评分矩阵。
25.根据权利要求23所述的装置,其中所述算法被一般化为可应用于超过标准20个氨基酸字符的字符串字母,其中所述字符串字母表包括近似任何可打印的ASCII字符。
26.根据权利要求23所述的装置,其中反汇编被自动化,以生成用于序列分析的、适当地被格式化的文件。
27.根据权利要求23所述的装置,其中规范化所述汇编指令序列包括:移除所有参数并分类地对相似的操作码进行分组,将每个类别映射为单个字母,其中分类地对相似的操作码进行分组包括:生成每个集群的表示。
28.根据权利要求27所述的装置,其中生成所述每个集群的表示是通过一致性或隐藏标记的,其中一致性包括:比对所述集群中的项目并提供比对的分段,并且隐藏标记包括:通过找到相同的分段和不同的分段来生成集群的一个或多个简档。
29.根据权利要求23所述的装置,其中所述应用还被配置用于:消除短于第一阈值的文本序列,并且将长于第二阈值的文本序列分成固定长度的多个序列,其中长于所述第二阈值的所述文本序列是基于可用存储器的数量而被分割的。
30.根据权利要求23所述的装置,其中所述应用还被配置用于:为史密斯-沃特曼计算初始分配一次存储器,并且针对每个比对重新使用所述存储器,其中所分配的所述存储器的大小是可配置的。
31.根据权利要求23所述的装置,其中所述算法利用主机/工作机/任务概念,其中任务由主机被给予工作机内核,其中在启动时,所述主机打开查询文件并等待请求,所述工作机内核分配存储器以运行本地史密斯-沃特曼计算,其中节点上的每个工作机内核一次分配一个存储器,并且如果不存在足够的剩余存储器,则稍后联机的所述工作机内核不分配存储器或运行,进一步地其中一旦工作机内核分配存储器,所述工作机内核就从所述主机请求任务而不等待其他工作机内核分配存储器。
32.根据权利要求31所述的装置,其中每个节点分配可变数量的工作机内核和存储器。
33.根据权利要求31所述的装置,其中如果工作机内核处理长于阈值的查询,则所述工作机内核请求所述主机帮助,并且如果所述其他工作机内核仍然繁忙,则所述主机拒绝,否则,所述主机帮助所述工作机内核。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562149126P | 2015-04-17 | 2015-04-17 | |
US62/149,126 | 2015-04-17 | ||
PCT/US2016/027969 WO2016168753A1 (en) | 2015-04-17 | 2016-04-15 | Biosequence-based approach to analyzing binaries |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107615240A true CN107615240A (zh) | 2018-01-19 |
CN107615240B CN107615240B (zh) | 2021-11-02 |
Family
ID=57126327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680031549.4A Expired - Fee Related CN107615240B (zh) | 2015-04-17 | 2016-04-15 | 用于分析二进制文件的基于生物序列的方案 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10191726B2 (zh) |
EP (1) | EP3283946A4 (zh) |
CN (1) | CN107615240B (zh) |
IL (1) | IL255046A0 (zh) |
WO (1) | WO2016168753A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446554A (zh) * | 2018-03-28 | 2018-08-24 | 腾讯科技(深圳)有限公司 | 可执行文件匹配方法、装置及计算机设备 |
CN112416431A (zh) * | 2020-11-23 | 2021-02-26 | 南京航空航天大学 | 一种基于编码序列表示的源代码片段成对比较方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102006242B1 (ko) * | 2017-09-29 | 2019-08-06 | 주식회사 인사이너리 | 바이너리 파일에 기초하여 오픈소스 소프트웨어 패키지를 식별하는 방법 및 시스템 |
CN107885505B (zh) * | 2017-09-30 | 2021-05-14 | 浙江福山电子科技有限责任公司 | 一种代码定位方法 |
WO2020257973A1 (en) * | 2019-06-24 | 2020-12-30 | Citrix Systems, Inc. | Detecting hard-coded strings in source code |
US10824722B1 (en) * | 2019-10-04 | 2020-11-03 | Intezer Labs, Ltd. | Methods and systems for genetic malware analysis and classification using code reuse patterns |
US11966700B2 (en) * | 2021-03-05 | 2024-04-23 | Microsoft Technology Licensing, Llc | Neural tagger with deep multi-level model |
CN117373538B (zh) * | 2023-12-08 | 2024-03-19 | 山东大学 | 一种基于多线程计算的生物序列比对方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6374242B1 (en) * | 1999-09-29 | 2002-04-16 | Lockheed Martin Corporation | Natural-language information processor with association searches limited within blocks |
US20030054407A1 (en) * | 2001-04-17 | 2003-03-20 | Peizhi Luo | Structure-based construction of human antibody library |
CN101398758A (zh) * | 2008-10-30 | 2009-04-01 | 北京航空航天大学 | 一种代码抄袭的检测方法 |
US20090313271A1 (en) * | 2008-06-16 | 2009-12-17 | Robert Zeidman | Detecting copied computer source code by examining computer object code |
US7814107B1 (en) * | 2007-05-25 | 2010-10-12 | Amazon Technologies, Inc. | Generating similarity scores for matching non-identical data strings |
US20120246654A1 (en) * | 2011-03-24 | 2012-09-27 | International Business Machines Corporation | Constant Time Worker Thread Allocation Via Configuration Caching |
US8494985B1 (en) * | 2011-05-17 | 2013-07-23 | Narus, Inc. | System and method for using network application signatures based on modified term transition state machine |
US8881122B1 (en) * | 2011-12-09 | 2014-11-04 | Google Inc. | Predicate matching library for complex program analysis |
US20140366003A1 (en) * | 2013-06-07 | 2014-12-11 | Daniel James Stoker | System and Method for Identifying and Valuing Software |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6839393B1 (en) * | 1999-07-14 | 2005-01-04 | Rambus Inc. | Apparatus and method for controlling a master/slave system via master device synchronization |
US6748584B1 (en) * | 1999-12-29 | 2004-06-08 | Veritas Operating Corporation | Method for determining the degree to which changed code has been exercised |
WO2001097076A2 (en) * | 2000-06-14 | 2001-12-20 | Parabon Computation, Inc. | Apparatus and method for providing sequence database comparison |
US20040034846A1 (en) * | 2002-06-12 | 2004-02-19 | I-Logix Inc. | System, method and medium for providing dynamic model-code associativity |
US7698558B2 (en) * | 2003-11-21 | 2010-04-13 | Rpost International Limited | System for, and method of, providing the transmission, receipt and content of an e-mail message |
US20080077570A1 (en) * | 2004-10-25 | 2008-03-27 | Infovell, Inc. | Full Text Query and Search Systems and Method of Use |
US8347214B2 (en) * | 2005-03-09 | 2013-01-01 | Cisco Technology, Inc. | Automated interface-specification generation for enterprise architectures |
US8056048B2 (en) * | 2005-08-04 | 2011-11-08 | International Business Machines Corporation | Pattern implementation technique |
US8869109B2 (en) * | 2008-03-17 | 2014-10-21 | Microsoft Corporation | Disassembling an executable binary |
US8621626B2 (en) * | 2009-05-01 | 2013-12-31 | Mcafee, Inc. | Detection of code execution exploits |
EP2747078A1 (en) | 2012-12-18 | 2014-06-25 | Telefónica, S.A. | Method and system for improved pattern matching |
-
2016
- 2016-04-15 CN CN201680031549.4A patent/CN107615240B/zh not_active Expired - Fee Related
- 2016-04-15 WO PCT/US2016/027969 patent/WO2016168753A1/en active Application Filing
- 2016-04-15 EP EP16780940.9A patent/EP3283946A4/en not_active Withdrawn
- 2016-04-15 US US15/130,837 patent/US10191726B2/en active Active
-
2017
- 2017-10-16 IL IL255046A patent/IL255046A0/en unknown
-
2018
- 2018-12-24 US US16/231,711 patent/US10545746B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6374242B1 (en) * | 1999-09-29 | 2002-04-16 | Lockheed Martin Corporation | Natural-language information processor with association searches limited within blocks |
US20030054407A1 (en) * | 2001-04-17 | 2003-03-20 | Peizhi Luo | Structure-based construction of human antibody library |
US7814107B1 (en) * | 2007-05-25 | 2010-10-12 | Amazon Technologies, Inc. | Generating similarity scores for matching non-identical data strings |
US20090313271A1 (en) * | 2008-06-16 | 2009-12-17 | Robert Zeidman | Detecting copied computer source code by examining computer object code |
CN101398758A (zh) * | 2008-10-30 | 2009-04-01 | 北京航空航天大学 | 一种代码抄袭的检测方法 |
US20120246654A1 (en) * | 2011-03-24 | 2012-09-27 | International Business Machines Corporation | Constant Time Worker Thread Allocation Via Configuration Caching |
US8494985B1 (en) * | 2011-05-17 | 2013-07-23 | Narus, Inc. | System and method for using network application signatures based on modified term transition state machine |
US8881122B1 (en) * | 2011-12-09 | 2014-11-04 | Google Inc. | Predicate matching library for complex program analysis |
US20140366003A1 (en) * | 2013-06-07 | 2014-12-11 | Daniel James Stoker | System and Method for Identifying and Valuing Software |
Non-Patent Citations (1)
Title |
---|
SILVIO CESARE: "Software Similarity and Classification", 《HTTP://DRO.DEAKIN.EDU.AU/ESERV/DU:30063491/CESARE-SOFTWARESIMILARITY-2013A.PDF》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446554A (zh) * | 2018-03-28 | 2018-08-24 | 腾讯科技(深圳)有限公司 | 可执行文件匹配方法、装置及计算机设备 |
CN112416431A (zh) * | 2020-11-23 | 2021-02-26 | 南京航空航天大学 | 一种基于编码序列表示的源代码片段成对比较方法 |
CN112416431B (zh) * | 2020-11-23 | 2023-02-14 | 南京航空航天大学 | 一种基于编码序列表示的源代码片段成对比较方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2016168753A1 (en) | 2016-10-20 |
EP3283946A4 (en) | 2018-09-26 |
EP3283946A1 (en) | 2018-02-21 |
US10545746B2 (en) | 2020-01-28 |
CN107615240B (zh) | 2021-11-02 |
IL255046A0 (en) | 2017-12-31 |
US20190121627A1 (en) | 2019-04-25 |
US20170344352A1 (en) | 2017-11-30 |
US10191726B2 (en) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Enhancing state-of-the-art classifiers with api semantics to detect evolved android malware | |
CN107615240A (zh) | 用于分析二进制文件的基于生物序列的方案 | |
Feng et al. | Scalable graph-based bug search for firmware images | |
US9237161B2 (en) | Malware detection and identification | |
US20190199736A1 (en) | Cyber vaccine and predictive-malware-defense methods and systems | |
WO2021096649A1 (en) | Detecting unknown malicious content in computer systems | |
US11509667B2 (en) | Predictive internet resource reputation assessment | |
Palahan et al. | Extraction of statistically significant malware behaviors | |
US11106801B1 (en) | Utilizing orchestration and augmented vulnerability triage for software security testing | |
Kostakis | Classy: fast clustering streams of call-graphs | |
Kakisim et al. | Sequential opcode embedding-based malware detection method | |
Xue et al. | Homology analysis of malware based on ensemble learning and multifeatures | |
WO2023177442A1 (en) | Data traffic characterization prioritization | |
Pirch et al. | Tagvet: Vetting malware tags using explainable machine learning | |
US20200381084A1 (en) | Identifying salient features for instances of data | |
Naeem et al. | Digital forensics for malware classification: An approach for binary code to pixel vector transition | |
TW202240453A (zh) | 學習惡意行為與惡意程式的執行序列之關聯性的方法與計算機與用於實作類神經網路的方法 | |
US11836251B2 (en) | Malware detection using a machine learning model | |
Reddy et al. | Network attack detection and classification using ann algorithm | |
US8402545B1 (en) | Systems and methods for identifying unique malware variants | |
Peng et al. | ACTS: extracting android app topological signature through graphlet sampling | |
Sarkar et al. | Trapdoor: Repurposing backdoors to detect dataset bias in machine learning-based genomic analysis | |
Rossel et al. | Unsupervised biodiversity estimation using proteomic fingerprints from MALDI‐TOF MS data | |
Li et al. | Detecting low rating android apps before they have reached the market | |
US20240045956A1 (en) | Malicious source code detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20211102 |
|
CF01 | Termination of patent right due to non-payment of annual fee |