【技术实现步骤摘要】
基于中间表达的二进制代码开源成分识别方法及系统
[0001]本专利技术涉及软件的开源成分检测
,尤其涉及一种基于中间表达的二进制代码开源成分识别方法及系统。
技术介绍
[0002]开源运动推动了开源社区的发展,这些开源社区提供了大量的开源存储库,因此,基于开源组件的开发和代码重用大大提高了软件开发的效率,但是,由于开源组件的引入,这也会带来一些问题,如违反许可和安全漏洞等。
[0003]现如今大量的软件开发者出于各种原因的考虑,未公开其软件的源代码,这使得对软件中使用的第三方组件的识别工作带来不小的挑战。主要原因在于不同的软件的二进制文件可能通过各种不同的编译配置编译而来,包括不同的编译器、优化级别、指令架构等等。同一份源代码在通过不同的编译配置编译后产生的二进制文件往往存在较大的差异,难以很好的在二进制文件与源代码间进行匹配。
[0004]因此,需要对二进制代码开源成分检测技术进行改进。
技术实现思路
[0005]本专利技术的目的是提供一种基于中间表达的二进制代码开源成分识别方法及系统 ...
【技术保护点】
【技术特征摘要】
1.一种基于中间表达的二进制代码开源成分识别方法,其特征在于,包括:将开源组件库中的开源组件的源代码转换为二进制文件,并抽取和存储转换过程中的中间表达式,以获得基础数据库;将待检测的二进制的目标文件反编译为中间表达式,以获得目标数据;通过第一神经网络模型分别对所述基础数据库中的各个数据进行转换处理,以获得基于高维空间向量表达的源代码向量;同时,通过所述第一神经网络模型对所述目标数据进行转换处理,以获得与所述源代码向量维度相同的目标代码向量;分别计算所述目标代码向量与每一所述源代码向量的相似度,以获得相似度值。2.根据权利要求1所述的基于中间表达的二进制代码开源成分识别方法,其特征在于,所述第一神经网络模型的生成方法包括:提供一Bert预训练模型;通过所述基础数据库中的数据对Bert预训练模型进行精调,以获得所述第一神经网络模型。3.根据权利要求1所述的基于中间表达的二进制代码开源成分识别方法,其特征在于,采用第二神经网络模型计算目标代码向量与源代码向量的相似度。4.根据权利要求1所述的基于中间表达的二进制代码开源成分识别方法,其特征在于,所述源代码向量的维度大于或等于1024。5.一种基于中间表达的二进制代码开源成分识别系统,其特征在于,包括:第一转换模块,其用于将将开源组件库中的开源组件的源代码转换为二进制文件,并抽取和存储转换过程中的中间表达式,以获得基础数据库;第二转换模块,其用于将待检测的二进制的目标文件反编译为中间表达...
【专利技术属性】
技术研发人员:万振华,胡佳豪,蒋建春,程泽凯,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。