[发明专利]基于BERT的二进制代码相似性检测方法有效
| 申请号: | 202310237564.6 | 申请日: | 2023-03-14 |
| 公开(公告)号: | CN115951931B | 公开(公告)日: | 2023-05-16 |
| 发明(设计)人: | 胡鹏飞;赵斌;郝立鹏;潘润宇;钟方天;底晓强 | 申请(专利权)人: | 山东大学 |
| 主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F40/194;G06F40/30;G06N3/0455;G06N3/047;G06N3/088;G06N3/09 |
| 代理公司: | 青岛华慧泽专利代理事务所(普通合伙) 37247 | 代理人: | 马千会 |
| 地址: | 266200 山*** | 国省代码: | 山东;37 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 bert 二进制 代码 相似性 检测 方法 | ||
本发明涉及代码相似性检测技术领域,具体涉及基于BERT的二进制代码相似性检测方法。基于BERT的二进制代码相似性检测方法,包括:利用预训练数据集对BERT模型进行预训练,获得预训练后的通用模型;利用新数据集对通用模型进行重训练,获得微调模型,所述微调模型用于预测两个二进制代码是否相似。本发明的方法由两个独立的训练阶段组成,采用两阶段训练的关键优势是支持潜在的应用程序,允许重新利用预训练的模型,以使用更低成本的计算资源快速应用其他下游任务。
技术领域
本发明涉及代码相似性检测技术领域,具体涉及基于BERT的二进制代码相似性检测方法。
背景技术
代码相似性检测常用于代码预测、知识产权保护和漏洞搜索等领域,可分为源代码相似性检测和二进制代码相似性检测。软件的源代码通常难以获得,因此针对二进制代码的相似性检测技术能够适用的场景更加广泛。由于二进制代码具有非常简洁的表示形式,因为编译时的大量转换导致了大多数高级概念(例如,变量名、结构、类型、类层次结构)的丢失,因此推断潜在的上下文含义非常具有挑战性。根据关注的代码信息的不同,当前的二进制代码相似性检测技术分为4类:基于文本、基于属性度量、基于程序逻辑、基于语义的检测技术。
基于语义的检测技术,它通过捕获程序汇编代码中的语义信息,来比较函数或组件的语义差异,已实现相似性度量。这类方法通常借鉴图像识别或其它领域的技术,利用深度神经网络来实现程序语义的嵌入,通过对嵌入向量的比较或查询操作来实现大规模任务的处理。例如BinDNN模型,利用了CNN,LSTM(长-短期存储器)和DNN这3种类型的神经网络模型,将模型进行分层,学习函数汇编代码并判断函数是否相似;SAFE模型,将基于Word2vec模型的函数语义嵌入模型,可实现跨架构函数相似性度量。
传统检测方法所采用的匹配算法通常是固定不变的,神经网络可以针对不同任务进行再训练,应用场景更加广阔;此外,神经网络不但可以自行学习和选择特征,还可以习得人工方法很难确定的不同特征对相似度影响的权重,从而降低甚至避免人工设计和筛选特征带来的拟合。然而,目前的很多神经网格模型还是存在一些缺点,例如RNN由于梯度消失问题,难以从长序列中捕获有用信息。虽然通过设计用于长距离错误传播的特殊单元来缓解这种短存储器问题,但是仍有几个问题:1)跟踪长期依赖性的能力有限;简单地说,来自编码器的暗示所有先前单词的单个向量可能会丢失部分信息。2)由于顺序性而禁止并行计算。而且,目前针对于二进制相似性检测在语义恢复方面仍有缺陷。由于二进制函数通常由多个指令组成,因此需要比RNN或其变体更好的体系结构。
发明内容
本发明的目的在于针对目前二进制相似性检测中基于语义的检测技术存在的缺陷,提供一种基于BERT的二进制代码相似性检测方法, 采用更加平衡的指令归一化方案,并且采用BERT模型深度推断底层代码语义,在预先训练的通用模型就绪后进行代码语义推断,从而进行相似性检测。
为了实现上述目的,本发明采用的技术手段是:基于BERT的二进制代码相似性检测方法,包括:
利用预训练数据集对BERT模型进行预训练,获得预训练后的通用模型;
利用新数据集对通用模型进行重训练,获得微调模型,所述微调模型用于预测两个二进制代码是否相似;
其中,所述预训练数据集为进行归一化处理的函数语料库,所述归一化处理是指针对函数中的每一个指令,采用静态分析的方式进行如下处理:
(1)将立即数按照跳转或调用目的地、调用的值本身、或者一个引用进行归一化处理;引用包括字符串、静态分配的常量或其它数据;
(2)将寄存器按大小或者类型进行归一化处理;
(3)指针表达式或当displacement为字符串引用时,其指令遵循原始格式:base+index*scale+displacement。
进一步地,所述新数据集包含若干带有标签的归一化函数对;该标签用于标识每一个归一化函数对中的两个函数是否相同。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东大学,未经山东大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310237564.6/2.html,转载请声明来源钻瓜专利网。





