一种检测可执行文件引用的开源组件的方法及相关产品技术

技术编号:39007553 阅读:12 留言:0更新日期:2023-10-07 10:38
本发明专利技术涉及软件检测技术领域,揭露了一种检测可执行文件引用的开源组件的方法及相关产品,其中,所述方法包括:根据预设的开源组件的版本信息生成时间戳;根据开源组件、版本信息及时间戳生成库文件;利用库文件对预设的特征库进行更新,并根据预设的待检测可执行文件从更新后的特征库内筛选出函数特征;根据函数特征确认待检测可执行文件所引用的目标开源组件。本发明专利技术可以根据开源组件、版本信息及时间戳生成库文件,并利用库文件对特征库进行更新,使得待检测可执行文件从更新后的特征库内筛选出函数特征,进而准确确认待检测可执行文件的组件版本,从而提高对二进制文件进行检测时的准确性。时的准确性。时的准确性。

【技术实现步骤摘要】
一种检测可执行文件引用的开源组件的方法及相关产品


[0001]本专利技术涉及软件检测
,尤其涉及一种检测可执行文件引用的开源组件的方法及相关产品。

技术介绍

[0002]由于编译器、编译优化配置及指令架构等问题,导致在同一份开源组件源码所编译出的二进制文件会有明显的差别,所以很难将源码与二进制文件建立起对应关系。目前对二进制文件的检测方案大多采用基于文本、属性度量、程序逻辑及语义等方式,存在着组件名称检测准确率不高、无法自动化识别组件间的依赖关系(检测文件仅引用了A组件,但由于B组件依赖于A组件,检测结果出现A与B)及组件版本识能力弱等问题。综上,现存技术中存在对二进制文件进行检测时的准确性较低的问题。

技术实现思路

