CN116149669B - 一种基于二进制文件的软件成分分析方法、装置以及介质 - Google Patents

一种基于二进制文件的软件成分分析方法、装置以及介质 Download PDF

Info

Publication number
CN116149669B
CN116149669B CN202310413955.9A CN202310413955A CN116149669B CN 116149669 B CN116149669 B CN 116149669B CN 202310413955 A CN202310413955 A CN 202310413955A CN 116149669 B CN116149669 B CN 116149669B
Authority
CN
China
Prior art keywords
binary file
feature
matching
features
binary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310413955.9A
Other languages
English (en)
Other versions
CN116149669A (zh
Inventor
张宇航
范渊
王欣
阮文波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN202310413955.9A priority Critical patent/CN116149669B/zh
Publication of CN116149669A publication Critical patent/CN116149669A/zh
Application granted granted Critical
Publication of CN116149669B publication Critical patent/CN116149669B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种基于二进制文件的软件成分分析方法、装置以及介质,应用于软件成分分析领域。该方法在获取待测二进制文件之后,提取待测二进制文件的特征。然后使用预先建立的特征数据库对提取的特征进行匹配得到匹配结果,最终根据匹配结果对待测二进制文件进行分析以得到分析结果。其中,特征数据库由第三方组件对应的二进制样本文件建立,特征数据库的数据结构为字典树,字典树中的一条路径表征第三方组件中的一个特征。本申请建立的特征数据库以字典树为结构,由于字典树自身结构的限制,建立时必须将字符串进行分词等操作,提取出需要的特征后再构建字典树,在构建过程中会剔除掉无用的冗余信息,从而提升软件成分分析的效率和效果。

Description

一种基于二进制文件的软件成分分析方法、装置以及介质
技术领域
本申请涉及软件成分分析领域,特别是涉及一种基于二进制文件的软件成分分析方法、装置以及介质。
背景技术
软件成分分析(Software Composition Analysis,SCA)是一种对软件的组成部分进行识别、分析和追踪的技术,用于分析开发人员使用的各种源码、模块、框架和库,以识别和清点软件的组件及其构成和依赖关系,并识别已知的安全漏洞或者潜在的许可证授权问题,把这些风险排查在应用系统投产之前,也适用于应用系统运行中的诊断分析。目前在基于二进制文件的软件成分分析领域最常见的技术框架是基于特征的相似度匹配,将整个字符串作为一个完整的特征与样本文件进行匹配,最终通过评估待测二进制文件与特征数据库中各样本特征的相似度进行第三方组件识别。
但在实际应用中,字符串中包括可变的部分(例如日期,文件路径),如果使用传统的方案将整个字符串看作一个完整的特征与样本文件进行匹配,这些无用的信息可能会导致匹配失败,从而导致软件成分分析的效率低以及效果不好。
由此可见,如何提高二进制文件的软件成分分析的效率与效果,是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种基于二进制文件的软件成分分析方法、装置以及介质,以提高二进制文件的软件成分分析的效率与效果。
为解决上述技术问题,本申请提供一种基于二进制文件的软件成分分析方法,包括:
获取待测二进制文件;
提取所述待测二进制文件的特征;
使用预先建立的特征数据库对提取的所述待测二进制文件的所述特征进行匹配得到匹配结果;其中,所述特征数据库由第三方组件对应的二进制样本文件建立,所述特征数据库的数据结构为字典树,所述字典树中的一条路径表征所述第三方组件中的一个所述特征;
根据所述匹配结果对所述待测二进制文件进行分析以得到分析结果;其中,所述分析结果表征所述待测二进制文件与所述第三方组件的对应关系。
优选地,提取所述待测二进制文件以及所述二进制样本文件的所述特征包括:
对二进制文件进行字符串提取;
对提取的所述字符串进行反修饰处理;
以字符串为单位对各所述字符串进行筛选以剔除不符合第一预设要求的所述字符串;
将所述字符串进行分词;
以单词为单位对分词后的各所述字符串进行筛选以剔除或替换不符合第二预设要求的所述单词;
将得到的单词序列作为提取的所述特征。
优选地,提取所述二进制样本文件的所述特征之后,还包括:
对提取的所述特征进行分组得到多个特征分组;其中,所述特征分组的所述特征包含于同一个所述第三方组件中;
建立所述特征数据库包括:
使用所述特征分组建立所述特征数据库。
优选地,所述使用预先建立的特征数据库对提取的所述待测二进制文件的所述特征进行匹配得到匹配结果包括:
使用预先建立的所述特征数据库对提取的所述待测二进制文件的所述特征进行匹配;
若提取的所述待测二进制文件的所述特征与所述字典树中的所述路径表征的所述特征匹配成功,则将对应的所述特征分组增加计数;
所述根据所述匹配结果对所述待测二进制文件进行分析以得到分析结果包括:
根据各所述特征分组的计数结果得到所述待测二进制文件的所述特征与所述特征分组的所述特征之间的匹配分数;
根据所述匹配分数得到所述分析结果。
优选地,所述对提取的所述特征进行分组得到多个特征分组之后,还包括:
根据各所述特征分组内的特征集合的相似度对所述特征分组进行迭代优化。
优选地,所述根据各所述特征分组的计数结果得到所述待测二进制文件的所述特征与所述特征分组的所述特征之间的匹配分数包括:
确定所述待测二进制文件与所述特征分组之间的匹配度以及对应的所述特征分组的可靠度;
根据所述匹配度和所述可靠度得到所述匹配分数。
优选地,所述第一预设要求包括所述字符串无意义或有效信息量少于阈值;所述第二预设要求包括所述单词无意义或不稳定存在。
为解决上述技术问题,本申请还提供一种基于二进制文件的软件成分分析装置,包括:
获取模块,用于获取待测二进制文件;
提取模块,用于提取所述待测二进制文件的特征;
匹配模块,用于使用预先建立的特征数据库对提取的所述待测二进制文件的所述特征进行匹配得到匹配结果;其中,所述特征数据库由第三方组件对应的二进制样本文件建立,所述特征数据库的数据结构为字典树,所述字典树中的一条路径表征所述第三方组件中的一个所述特征;
分析模块,用于根据所述匹配结果对所述待测二进制文件进行分析以得到分析结果;其中,所述分析结果表征所述待测二进制文件与所述第三方组件的对应关系。
为解决上述技术问题,本申请还提供一种基于二进制文件的软件成分分析装置,包括:存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现上述基于二进制文件的软件成分分析方法的步骤。
为解决上述技术问题,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于二进制文件的软件成分分析方法的步骤。
本申请所提供的一种基于二进制文件的软件成分分析方法,在获取待测二进制文件之后,提取待测二进制文件的特征。然后就可使用预先建立的特征数据库对提取的特征进行匹配得到匹配结果,最终根据匹配结果对待测二进制文件进行分析以得到分析结果。其中,特征数据库由第三方组件对应的二进制样本文件建立,特征数据库的数据结构为字典树,字典树中的一条路径表征第三方组件中的一个特征。最终得到的分析结果表征待测二进制文件与第三方组件的对应关系,即表征了待测二进制文件中存在特征数据库中哪些第三方组件的内容。与当前将整个字符串进行匹配的方案相比,本申请建立的特征数据库以字典树为结构,由于字典树自身结构的限制,并不能将整个字符串作为一个特征构建字典树,字典树的建立必须将字符串进行分词等操作,提取出需要的特征后再构建字典树,在构建过程中会剔除掉无用的冗余信息,从而提升软件成分分析的效率和效果。
本申请还提供了一种基于二进制文件的软件成分分析装置和计算机可读存储介质,与上述方法对应,故具有与上述方法相同的有益效果。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于二进制文件的软件成分分析方法的流程图;
图2为本申请实施例提供的一种特征提取模块、特征分组模块以及特征评估模块的各操作步骤的流程示意图;
图3为本申请实施例提供的分组前后的特征集合示意图;
图4为本申请实施例提供的一种特征数据库的结构示意图;
图5为本申请实施例提供的基于二进制文件的软件成分分析装置的结构图;
图6为本申请另一实施例提供的基于二进制文件的软件成分分析装置的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种基于二进制文件的软件成分分析方法、装置以及介质,以提高二进制文件的软件成分分析的效率与效果。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
随着计算机技术的不断发展以及软件工程理论的不断完善,现代的计算机软件在功能、易用性和灵活性等方面取得了长足的进步,但与之俱来的便是开发软件时在需求、设计、实现与维护等各方面复杂度的日益增加。开源运动的兴起和快速发展使得在互联网上免费提供可供使用的第三方组件数量急速增长。这些组件可以通过复制源代码及静态或动态链接的方式在软件开发中被重复利用。通过重用第三方组件来构建通用功能和框架,软件开发人员可以专注于自己的独特功能,以此降低软件实现的复杂度,缩短开发周期并节省开发成本。在开源软件日益盛行的今天,重用第三方组件在软件开发中得到了普遍的实践,重用开源组件所带来的潜在安全威胁(如违反开源许可证或组件引入的安全缺陷)也因此成为企业软件开发中无法回避的话题。与此同时,应用交付的规模和频率正在快速增长,软件成分分析技术对于安全合规、风险管控和安全态势感知都是必不可少的。对于使用具有完备的第三方组件依赖管理模型的编程语言(如Python、Java和Node.js等)开发的软件,或可以获得源代码的软件(常见于开源软件或企业内部分析),通过识别、提取并分析第三方组件的元数据(如Java语言软件中可能包含的pom.xml文件)或进行源代码相似度分析,进行软件成分分析是相对容易的,当前也存在若干成熟的商业软件成分分析方案。然而,商业软件常见的闭源且只提供二进制文件的分发方式使得基于源代码的软件成分分析难以进行,基于二进制文件的软件成分分析因此成为该领域的热门研究方向。本申请提供了一种基于二进制文件字符串特征分词的软件成分分析方法,以解决目前各方案存在的问题。
图1为本申请实施例提供的一种基于二进制文件的软件成分分析方法的流程图;如图1所示,该方法包括如下步骤:
S10:获取待测二进制文件。
S11:提取待测二进制文件的特征。
S12:使用预先建立的特征数据库对提取的待测二进制文件的特征进行匹配得到匹配结果。
其中,特征数据库由第三方组件对应的二进制样本文件建立,特征数据库的数据结构为字典树,字典树中的一条路径表征第三方组件中的一个特征。
S13:根据匹配结果对待测二进制文件进行分析以得到分析结果。
其中,分析结果表征待测二进制文件与第三方组件的对应关系。本申请并不限定获取待测二进制文件的方式以及提取待测二进制文件的特征的方式,待测二进制文件即需要进行软件成分分析的二进制文件。上述步骤并不对本申请的实际方案造成限定,这里提供一种具体的实施方式,图2为本申请实施例提供的一种特征提取模块、特征分组模块以及特征评估模块的各操作步骤的流程示意图;如图2所示,该流程包括如下步骤:S20:输入二进制文件。S21:特征提取。S22:判断输入类型;若输入为二进制样本文件,则进入步骤S23进行分组以得到多个特征分组,从而建立特征数据库;若为待测二进制文件,则进入步骤S24进行评估。S23:特征分组。S24:特征评估。S25:分析结果。本示例提供的具体的技术方案按操作流程可分为三个模块,即特征提取模块、特征分组模块以及特征评估模块。
特征提取模块的作用是从输入二进制样本文件或待测二进制文件中提取字符串信息,并进行一系列处理与筛选以尽可能剔除无效信息与不稳定信息,最终得到以单个二进制文件为单位的特征集合。其中,二进制样本文件用于提取特征以建立特征分组,从而根据特征分组得到特征数据库,可预先收集大量第三方组件(即二进制样本文件),使用某种方式分析、提取其中可以用于识别第三方组件的信息(即特征)并整合为特征数据库。待测二进制文件则为实际需要进行软件成分分析的文件。特征提取模块由五个步骤构成:
字符串提取:基于现有二进制解析工具进行,通过分析输入二进制的文件格式与结构(常见格式如PE、ELF、Mach-O等,静态库等多二进制文件应被拆分单独分析),从中提取包含字符串信息的数据段和包含符号信息的导入与导出符号表。在这些二进制文件数据中通过线性搜索方式查找所有仅由ASCII可读字符构成的串,作为从该二进制文件中提取得到的待筛选的字符串集合。同时,若输入为二进制样本库,在该步骤可以根据二进制文件所在的文件夹或软件包生成初始特征分组信息(见后文特征分组模块)。
符号反修饰:对每个提取得到的字符串使用常见编译器或编程语言修饰规则(如MSVC、GCC和JVM)的反修饰算法进行处理,目的是尽可能使字符串接近源代码中的原始字符串,简化后续筛选和分词操作。
初筛:以字符串为单位进行筛选,剔除无意义或有效信息过少的字符串。实际应用的筛选规则为一系列启发式规则,满足下列规则之一的字符串将被剔除:1、重复的字符串;2、过短(如小于12字符)或过长(如大于128字符)的提取自数据段的字符串;3、文件格式、编程语言或编译器固有的字符串(具体列表通过启发式总结得到)。此后,对于提取自符号表的字符串,需按照常见编程语言的语法规则提取并保留符号名称的基本部分(如函数的基本函数名或变量的变量名,保留可能的命名空间信息),剔除其他信息。若字符串包含重复的特殊字符序列(常见于内嵌源代码注释或日志信息包含的文件路径,如“/*********”或“../../../../”),序列的重复部分亦应被去除。
分词:将字符串依次按下列启发式规则分割为若干单词:1、由若干大写字母开头与若干小写字母或数字构成的子串,视为一个单词;2、由若干小写字母、数字或英文句号(“.”)构成的子串,视为一个单词;3、由若干特殊字符构成的长度不小于2的子串,视为一个单词;4、剔除剩余的所有字符。然后将提取得到的单词按其在原字符串中出现的顺序排序为单词序列。
复筛:对每个字符串以单词为单位进行筛选,剔除或替换无意义或不稳定存在的单词。实际应用的启发式规则如下:1、过短(如小于3字符)的由字母、数字或英文句号构成的单词应被剔除;2、过长(如大于24字符)的单词应被剔除;3、若单词仅由十进制或十六进制数字(偶数个数字或字母“A”至“F”,可能以“0x”开头,不区分大小写)构成,将该单词替换为代表数字的固定标记;4、若单词满足版本号格式(如“X.X”、“X.X.X”、“vX.X”或“vX.X.X”等,其中“X”为至少一个数字),将该单词替换为代表版本号的固定标记。此后,若筛选后的字符串与其他字符串重复、包含的单词数过少(如小于3单词)或仅包含由特殊字符构成的单词,则认为该字符串有效信息过少,应剔除该字符串。得到的所有单词序列共同构成特征集合。
本申请实施例提供的一种二进制文件数据段部分和符号表部分的特征提取流程,二进制文件数据段部分和二进制文件符号表部分,均经过字符串提取、符号反修饰、初筛、分词、复筛等步骤。
需要注意的是,实际应用时,二进制样本文件和待测二进制文件在完成特征提取之后,需要进行不同的步骤。在完成二进制样本文件的特征提取之后,需要进行特征分组步骤,得到特征分组之后构建特征数据库。特征分组模块由分组和分组优化两个步骤构成。该模块的作用是利用特征集合之外的有效信息(如与二进制文件样本库一同提供的二进制文件与第三方组件间的对应关系,或前文提到的字符串提取步骤生成的文件夹与软件包包含信息),结合对各二进制文件间特征集合相似度的评估,将所有特征集合整合为“第三方组件-特征分组-特征集合”的两级对应关系,降低第三方组件内各二进制文件间的重复特征(常见情况如共用代码或静态链接的其他第三方组件)对评估结果可靠性的影响。
分组步骤使用上述特征集合之外的有效信息,以及可能存在的此前分组优化的结果(统称“分组信息”),为各特征集合标记分组。过程中使用的启发式规则如下:1、合并提取自同一文件(如多二进制文件的情况)的所有特征集合;2、若存在此前分组优化的结果,按其中信息标记各集合;例如,若二进制文件输入来自已知软件包,按软件包名标记各集合。若二进制文件输入存在文件夹结构,按路径标记各集合。或者按二进制文件名的公共最长前缀标记各集合。完成分组后,若存在已知的“第三方组件-二进制文件”对应关系,按前述分组结果生成对应的“第三方组件-特征分组”对应关系。图3为本申请实施例提供的分组前后的特征集合示意图;如图3所示,各特征完成了对应的分组。
分组优化步骤是基于上述的初始分组结果,通过分析评估每个分组内各特征集合的相似度细化分组。优化过程是一个迭代过程,其具体规则如下:1、只对现有分组进行细分而不进行合并,避免生成跨第三方组件的分组;2、对于每个现有分组,从中随机挑选一个特征集合作为新分组的初始集合;3、计算新分组中各特征集合之并集与现有分组内其他所有集合的交并比(Intersection over Union,IoU)值;4、若IoU最大值大于阈值(如0.25,实际应用需根据样本库质量调整),取其对应的特征集合放入新分组;否则对现有分组的优化结束,重复上述规则至无法创建新分组,优化完毕。
由图2可知,分组优化过程输出优化后的分组信息又成为分组步骤的输入之一,构成循环。在实际应用中,特征分组一般进行两次,第一次采用原始信息作为输入以确保分组不会跨越第三方组件边界,第二次采用优化后的分组信息以使特征评估模块生成的特征数据库最优。
在完成待测二进制文件的特征提取之后,用建立的特征数据库进行特征评估,特征评估模块实际实现基于特征的相似度匹配技术框架,即使用特征提取模块和特征分组模块输出的特征集合构建特征数据库,并以此对待测二进制的特征进行评估,生成分析结果。图4为本申请实施例提供的一种特征数据库的结构示意图;如图4所示,本申请实施例提供的技术方案使用一种字典树的变种作为特征数据库的数据结构。与传统字典树相比,这里以特征单词序列中的单词为最小单位,将每个特征抽象为字典树根节点到某一节点(考虑到公共前缀的情况,可能不是叶节点)的路径,并在该节点中存储包含特征的所有特征分组。另有第三方组件的特征数量及到特征分组的对应关系等信息使用简单哈希表存储。使用该特征数据库进行评估时,只需将待测二进制文件中的每个特征视作字典树中的一条路径,若该路径存在则为路径结束节点中存储的所有特征分组计数,即可得到待测二进制文件与每个特征分组匹配特征的数量。
为了从匹配数量这一绝对数值中得到相对分数,同时需要考虑极大或极小规模样本库带来的可能的可靠性影响,本示例通过计算匹配度与可靠度两个指标(实际应用时并不限定使用这两个指标),并同时使用两者得出分析结果。设特征数据库中存在个特征分组,对于其中的特征分组/>,设该分组中特征总数为/>,其中在其他分组中同时存在的特征总数为/>(该值可在构建特征数据库的同时计数得到)。对于某待测二进制文件/>与特征分组/>的匹配,设匹配数量为/>,其中在其他分组中同时存在的特征总数为/>,则:
定义与/>间的匹配度/>与匹配率/>和分组重复率/>正相关、与匹配重复率/>负相关,匹配度的计算公式可如下:
(1)
定义参与匹配的可靠度/>与/>在/>中的排位正相关,与分组重复率负相关,可靠度的计算公式可如下:
(2)
其中函数表示/>在/>中的排位,取值范围为[0,1]。
若最终匹配分数大于阈值(如0.1,实际使用需根据样本库质量与计算匹配度和可靠度的公式调整),则认为包含特征分组/>的第三方组件存在于待测二进制文件中。为特征数据库中每一特征分组/>计算/>并根据阈值做出判断,即可得出待测二进制文件在当前样本库下的分析结果。
为解决当前基于二进制文件的软件成分分析技术方案具有的样本获取难、评估效率低、分析效果差等问题,本申请实施例使用预先建立的特征数据库对提取的特征进行匹配分析,最终得到分析结果,特征数据库的数据结构为字典树,可降低存储与计算成本,提升评估效率和效果。在应用中,还可通过字符串特征提取与分词,筛选二进制文件中不受编译环境、执行环境与源代码版本变化所影响的特征,再通过对特征进行分组合并和分组优化的方式降低组内特征重复率,最终分别评估匹配度和可靠度两个指标,兼顾了样本获取工作量、评估效率和分析结果可靠性。
本申请技术方案的核心在于各模块与步骤组成,各步骤的工作目的与抽象技术方法。本申请技术方案各步骤具体的实现细节包括:a) 初筛、分词、复筛、分组与分组优化等步骤描述中使用的流程与规则。b)特征数据库的数据结构、构建方式与使用方式。c)各评估指标的计算方式及使用评估指标得出分析结果的方式。d) 上述实施例各步骤描述中使用的示例阈值、格式与公式。但是,上述提到的各步骤的实现方案仅仅为本申请的部分实现方式,并不对本申请的其他方案造成限定。其中,初筛、分词、复筛与分组等步骤描述中使用的启发式规则可由任意功能相同或相近的规则替代。分组优化步骤描述中使用的IoU值可由MinHash、SimHash或TF-IDF等任意具有比较集合相似性功能的算法或统计量替代。各步骤描述中使用的示例阈值、格式与公式可由任意功能相同或相近的阈值、格式与公式替代。
本申请实施例所提供的一种基于二进制文件的软件成分分析方法,在获取待测二进制文件之后,提取待测二进制文件的特征。然后就可使用预先建立的特征数据库对提取的特征进行匹配得到匹配结果,最终根据匹配结果对待测二进制文件进行分析以得到分析结果。其中,特征数据库由第三方组件对应的二进制样本文件建立,特征数据库的数据结构为字典树,字典树中的一条路径表征第三方组件中的一个特征。最终得到的分析结果表征待测二进制文件与第三方组件的对应关系,即表征了待测二进制文件中存在特征数据库中哪些第三方组件的内容。与当前将整个字符串进行匹配的方案相比,本申请建立的特征数据库以字典树为结构,由于字典树自身结构的限制,并不能将整个字符串作为一个特征构建字典树,字典树的建立必须将字符串进行分词等操作,提取出需要的特征后再构建字典树,在构建过程中会剔除掉无用的冗余信息,从而提升软件成分分析的效率和效果。
上述实施例并未限定提取特征的方式,为了保证提取的特征满足要求,这里提供一种具体的方案。提取待测二进制文件以及二进制样本文件的特征包括:对二进制文件进行字符串提取后,对提取的字符串进行反修饰处理。以字符串为单位对各字符串进行筛选以剔除不符合第一预设要求的字符串,然后将字符串进行分词,并以单词为单位对分词后的各字符串进行筛选以剔除或替换不符合第二预设要求的单词,最后将得到的单词序列作为提取的特征。本申请实施例提供的技术方案提取构建的特征集合中无用信息更少,且受编译环境、执行环境与源代码版本变化的影响更小,亦即对某一特定第三方组件构建确定的特征集合不要求取得源代码,所需的二进制文件输入更少,降低获取样本的成本与工作量。使用分词加变种字典树的方式构建特征数据库亦可降低存储与计算成本,提升评估效率。其中,第一预设要求可为字符串无意义或有效信息量少于阈值;第二预设要求可为单词无意义或不稳定存在。符号修饰(Symbol Mangling)指编译程序源代码时由编译器按特定规则修改程序符号名称(如变量与函数名称等),以避免符号名称冲突、简化运行时解析操作或使符号名称不包含非法字符的操作。不同编程语言及编译器使用的修饰规则一般不同,常见的修饰规则如C++语言由MSVC和GCC编译器使用的规则,以及Java语言由JVM标准定义的规则。符号修饰的逆过程称为反修饰(Demangling)。本申请实施例提供的方案只从二进制文件数据段及符号表中提取字符串信息,并经过若干次启发式筛选和对不稳定信息的处理,与当前技术方案相比,本申请技术方案提取构建的特征集合中无用信息更少,且受编译环境、执行环境与源代码版本变化的影响更小,亦即对某一特定第三方组件构建确定的特征集合不要求取得源代码,所需的二进制文件输入更少,降低获取样本的成本与工作量。使用分词加变种字典树的方式构建特征数据库亦可降低存储与计算成本,提升评估效率。
在具体实施中,对提取的特征进行分组的步骤不是必要的,但是为了降低第三方组件内各二进制间的重复特征对评估结果可靠性的影响,本申请实施例提供一种具体的方案。对提取二进制样本文件的特征之后,还包括:对提取的特征进行分组得到多个特征分组;其中,特征分组的特征包含于同一个第三方组件中。而对应的,建立特征数据库包括:使用特征分组建立特征数据库。另外,对提取的特征进行分组得到多个特征分组之后,还包括:根据各特征分组内的特征集合的相似度对特征分组进行迭代优化从而得到最佳分组结果,迭代优化的具体步骤在上述实施例中已详细描述,这里不再赘述。
字典树(Trie Tree)又称单词查找树、键树,是一种树形数据结构,是一种哈希树的变种。其将字符串划分为若干最小单位(如单个字符),并以公共前缀的方式构成树形(从根节点到叶结点的路径构成原始字符串)。这样的数据结构可以最大限度地减少无意义的字符串比较从而降低查询时间开销,典型应用为大量字符串的存储、统计与排序。上述实施例中并未限定如何得到分析结果,本申请实施例提供一种具体的方案。使用预先建立的特征数据库对提取的待测二进制文件的特征进行匹配得到匹配结果包括:使用预先建立的特征数据库对提取的待测二进制文件的特征进行匹配,若提取的待测二进制文件的特征与字典树中的路径表征的特征匹配成功,则将对应的特征分组增加计数。对应的,根据匹配结果对待测二进制文件进行分析以得到分析结果包括:根据各特征分组的计数结果得到待测二进制文件的特征与特征分组的特征之间的匹配分数,然后根据匹配分数得到分析结果。另外,根据各特征分组的计数结果得到待测二进制文件的特征与特征分组的特征之间的匹配分数的具体方案可以是确定待测二进制文件与特征分组之间的匹配度以及对应的特征分组的可靠度,然后根据匹配度和可靠度得到匹配分数。上述实施例中已经提到匹配度以及可靠度的具体计算公式以及根据匹配度和可靠度得到匹配分数的公式,这里不再赘述。但需要注意的是,实际应用时并不限定使用匹配度和可靠度这两个参数,可根据实际情况调整,后续的计算公式也需要对应调整。
这里提供一些目前常用的技术方案,对于开源第三方组件,一个直观的技术方案是通过分析第三方组件的源代码提取特征并构建数据库。而对于二进制文件样本库,当前方案着重于对二进制文件中程序代码的静态分析。目前二进制文件特征提取与评估的一个方案是针对二进制文件中的非程序代码部分,即程序符号与字符串等数据进行提取和分析。这里静态分析指程序静态分析,是在不运行程序代码的前提下,通过词法分析、语法分析、控制流和数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性和可维护性等指标的一种代码分析技术。程序静态分析可以帮助软件开发人员和质量保证人员查找代码中存在的结构性错误、安全漏洞等问题,从而保证软件的整体质量,还可以用于帮助软件开发人员快速理解文档残缺的大规模软件系统以及系统业务逻辑抽取等系统文档化等领域。
针对上述几种方案,从实际应用的角度考虑,基于分析第三方组件源代码构建特征数据库的技术方案需要为每一样本爬取完整的源代码仓库,这使得样本的获取成本高、工作量大,影响特征数据库的构建效率。并且,由于无法使用该技术方案提取无法获取源代码(闭源)组件的特征,得到的特征数据库完整性可能受到影响。而基于静态分析二进制文件第三方组件程序代码的技术方案在一定程度上解决了上述问题,但因为从源代码生成二进制文件中程序代码的编译过程是一个多对多过程,程序代码受编译环境、执行环境与源代码版本变化的影响很大。为确保特征数据库的完整性,该技术方案将需要为每一样本提供尽可能多的不同环境下的二进制文件作为输入,从而存在样本获取工作量大且难以为同一样本构建确定的特征集合的问题,进而影响评估效率与效果。另外,当前基于分析字符串等信息的技术方案大多将二进制文件结构与字符串特征视作不透明信息,使用整个文件范围内提取的所有疑似字符串作为后续处理的最小单位,忽视了样本编译环境、执行环境与源代码版本的变化造成的同源字符串变化,同样存在难以构建确定的特征集合的问题,最终导致评估效率低、评估效果差。
此外,上述基于二进制文件的现有技术方案大多忽视了多二进制样本文件与静态编译可能导致的特征集合不完全匹配的情况,在样本数据库规模或单一样本特征集合规模极大或极小的情况下存在评估结果可靠性难以保证的问题。
而因为本申请中的特征提取模块只从二进制文件数据段及符号表中提取字符串信息,并经过若干次启发式筛选和对不稳定信息的处理,与当前技术方案相比,本申请技术方案提取构建的特征集合中无用信息更少,且受编译环境、执行环境与源代码版本变化的影响更小,亦即对某一特定第三方组件构建确定的特征集合不要求取得源代码,所需的二进制文件输入更少,降低获取样本的成本与工作量。使用分词加变种字典树的方式构建特征数据库亦可降低存储与计算成本,提升评估效率。本申请的技术方案在设计之初便考虑到了多二进制样本文件与静态编译可能带来的第三方组件部分包含的情况。特征分组模块利用所有可能用于识别一个第三方组件的信息对特征集合进行合并,并根据组内相似性划分分组,在第三方组件与特征集合间抽象出了特征分组这一匹配基本单位,解决了上述情况可能带来的评估结果可靠性问题。同时考虑匹配度和可靠度两个指标有效降低了第三方组件间的相似性和规模差距对评估结果造成的误差,进一步提升评估结果可靠性。
这里对本申请中提到的各类名词进行解释说明。其中,IoU又称雅卡尔指数(Jaccard Index)或雅卡尔相似系数(Jaccard Similarity Coefficient),是一种用于比较有限样本集之间的相似性与差异性的统计量。给定两个有限集A和B,交并比定义为A和B交集的大小与A和B并集的大小的比值,即:(3)
定义当A=B=∅时,有IoU(A,B)=1。交并比值越大,样本集间相似度越高。类似的比较样本集之间的相似性的统计方法还有MinHash、SimHash与TF-IDF等。
二进制文件即使用二进制形式存储的文件。广义的二进制文件泛指在计算机系统中存储、处理与传输的所有类型的文件,但为了与仅包含人类可读字符的文本文件区分,狭义的二进制文件指部分或完全使用特定的结构以字节为单位存储的文件。本文中使用“二进制”特指包含程序代码的狭义的二进制文件,此类二进制文件一般随执行环境不同具有特定的格式和结构,常见的格式如PE、ELF与Mach-O等。
在上述实施例中,对于基于二进制文件的软件成分分析方法进行了详细描述,本申请还提供基于二进制文件的软件成分分析装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
基于功能模块的角度,本实施例提供一种基于二进制文件的软件成分分析装置,图5为本申请实施例提供的基于二进制文件的软件成分分析装置的结构图,如图5所示,该装置包括:
获取模块10,用于获取待测二进制文件;
提取模块11,用于提取待测二进制文件的特征;
匹配模块12,用于使用预先建立的特征数据库对提取的待测二进制文件的特征进行匹配得到匹配结果;其中,特征数据库由第三方组件对应的二进制样本文件建立,特征数据库的数据结构为字典树,字典树中的一条路径表征第三方组件中的一个特征;
分析模块13,用于根据匹配结果对待测二进制文件进行分析以得到分析结果;其中,分析结果表征待测二进制文件与第三方组件的对应关系。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本实施例提供的基于二进制文件的软件成分分析装置,与上述方法对应,故具有与上述方法相同的有益效果。
基于硬件的角度,本实施例提供了另一种基于二进制文件的软件成分分析装置,图6为本申请另一实施例提供的基于二进制文件的软件成分分析装置的结构图,如图6所示,基于二进制文件的软件成分分析装置包括:存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的基于二进制文件的软件成分分析方法的步骤。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的基于二进制文件的软件成分分析方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于基于二进制文件的软件成分分析方法涉及到的数据等。
在一些实施例中,基于二进制文件的软件成分分析装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图中示出的结构并不构成对基于二进制文件的软件成分分析装置的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的基于二进制文件的软件成分分析装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:基于二进制文件的软件成分分析方法。
本实施例提供的基于二进制文件的软件成分分析装置,与上述方法对应,故具有与上述方法相同的有益效果。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例描述的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例提供的计算机可读存储介质,与上述方法对应,故具有与上述方法相同的有益效果。
以上对本申请所提供的一种基于二进制文件的软件成分分析方法、装置以及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (5)

1.一种基于二进制文件的软件成分分析方法,其特征在于,包括:
获取待测二进制文件;
提取所述待测二进制文件的特征;
使用预先建立的特征数据库对提取的所述待测二进制文件的所述特征进行匹配得到匹配结果;其中,所述特征数据库由第三方组件对应的二进制样本文件建立,所述特征数据库的数据结构为字典树,所述字典树中的一条路径表征所述第三方组件中的一个所述特征;
根据所述匹配结果对所述待测二进制文件进行分析以得到分析结果;其中,所述分析结果表征所述待测二进制文件与所述第三方组件的对应关系;
其中,提取所述待测二进制文件以及所述二进制样本文件的所述特征包括:
对二进制文件进行字符串提取;
对提取的所述字符串进行反修饰处理;
以字符串为单位对各所述字符串进行筛选以剔除不符合第一预设要求的所述字符串;
将所述字符串进行分词;
以单词为单位对分词后的各所述字符串进行筛选以剔除或替换不符合第二预设要求的所述单词;
将得到的单词序列作为提取的所述特征;
其中,在提取所述二进制样本文件的所述特征之后,还包括:
对提取的所述特征进行分组得到多个特征分组,并根据各所述特征分组内的特征集合的相似度对所述特征分组进行迭代优化;其中,所述特征分组的所述特征包含于同一个所述第三方组件中;
对应的,所述使用预先建立的特征数据库对提取的所述待测二进制文件的所述特征进行匹配得到匹配结果具体包括:
使用预先建立的所述特征数据库对提取的所述待测二进制文件的所述特征进行匹配;若提取的所述待测二进制文件的所述特征与所述字典树中的所述路径表征的所述特征匹配成功,则将对应的所述特征分组增加计数;
对应的,所述根据所述匹配结果对所述待测二进制文件进行分析以得到分析结果包括:
根据各所述特征分组的计数结果确定所述待测二进制文件与所述特征分组之间的匹配度以及对应的所述特征分组的可靠度;根据所述匹配度和所述可靠度得到所述待测二进制文件的所述特征与所述特征分组的所述特征之间的匹配分数;根据所述匹配分数得到所述分析结果;其中,设特征数据库中存在个特征分组,对于特征分组/>,设特征总数为/>,其中在其他分组中同时存在的特征总数为/>;对于待测二进制文件/>与特征分组/>的匹配,设匹配数量为/>,其中在其他分组中同时存在的特征总数为/>,则:
定义与/>间的匹配度/>与匹配率/>和分组重复率/>正相关、与匹配重复率负相关,匹配度的计算公式如下:
定义参与匹配的可靠度/>与/>在/>中的排位正相关,与分组重复率负相关,可靠度的计算公式如下:
其中函数表示/>在/>中的排位,取值范围为[0,1];若最终匹配分数/>大于分数阈值,则判定包含特征分组/>的第三方组件存在于待测二进制文件中。
2.根据权利要求1所述的基于二进制文件的软件成分分析方法,其特征在于,所述第一预设要求包括所述字符串无意义或有效信息量少于阈值;所述第二预设要求包括所述单词无意义或不稳定存在。
3.一种基于二进制文件的软件成分分析装置,其特征在于,包括:
获取模块,用于获取待测二进制文件;
提取模块,用于提取所述待测二进制文件的特征;
匹配模块,用于使用预先建立的特征数据库对提取的所述待测二进制文件的所述特征进行匹配得到匹配结果;其中,所述特征数据库由第三方组件对应的二进制样本文件建立,所述特征数据库的数据结构为字典树,所述字典树中的一条路径表征所述第三方组件中的一个所述特征;
分析模块,用于根据所述匹配结果对所述待测二进制文件进行分析以得到分析结果;其中,所述分析结果表征所述待测二进制文件与所述第三方组件的对应关系;
其中,提取所述待测二进制文件以及所述二进制样本文件的所述特征包括:
对二进制文件进行字符串提取;
对提取的所述字符串进行反修饰处理;
以字符串为单位对各所述字符串进行筛选以剔除不符合第一预设要求的所述字符串;
将所述字符串进行分词;
以单词为单位对分词后的各所述字符串进行筛选以剔除或替换不符合第二预设要求的所述单词;
将得到的单词序列作为提取的所述特征;
其中,在提取所述二进制样本文件的所述特征之后,还包括:
对提取的所述特征进行分组得到多个特征分组,并根据各所述特征分组内的特征集合的相似度对所述特征分组进行迭代优化;其中,所述特征分组的所述特征包含于同一个所述第三方组件中;
对应的,所述使用预先建立的特征数据库对提取的所述待测二进制文件的所述特征进行匹配得到匹配结果具体包括:
使用预先建立的所述特征数据库对提取的所述待测二进制文件的所述特征进行匹配;若提取的所述待测二进制文件的所述特征与所述字典树中的所述路径表征的所述特征匹配成功,则将对应的所述特征分组增加计数;
对应的,所述根据所述匹配结果对所述待测二进制文件进行分析以得到分析结果包括:
根据各所述特征分组的计数结果确定所述待测二进制文件与所述特征分组之间的匹配度以及对应的所述特征分组的可靠度;根据所述匹配度和所述可靠度得到所述待测二进制文件的所述特征与所述特征分组的所述特征之间的匹配分数;根据所述匹配分数得到所述分析结果;其中,设特征数据库中存在个特征分组,对于特征分组/>,设特征总数为/>,其中在其他分组中同时存在的特征总数为/>;对于待测二进制文件/>与特征分组/>的匹配,设匹配数量为/>,其中在其他分组中同时存在的特征总数为/>,则:
定义与/>间的匹配度/>与匹配率/>和分组重复率/>正相关、与匹配重复率负相关,匹配度的计算公式如下:
定义参与匹配的可靠度/>与/>在/>中的排位正相关,与分组重复率负相关,可靠度的计算公式如下:
其中函数表示/>在/>中的排位,取值范围为[0,1];若最终匹配分数/>大于分数阈值,则判定包含特征分组/>的第三方组件存在于待测二进制文件中。
4.一种基于二进制文件的软件成分分析装置,其特征在于,包括存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1或2任一项所述的基于二进制文件的软件成分分析方法的步骤。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1或2任一项所述的基于二进制文件的软件成分分析方法的步骤。
CN202310413955.9A 2023-04-14 2023-04-14 一种基于二进制文件的软件成分分析方法、装置以及介质 Active CN116149669B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310413955.9A CN116149669B (zh) 2023-04-14 2023-04-14 一种基于二进制文件的软件成分分析方法、装置以及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310413955.9A CN116149669B (zh) 2023-04-14 2023-04-14 一种基于二进制文件的软件成分分析方法、装置以及介质

Publications (2)

Publication Number Publication Date
CN116149669A CN116149669A (zh) 2023-05-23
CN116149669B true CN116149669B (zh) 2023-07-18

Family

ID=86339246

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310413955.9A Active CN116149669B (zh) 2023-04-14 2023-04-14 一种基于二进制文件的软件成分分析方法、装置以及介质

Country Status (1)

Country Link
CN (1) CN116149669B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117454817B (zh) * 2023-12-25 2024-04-12 芯能量集成电路(上海)有限公司 一种基于fpga的工程处理方法、装置、电子设备及存储介质
CN117972399B (zh) * 2024-03-28 2024-06-18 北京安普诺信息技术有限公司 用于二进制sca的特征提取方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108009425A (zh) * 2017-11-29 2018-05-08 四川无声信息技术有限公司 文件检测及威胁等级判定方法、装置及系统
WO2021258789A1 (zh) * 2020-06-22 2021-12-30 深信服科技股份有限公司 一种恶意软件识别的方法、系统、设备及可读存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104933363B (zh) * 2015-06-19 2018-09-11 安一恒通(北京)科技有限公司 检测恶意文件的方法和装置
CN106599686B (zh) * 2016-10-12 2019-06-21 四川大学 一种基于tlsh特征表示的恶意软件聚类方法
US11074154B2 (en) * 2018-06-06 2021-07-27 International Business Machines Corporation Identifying a source file for use in debugging compiled code
US10880328B2 (en) * 2018-11-16 2020-12-29 Accenture Global Solutions Limited Malware detection
US11556640B1 (en) * 2019-06-27 2023-01-17 Mandiant, Inc. Systems and methods for automated cybersecurity analysis of extracted binary string sets
CN114238131A (zh) * 2021-12-21 2022-03-25 中国电信股份有限公司 代码检测方法、装置、计算机可读介质及电子设备
CN115658646A (zh) * 2022-09-28 2023-01-31 中国信息通信研究院 一种二进制特征数据库构建方法及装置
CN115686623A (zh) * 2022-11-03 2023-02-03 苏州棱镜七彩信息科技有限公司 一种闭源软件的同源检测方法
CN115794629A (zh) * 2022-11-24 2023-03-14 深圳开源互联网安全技术有限公司 软件成分检测方法、电子设备及计算机可读存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108009425A (zh) * 2017-11-29 2018-05-08 四川无声信息技术有限公司 文件检测及威胁等级判定方法、装置及系统
WO2021258789A1 (zh) * 2020-06-22 2021-12-30 深信服科技股份有限公司 一种恶意软件识别的方法、系统、设备及可读存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A New Method to Analysis of Internet of Things Malware Using Image Texture Component and Machine Learning Techniques;Saloua Senhaji等;《Spinger Link》;第119-125页 *
基于交叉指纹分析的公共组件库特征提取方法;郭威等;《计算机科学》;50(01);第373-379页 *
基于组合核GA-SVM的恶意软件检测方法研究;吴修君;《中国优秀硕士学位论文全文数据库信息科技辑》(第07期);第I138-61页 *

Also Published As

Publication number Publication date
CN116149669A (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
CN109445834B (zh) 基于抽象语法树的程序代码相似性快速比较方法
CN111428044B (zh) 多模态获取监管识别结果的方法、装置、设备及存储介质
CN108446540B (zh) 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
CN116149669B (zh) 一种基于二进制文件的软件成分分析方法、装置以及介质
Gheorghescu An automated virus classification system
Bui et al. Bilateral dependency neural networks for cross-language algorithm classification
CN113434858B (zh) 基于反汇编代码结构和语义特征的恶意软件家族分类方法
CN115357904B (zh) 一种基于程序切片和图神经网络的多类漏洞检测方法
Nichols et al. Syntax-based improvements to plagiarism detectors and their evaluations
Vanamala et al. Topic modeling and classification of Common Vulnerabilities And Exposures database
Meng et al. [Retracted] A Deep Learning Approach for a Source Code Detection Model Using Self‐Attention
US20230418578A1 (en) Systems and methods for detection of code clones
CN113297580A (zh) 基于代码语义分析的电力信息系统安全防护方法及装置
Li et al. Juxtapp and dstruct: Detection of similarity among android applications
CN109816038B (zh) 一种物联网固件程序分类方法及其装置
Zhu et al. A neural network architecture for program understanding inspired by human behaviors
WO2016093839A1 (en) Structuring of semi-structured log messages
Hameed et al. SURAGH: Syntactic Pattern Matching to Identify Ill-Formed Records.
Heres Source code plagiarism detection using machine learning
CN113971283A (zh) 一种基于特征的恶意应用程序检测方法及设备
Zou et al. SCVD: A new semantics-based approach for cloned vulnerable code detection
Zhang et al. Effective and Fast Near Duplicate Detection via Signature‐Based Compression Metrics
CN116821903A (zh) 检测规则确定及恶意二进制文件检测方法、设备及介质
CN113688240B (zh) 威胁要素提取方法、装置、设备及存储介质
CN116822491A (zh) 日志解析方法及装置、设备、存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant