System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 二进制函数的嵌入生成方法、装置、电子设备和介质制造方法及图纸_技高网

二进制函数的嵌入生成方法、装置、电子设备和介质制造方法及图纸

技术编号:40800996 阅读:2 留言:0更新日期:2024-03-28 19:26
本发明专利技术提供二进制函数的嵌入生成方法、装置、电子设备和介质,涉及计算机技术领域。该方法包括:将目标二进制函数输入到预先训练的控制流语义学习模型,得到控制流语义嵌入,其中,控制流语义学习模型用于将二进制函数对应的关系控制流图转换成向量并输出;将目标二进制函数输入到预先训练的全局顺序语义学习模型,得到全局顺序语义嵌入,全局顺序语义学习模型用于将二进制函数对应的机器码转换成向量并输出;对控制流语义嵌入和全局顺序语义嵌入进行整合,将整合结果作为目标二进制函数对应的嵌入。本发明专利技术的方案能够入,使得二进制函数的嵌入能够最大程度的保留代码信息,具有较好的泛化性能,提高了二进制函数嵌入质量。

【技术实现步骤摘要】

本专利技术涉及计算机,尤其涉及一种二进制函数的嵌入生成方法、装置、电子设备和介质


技术介绍

1、二进制代码(或称二进制函数)是计算机可以直接解析的编程数据的基本形式,它由一串0和1组成,以结构化方式排列,可被大型计算机程序中读取和执行。为了对二进制代码进行分析人们提出了各种技术来学习二进制代码中各种维度的语义信息,如基于代码序列学习方法和基于程序结构图的学习方法。

2、基于代码序列学习方法是通过自然语言处理的方式来学习二进制代码序列。此类学习方法包括:使用规范化策略将汇编代码规范化后,用word2vec模型对二进制文件进行编码;利用pv-dm模型同时学习指令和函数的嵌入;将编程语言视为文本,使用自然语言处理技术进行相似度计算;再或者将汇编代码转换为中间表示后,利用bert模型学习ir的嵌入。然而,以上所列举的基于代码序列学习方法都不能有对性的学习二进制函数的代码语义。

3、基于程序结构图的学习方法是通过图神经网络等方式来学习二进制代码衍生的程序结构图,例如控制流图、抽象语法树等,从而学习代码的语义。此类学习方法包括:使用structure2vec结构学习控制流图、使用图神经网络学习控制流图、数据流图、函数调用图,以及使用tree-lstm学习函数的抽象语法树。然而,以上列举的基于程序结构图的学习方法忽略了程序结构图中不同结构的信息不同,例如控制流图中的每条边所代表的跳转关系是不同的;再者,由于此类方法依赖于程序结构图,遗失了代码的全局顺序信息,无法让模型学习到代码的完整语义。


>技术实现思路

1、本专利技术提供一种二进制函数的嵌入生成方法、装置、电子设备和介质,用以解决现有技术中二进制函数嵌入无法完整的学习代码语义信息的问题,实现从二进制函数的多个不同的维度学习代码的语义嵌入表示,使得二进制函数的嵌入能够最大程度的保留源代码息,提高了二进制函数嵌入质量。

2、根据本专利技术的第一方面,提供了一种二进制函数的嵌入生成方法,所述包括:

3、将目标二进制函数输入到预先训练的控制流语义学习模型,得到控制流语义嵌入,其中,所述控制流语义学习模型用于将二进制函数对应的关系控制流图转换成向量并输出;

4、将所述目标二进制函数输入到预先训练的全局顺序语义学习模型,得到全局顺序语义嵌入,所述全局顺序语义学习模型用于将二进制函数对应的机器码转换成向量并输出;

5、对所述控制流语义嵌入和所述全局顺序语义嵌入进行整合,将整合结果作为所述目标二进制函数对应的嵌入。

6、在一些可能的实现方式中,所述控制流语义学习模型包括bert网络和r-gcn网络;

7、所述将目标二进制函数输入到预先训练的控制流语义学习模型,得到控制流语义嵌入,包括:

8、获取目标二进制函数的关系控制流图,其中,所述关系控制流图包括:基本块节点及连接所述基本块节点的边;

9、将所述关系控制流图输入到预先训练的控制流语义学习模型中的bert网络;

10、利用所述bert网络将从第一输入端输入的关系控制流图中的基本块节点转换成向量表示并通过第一输出端输出;

11、将从所述第一输出端输出的向量输入到预先训练的控制流语义学习模型中的r-gcn网络;

12、利用所述r-gcn网络的邻居聚合层和基本块节点之间的边对向量进行更新;

13、利用所述r-gcn网络的图池化层对更新后的向量加权平均后输出;

14、将预先训练的控制流语义学习模型中的r-gcn网络输出的向量作为所控制流语义嵌入。

15、在一些可能的实现方式中,连接所述基本块节点的边根据如下规则确定:

16、响应于任意基本块节点对的控制流跳转方式属于顺序跳转或者属于条件为真的控制流跳转,则采用赋值为零的边连接任意基本块节点对;