[0003]本专利技术提供一种检测可执行文件引用的开源组件的方法及相关产品,其主要目的在于解决对二进制文件进行检测时的准确性较低的问题。
[0004]为实现上述目的,本专利技术提供的一种检测可执行文件引用的开源组件的方法,包括:根据预设的开源组件的版本信息生成时间戳;根据开源组件、版本信息及时间戳生成库文件;利用库文件对预设的特征库进行更新,并根据预设的待检测可执行文件从更新后的特征库内筛选出函数特征;根据函数特征确认待检测可执行文件所引用的目标开源组件。
[0005]为了解决上述问题,本专利技术还提供了一种检测可执行文件引用的开源组件的装置,包括:时间戳生成模块,用于根据预设的开源组件的版本信息生成时间戳;库文件生成模块,用于根据开源组件、版本信息及时间戳生成库文件;特征筛选模块,用于利用库文件对预设的特征库进行更新,并根据预设的待检测可执行文件从更新后的特征库内筛选出函数特征;组件确认模块,用于根据函数特征确认待检测可执行文件所引用的目标开源组件。
[0006]为了解决上述问题,本专利技术还提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的计算机程序,计算机程序被至少一个处理器执行,以使至少一个处理器能够执行上述的检测可执行文件引用的开源组件的方法。
[0007]为了解决上述问题,本专利技术还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一个计算机程序,至少一个计算机程序被电子设备中的处理器执行以实现上述的检测可执行文件引用的开源组件的方法。
[0008]根据本专利技术提供的上述技术方案,通过自动编译组件的方式,解决了编译优化配置、指令架构造成的同一份开源组件源码所编译出的二进制文件会有明显的差别问题;通过组件每个文件版本的生成时间,来过滤组件之间的依赖关系,解决了无法确定组件依赖关系所产生的误报问题;通过对库文件以及待检测可执行文件反汇编后,对待检测可执行文件的反汇编结果进行处理,保证了与库文件的反汇编结果一致,从而提高了文件进行检
测时的准确性;通过比较文件版本之间的函数特征对应的哈希算法,来进行文件版本的区分,保证了最终得到的待检测可执行文件的文件版本为最高版本。因此本专利技术提出的检测可执行文件引用的开源组件的方法及相关产品,可以解决对二进制文件进行检测时的准确性较低的问题。
附图说明
[0009]图1为本专利技术一实施例提供的检测可执行文件引用的开源组件的方法的流程示意图;图2为本专利技术一实施例提供的命名文件中组件A依赖于组件B的示意图;图3为本专利技术一实施例提供的命名文件中两个组件的函数特征对应的哈希算法一致的示意图;图4为本专利技术一实施例提供的检测可执行文件引用的开源组件的装置的功能模块图;图5为本专利技术一实施例提供的实现检测可执行文件引用的开源组件的方法的电子设备的结构示意图。
[0010]本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0011]应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0012]为解决现有技术中提供的开源组件引用检测方法所存在的对二进制文件进行检测时的准确性较低的问题。本专利技术提供了一种检测可执行文件引用的开源组件的方法,该方法通过开源组件的版本信息生成时间戳,根据开源组件、版本信息及时间戳生成库文件,利用库文件对特征库进行更新,并根据待检测可执行文件从更新后的特征库内筛选出函数特征,根据函数特征确认待检测可执行文件所引用的目标开源组件,从而能够提高对二进制文件进行检测时的准确性。
[0013]参照图1所示,为本专利技术一实施例提供的检测可执行文件引用的开源组件的方法的流程示意图。在本实施例中,该检测可执行文件引用的开源组件的方法包括:S1、根据预设的开源组件的版本信息生成时间戳。
[0014]本专利技术实施例中,开源组件指的是用于构建软件系统的组件;通过自动编译的方式对开源组件进行克隆,得到克隆文件,其中,克隆文件中包含了开源组件的所有版本信息;版本信息指的是开源组件对应的版本号,其中,可以通过查询命令查询开源组件对应的所有版本信息,查询命令为“git tag”;开源组件包含若干版本信息,可以通过“git checkout [tag]”命令切换指定版本信息。
[0015]本专利技术实施例中,根据预设的开源组件的版本信息生成时间戳,包括:获取开源组件的版本信息对应的版本日期及版本时间,根据版本日期及版本时间创建日期对象;利用预设的内置函数将日期对象转换为时间戳。
[0016]本专利技术实施例中,版本日期指的是版本信息创建的日期;版本时间指的是版本信息创建的时间;根据版本日期及版本时间创建日期对象指的是调用无参构造函数,利用无参构造函数创建日期对象,例如,利用Date date=new Date()创建了一个名为date的Date
对象;内置函数指的是getTime()函数,利用getTime()函数将日期对象转换为时间戳,其中,由于时间戳是一个长整型数字,因此,利用getTime()函数进行转换可以表示为long timestamp = date.getTime(),timestamp表示长整型变量。
[0017]进一步地,根据开源组件的版本信息生成时间戳以后,可以利用预设的查询命令查询时间戳,其中,查询命令可以为“git log
ꢀ‑1ꢀ‑‑
format=%ct [tag]”命令。
[0018]本专利技术实施例中,根据开源组件的版本信息能够准确生成时间戳,通过时间戳能够过滤开源组件之间的依赖关系,从而能够减少误报问题。
[0019]S2、根据开源组件、版本信息及时间戳生成库文件。
[0020]本专利技术实施例中,根据开源组件、版本信息及时间戳生成库文件,包括:从版本信息中选取目标版本信息,基于目标版本信息对开源组件的组件目录进行扫描,根据扫描的结果构建目标文件;配置目标文件的编译优化选项及指令架构目的,得到配置文件;从时间戳中提取目标版本信息对应的目标时间戳,并将目标时间戳存储至配置文件中,得到库文件。
[0021]本专利技术实施例中,根据预先设定的开源组件对应的指定版本从版本信息中选取指定版本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种检测可执行文件引用的开源组件的方法,其特征在于,所述方法包括:根据预设的开源组件的版本信息生成时间戳;根据所述开源组件、所述版本信息及所述时间戳生成库文件;利用所述库文件对预设的特征库进行更新,并根据预设的待检测可执行文件从更新后的特征库内筛选出函数特征;根据所述函数特征确认所述待检测可执行文件所引用的目标开源组件。2.如权利要求1所述的检测可执行文件引用的开源组件的方法,其特征在于,所述根据预设的开源组件的版本信息生成时间戳,包括:获取所述开源组件的版本信息对应的版本日期及版本时间,根据所述版本日期及所述版本时间创建日期对象;利用预设的内置函数将所述日期对象转换为时间戳。3.如权利要求1所述的检测可执行文件引用的开源组件的方法,其特征在于,所述根据所述开源组件、所述版本信息及所述时间戳生成库文件,包括:从所述版本信息中选取目标版本信息,基于所述目标版本信息对所述开源组件的组件目录进行扫描,根据扫描的结果构建目标文件;配置所述目标文件的编译优化选项及指令架构目的,得到配置文件;从所述时间戳中提取所述目标版本信息对应的目标时间戳,并将所述目标时间戳存储至所述配置文件中,得到库文件。4.如权利要求1所述的检测可执行文件引用的开源组件的方法,其特征在于,所述利用所述库文件对预设的特征库进行更新,包括:对所述库文件进行反汇编处理,得到处理文件;获取所述处理文件中的文件版本信息及文件时间戳,根据所述文件版本信息及所述文件时间戳对所述处理文件进行命名,得到命名文件;提取所述命名文件中的限定函数,对所述限定函数进行筛选,得到目标函数;对所述目标函数进行特征提取,得到标准函数特征,并对所述标准函数特征进行特征清洗,得到清洗函数特征;将所述清洗函数特征存储至所述特征库中,得到更新后的特征库。5.如权利要求4所述的检测可执行文件引用的开源组件的方法,其特征在于,所述对所述限定函数进行筛选,得到目标函数,包括:获取所述限定函数的操作码长度,判断所述操作码长度是否大于预设的字节长度;当所述操作码长度小于或等于所述字节长度时,判定所述限定函数不符合标准,对所述限定函数进行删除,将删除后的限定函数作为初始目标函数;当所述操作码大于所述字节长度时,判定所述限定函数符合标准,并将所述限定函数作为初始目标函数;判断所述初始目标函数是否为预设的设定函数;当所...

【专利技术属性】
技术研发人员:万振华
申请(专利权)人:深圳开源互联网安全技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1