本发明涉及软件检测,尤其涉及一种检测可执行文件引用的开源组件的方法及相关产品。
背景技术:
1、由于编译器、编译优化配置及指令架构等问题,导致在同一份开源组件源码所编译出的二进制文件会有明显的差别,所以很难将源码与二进制文件建立起对应关系。目前对二进制文件的检测方案大多采用基于文本、属性度量、程序逻辑及语义等方式,存在着组件名称检测准确率不高、无法自动化识别组件间的依赖关系(检测文件仅引用了a组件,但由于b组件依赖于a组件,检测结果出现a与b)及组件版本识能力弱等问题。综上,现存技术中存在对二进制文件进行检测时的准确性较低的问题。
技术实现思路
1、本发明提供一种检测可执行文件引用的开源组件的方法及相关产品,其主要目的在于解决对二进制文件进行检测时的准确性较低的问题。
2、为实现上述目的,本发明提供的一种检测可执行文件引用的开源组件的方法,包括:根据预设的开源组件的版本信息生成时间戳;根据开源组件、版本信息及时间戳生成库文件;利用库文件对预设的特征库进行更新,并根据预设的待检测可执行文件从更新后的特征库内筛选出函数特征;根据函数特征确认待检测可执行文件所引用的目标开源组件。
3、为了解决上述问题,本发明还提供了一种检测可执行文件引用的开源组件的装置,包括:时间戳生成模块,用于根据预设的开源组件的版本信息生成时间戳;库文件生成模块,用于根据开源组件、版本信息及时间戳生成库文件;特征筛选模块,用于利用库文件对预设的特征库进行更新,并根据预设的待检测可执行文件从更新后的特征库内筛选出函数特征;组件确认模块,用于根据函数特征确认待检测可执行文件所引用的目标开源组件。
4、为了解决上述问题,本发明还提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的计算机程序,计算机程序被至少一个处理器执行,以使至少一个处理器能够执行上述的检测可执行文件引用的开源组件的方法。
5、为了解决上述问题,本发明还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一个计算机程序,至少一个计算机程序被电子设备中的处理器执行以实现上述的检测可执行文件引用的开源组件的方法。
6、根据本发明提供的上述技术方案,通过自动编译组件的方式,解决了编译优化配置、指令架构造成的同一份开源组件源码所编译出的二进制文件会有明显的差别问题;通过组件每个文件版本的生成时间,来过滤组件之间的依赖关系,解决了无法确定组件依赖关系所产生的误报问题;通过对库文件以及待检测可执行文件反汇编后,对待检测可执行文件的反汇编结果进行处理,保证了与库文件的反汇编结果一致,从而提高了文件进行检测时的准确性;通过比较文件版本之间的函数特征对应的哈希算法,来进行文件版本的区分,保证了最终得到的待检测可执行文件的文件版本为最高版本。因此本发明提出的检测可执行文件引用的开源组件的方法及相关产品,可以解决对二进制文件进行检测时的准确性较低的问题。
1.一种检测可执行文件引用的开源组件的方法,其特征在于,所述方法包括:
2.如权利要求1所述的检测可执行文件引用的开源组件的方法,其特征在于,所述根据预设的开源组件的版本信息生成时间戳,包括:
3.如权利要求1所述的检测可执行文件引用的开源组件的方法,其特征在于,所述根据所述开源组件、所述版本信息及所述时间戳生成库文件,包括:
4.如权利要求1所述的检测可执行文件引用的开源组件的方法,其特征在于,所述利用所述库文件对预设的特征库进行更新,包括:
5.如权利要求4所述的检测可执行文件引用的开源组件的方法,其特征在于,所述对所述限定函数进行筛选,得到目标函数,包括:
6.如权利要求1所述的检测可执行文件引用的开源组件的方法,其特征在于,所述根据预设的待检测可执行文件从更新后的特征库内筛选出函数特征,包括:
7.如权利要求1至6中任一项所述的检测可执行文件引用的开源组件的方法,其特征在于,所述根据所述函数特征确认所述待检测可执行文件所引用的目标开源组件,包括:
8.一种检测可执行文件引用的开源组件的装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,所述电子设备包括:
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述的检测可执行文件引用的开源组件的方法。