17、响应于任意基本块节点对的控制流跳转方式属于条件为假的控制流跳转,则采用赋值为一的边连接任意基本块节点对。

18、在一些可能的实现方式中,所述全局顺序语义学习模型包括dpcnn网络;

19、所述将所述目标二进制函数输入到预先训练的全局顺序语义学习模型,得到全局顺序语义嵌入,包括:

20、获取目标二进制函数的机器码;

21、将所述机器码中的二进制数重组并换成十进制数,得到十进制字节序列;

22、将所述十进制字节序列中的每个十进制数转换成向量;

23、将所述十进制字节序列中各个十进制数对应的向量输入到预先训练的全局顺序语义学习模型中的dpcnn网络;

24、利用所述dpcnn网络提取所述十进制字节序列的依赖信息后输出;

25、将预先训练的全局顺序语义学习模型中dpcnn网络输出的向量作为所述全局顺序语义嵌入。

26、在一些可能的实现方式中,所述将所述机器码中的二进制数重组并换成十进制数,得到十进制字节序列,包括:

27、从所述机器码的首位开始,将连续的八位二进制数作为一组,得到带有顺序的若干组二进制数;

28、按照若干组二进制数的顺序将各组二进制数转换成十进制,得到十进制字节序列。

29、在一些可能的实现方式中,所述将所述十进制字节序列中的每个十进制数转换成向量,包括:

30、利用pytorch中的嵌入层分别为每个十进制数生成token嵌入,并将token嵌入作为转换的向量。

31、在一些可能的实现方式中,所述方法还包括:

32、利用所述bert网络将从第二输入端输入的采用向量表示的参考关系控制流图与所述第一输出端进行比较操作,其中,所述比较操作包括:比较任意基本块节点对是否相连接,和/或比较任意基本块节点是否属于相同的关系控制流图,和/或任意基本块节点所属关系控制流图对应的编译类型;

33、将比较结果通过所述bert网络的第二输出端输出。

34、根据本专利技术的第二方面,还提供了一种二进制函数的嵌入生成装置,所述装置包括:

35、第一转换模块,用于将目标二进制函数输入到预先训练的控制流语义学习模型,得到控制流语义嵌入,其中,所述控制流语义学习模型用于将二进制函数对应的关系控制流图转换成向量并输出;

36、第二转换模块,用于将所述目标二进制函数输入到预先训练的全局顺序语义学习模型,得到全局顺序语义嵌入,所述全局顺序语义学习模型用于将二进制函数对应的机器码转换成向量并输出;

37、整合模块,用于对所述控制流语义嵌入和所述全局顺序语义嵌入进行整合,将整合结果作为所述目标二进制函数对应的嵌入。

38、根据本专利技术的第三方面,还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述二进制函数的嵌入生成方法。

39、根据本专利技术的第四方面,还提供一种非暂态计算机可读存储介质,其上存储有计算本文档来自技高网...

【技术保护点】

1.一种二进制函数的嵌入生成方法,其特征在于,所述方法包括:

2.根据权利要求1所述的二进制函数的嵌入生成方法,其特征在于,所述控制流语义学习模型包括BERT网络和R-GCN网络;

3.根据权利要求2所述的二进制函数的嵌入生成方法,其特征在于,连接所述基本块节点的边根据如下规则确定:

4.根据权利要求1所述的二进制函数的嵌入生成方法,其特征在于,所述全局顺序语义学习模型包括DPCNN网络;

5.根据权利要求4所述的二进制函数的嵌入生成方法,其特征在于,所述将所述机器码中的二进制数重组并换成十进制数,得到十进制字节序列,包括:

6.根据权利要求4所述的二进制函数的嵌入生成方法,其特征在于,所述将所述十进制字节序列中的每个十进制数转换成向量,包括:

7.根据权利要求2所述的二进制函数的嵌入生成方法,其特征在于,所述方法还包括:

8.一种二进制函数的嵌入生成装置,其特征在于,所述装置包括:

9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述二进制函数的嵌入生成方法。

10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述二进制函数的嵌入生成方法。

...

【技术特征摘要】

1.一种二进制函数的嵌入生成方法,其特征在于,所述方法包括:

2.根据权利要求1所述的二进制函数的嵌入生成方法,其特征在于,所述控制流语义学习模型包括bert网络和r-gcn网络;

3.根据权利要求2所述的二进制函数的嵌入生成方法,其特征在于,连接所述基本块节点的边根据如下规则确定:

4.根据权利要求1所述的二进制函数的嵌入生成方法,其特征在于,所述全局顺序语义学习模型包括dpcnn网络;

5.根据权利要求4所述的二进制函数的嵌入生成方法,其特征在于,所述将所述机器码中的二进制数重组并换成十进制数,得到十进制字节序列,包括:

6.根据权利要求4所述的二进制...

【专利技术属性】
技术研发人员:李红王勇攀郭蔡炜李宏发林晨晗
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:

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

1