一种函数库引用检测方法、装置、设备及可读存储介质制造方法及图纸

技术编号:37509387 阅读:17 留言:0更新日期:2023-05-07 09:48
本申请提供了一种函数库引用检测方法、装置、设备及可读存储介质。所述方法包括:获取待检测项目的第一特征信息;其中,所述第一特征信息包括:第一头文件信息以及最底层函数;将所述第一特征信息与预设的对应于二进制函数库的数据库所包含的第二头文件信息以及导出函数进行匹配;根据匹配结果确定所述待检测项目在所述数据库中所引用的目标函数库。通过本申请方案的实施,将待检测项目的头文件信息和最底层函数分别与预设数据库中头文件信息和导出函数进行匹配,根据匹配结果即可确定待检测项目所引用的目标函数库,从而有效提高检测的准确率且所需准备的数据量小,有效节省存储空间。空间。空间。

【技术实现步骤摘要】
一种函数库引用检测方法、装置、设备及可读存储介质


[0001]本申请涉及电子
,尤其涉及一种函数库引用检测方法、装置、设备及存储介质。

技术介绍

[0002]对于在C语言源码项目中检测引用的函数库的方法,目前行业内多采用源码相似度检测和包管理器识别的方案。
[0003]源码相似度检测是大量采集开源项目的源码,提取出项目中所有函数的内容,并将每个函数进行如删除空格、变量名称规格化等处理,将处理后的函数内容计算出哈希值并存储入库,同时入库的还有哈希值对应的函数库名称和版本。需要检测某个项目引用了哪些组件时,将该项目经同样的处理,得到每个函数的哈希值,将这些哈希值拿到库中进行检索,通过匹配的哈希值数量、比例等,取得引用的函数库名称和版本。
[0004]包管理器识别组件的方案,是识别包管理文件如vcpkg中的内容,此类文件中的内容为文本形式,描述了需要下载或引用的库,有些包含版本信息。
[0005]但采用源码相似度检测的方案只能检测包含函数库源码的情况,比如某个C语言项目中,包含了开源库zlib的源码,那么zlib理论上就可以被检测出。但如果是引用的二进制库,就无法检测,因为该C语言项目只是调用了zlib的函数,而没有包含和zlib项目相同或相似的函数。并且该方案需要大量数据作为储备来进行检测,空间消耗较大;检测准确率较低,因为存在开源函数库相互引用的问题,比如开源项目A以源码形式引用了开源项目B,那么当某个C语言项目引用了项目A时,项目A和项目B会被检测出来;而包管理器识别组件的方案,需要C语言项目中存在包管理文件,如果不存在,则无法检测引用的函数库。包管理器并非C语言项目中流行的解决方案,因此并不常有包管理文件可供检测。

技术实现思路

[0006]本申请实施例的主要目的在于提供一种函数库引用检测方法、装置、设备及存储介质,至少能够解决相关技术中在检测引用的函数库时检测准确率较低且空间消耗较大的问题。
[0007]为实现上述目的,本专利技术实施例第一方面提供了一种函数库引用检测方法,该方法包括:获取待检测项目的第一特征信息;其中,所述第一特征信息包括:第一头文件信息以及最底层函数;将所述第一特征信息与预设的对应于二进制函数库的数据库所包含的第二头文件信息以及导出函数进行匹配;根据匹配结果确定所述待检测项目在所述二进制数据库中所引用的目标函数库。
[0008]本申请实施例第二方面提供了一种函数库引用检测装置,包括:获取模块,用于获取待检测项目的第一特征信息;其中,所述第一特征信息包括:
第一头文件信息以及最底层函数;匹配模块,用于将所述第一特征信息与预设的对应于二进制函数库的数据库所包含的第二头文件信息以及导出函数进行匹配;确定模块,用于根据匹配结果确定所述待检测项目在所述二进制数据库中所引用的目标函数库。
[0009]本申请实施例第三方面提供了一种电子设备,包括:存储器及处理器,其中,处理器用于执行存储在存储器上的计算机程序,处理器执行计算机程序时,实现上述本申请实施例第一方面提供的函数库引用检测方法中的各步骤。
[0010]本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述本申请实施例第一方面提供的函数库引用检测方法中的各步骤。
[0011]由上可见,根据本申请方案所提供的函数库引用检测方法、装置、设备及存储介质,获取待检测项目的第一特征信息;其中,第一特征信息包括:第一头文件信息以及最底层函数;将第一特征信息与预设的对应于二进制函数库的数据库所包含的第二头文件信息以及导出函数进行匹配;根据匹配结果确定待检测项目在数据库中所引用的目标函数库。通过本申请方案的实施,将待检测项目的头文件信息和最底层函数分别与预设数据库中头文件信息和导出函数进行匹配,根据匹配结果即可确定待检测项目所引用的目标函数库,从而有效提高检测的准确率且所需准备的数据量小,有效节省存储空间。
附图说明
[0012]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0013]图1为本申请第一实施例提供的函数库引用检测方法的基本流程示意图;图2为本申请第二实施例提供的函数库引用检测方法的细化流程示意图;图3为本申请第三实施例提供的一种函数库引用检测装置的模块示意图;图4为本申请第四实施例提供的电子设备的结构示意图。
具体实施方式
[0014]为使得本申请的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0015]此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0016]为了解决相关技术在检测引用的函数库时检测准确率较低且空间消耗较大的问
题,本申请第一实施例提供了一种函数库引用检测方法,应用于C语言项目中,如图1为本实施例提供的函数库引用检测方法的基本流程示意图,该函数库引用检测方法包括以下的步骤:步骤101、获取待检测项目的第一特征信息。
[0017]具体的,在本实施例中,第一特征信息包括:第一头文件信息以及最底层函数。通过待检测项目中所包含的头文件以及所调用的函数中的最底层函数即可得出待检测项目中所引用的函数库。
[0018]在本实施例一些实施方式中,获取待检测项目的第一特征信息的步骤之前,还包括:获取待检测项目中所有源码文件所包含的第一头文件名;将第一头文件名进行哈希运算,得到第一哈希值;将第一头文件名中所有嵌套的子头文件名进行哈希运算,得到第二哈希值;基于第一头文件名、第一哈希值以及第二哈希值,生成第一头文件信息。
[0019]具体的,在本实施例中,待检测项目中的头文件信息包括头文件名、第一哈希值、第二哈希值。其中,第二哈希值是通过将头文件名中所包含的所有子头文件进行哈希运算后获得的,且该子头文件是经过删除注释以及空格等处理后获得的。子头文件是头文件中嵌套的头文件,例如在头文件zlib.h中开始的几行代码:#ifndef ZLIB_H#define ZLIB_H#include "zconf.h"由此可以得出zlib.h所引用的子头文件zconf.h。并且该子头文件还包含有各自的子头文件,将所有嵌套的子头文件全部找出后删除无用信息如注释和空格后进行哈希运算得到第二哈希值。由于这些嵌本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种函数库引用检测方法,其特征在于,包括:获取待检测项目的第一特征信息;其中,所述第一特征信息包括:第一头文件信息以及最底层函数;将所述第一特征信息与预设的对应于二进制函数库的数据库所包含的第二头文件信息以及导出函数进行匹配;根据匹配结果确定所述待检测项目在所述数据库中所引用的目标函数库。2.根据权利要求1所述的函数库引用检测方法,其特征在于,所述获取待检测项目的第一特征信息的步骤之前,还包括:获取所述待检测项目中所有源码文件所包含的第一头文件名;将所述第一头文件名进行哈希运算,得到第一哈希值;将所述第一头文件名中所有嵌套的子头文件名进行哈希运算,得到第二哈希值;基于所述第一头文件名、所述第一哈希值以及所述第二哈希值,生成所述第一头文件信息。3.根据权利要求2所述的函数库引用检测方法,其特征在于,所述获取所述待检测项目中所有源码文件所包含的第一头文件名的步骤,包括:读取所述待检测项目中头文件列表;其中,所述头文件列表包括:头文件名称以及头文件路径;根据所述头文件列表,获取所述待检测项目中所有源码文件所包含的第一头文件名。4.根据权利要求1所述的函数库引用检测方法,其特征在于,所述获取待检测项目的第一特征信息的步骤之前,还包括:分别获取所述待检测项目的源码文件中有代码实现的函数以及调用的子函数;将所述有代码实现的函数与所述子函数进行对比;将不同于所述有代码实现的函数的所述子函数确定为所述最底层函数。5.根据权利要求1所述的函数库引用检测方法,其特征在于,所述将所述第一特征信息与预设的对应于二进制函数库的数据库所包含的第二头文件信息以及导出函数进行匹配的步骤之前,还包括:分别获取预设的二进制库文件名以及对应于所述二进制库文件名的函数库名称、导出函数、第二头文件名;其中,所述导出函数为二进制库文件对外提供的函数接口;将所述第二头文件名进行哈希运算,得到第三哈希值;将所述第二头...

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

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

1