【技术实现步骤摘要】
代码匹配方法、装置、电子设备和存储介质
[0001]本申请涉及人工智能
,尤其涉及一种代码匹配方法、装置、电子设备和存储介质。
技术介绍
[0002]逆向分析是软件安全领域中的重要任务之一,在逆向分析过程中,需要对程序代码进行分析,如分析程序机器语言的具体含义,目前通常采用逆向分析工具将程序机器语言转换为伪代码,但伪代码缺少变量名等关键信息,可读性差,因此更希望直接得到程序机器语言对应的源代码,以获取详细的代码信息。
[0003]相关技术中通常提取二进制代码等机器语言和源代码中具有抗编译优化特性的代码特征串,如字符串、导出函数、字符串数组和全局常量数组等,然后基于代码特征串进行二进制代码和源代码间的匹配。然而,由于不同伪代码或源代码间广泛存在特征串复用,以及对作用一致的高度语义化建模采用不同编写方式等问题,代码特征串匹配方法的误匹配率高,准确性较差,无法满足逆向分析要求。因此,需提供一种改进的代码匹配方案,以提高匹配准确率和逆行分析结果的可靠性。
技术实现思路
[0004]本申请提供了一种代码匹配方法、装置、设备和存储介质,可以显著提高代码匹配的准确率和可靠性。
[0005]一方面,本申请提供了一种代码匹配方法,所述方法包括:
[0006]获取待识别程序对应的待识别伪代码;
[0007]基于所述待识别伪代码在源代码特征库中进行相似代码搜索,得到所述待识别伪代码对应的多条候选源代码;
[0008]将所述多条候选源代码分别与所述待识别伪代码进行组合,得到多个代 ...
【技术保护点】
【技术特征摘要】
1.一种代码匹配方法,其特征在于,所述方法包括:获取待识别程序对应的待识别伪代码;基于所述待识别伪代码在源代码特征库中进行相似代码搜索,得到所述待识别伪代码对应的多条候选源代码;将所述多条候选源代码分别与所述待识别伪代码进行组合,得到多个代码对;对所述多个代码对进行分类识别处理,得到分类识别结果,所述分类识别结果表征所述多个代码对中的候选源代码与所述待识别伪代码间的同源概率;基于所述分类识别结果从所述多条候选源代码中确定出与所述待识别程序匹配的目标源代码。2.根据权利要求1所述的方法,其特征在于,所述基于所述待识别伪代码在源代码特征库中进行相似代码搜索,得到所述待识别伪代码对应的多条候选源代码包括:基于至少一种代码召回模型分别对所述待识别伪代码进行特征提取,得到至少一种伪代码特征;基于所述至少一种伪代码特征在所述源代码特征库中进行相似代码搜索,得到所述至少一种伪代码特征对应的初始源代码;对所述至少一种伪代码特征对应的初始源代码进行去重处理,得到所述多条候选源代码。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:获取召回训练样本集,所述召回训练样本集包括样本伪代码,以及所述样伪代码对应的正样本源代码和负样本源代码;以所述样本伪代码,以及所述样伪代码对应的正样本源代码和负样本源代码作为第一预训练模型的输入,基于自监督对比学习方法对所述第一预训练模型进行正负样本源代码分类的约束训练,得到所述代码召回模型。4.根据权利要求3所述的方法,其特征在于,所述获取召回训练样本集包括:获取样本代码集,所述样本代码集包括样本源代码,以及与所述样本源代码匹配的至少一条样本伪代码,其中,与所述样本源代码匹配的至少一条样本伪代码对应至少一种编译类型的机器语言文本;以与所述至少一条样本伪代码匹配的样本源代码作为所述正样本源代码,以与所述至少一条样本伪代码不匹配的样本源代码作为所述负样本源代码,对所述样本代码集进行三元组采样,得到多个样本三元组;基于所述多个样本三元组构建所述召回训练样本集。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取精排训练样本集,所述精排训练样本集包括正样本代码对、负样本代码对和对应的样本对标签;以所述正样本代码对和所述负样本代码对作为第二预训练模型的输入,以所述样本对标签作为期望输出,对所述第二预训练模型进行正负样本对分类的约束训练,得到代码精排模型;所述对所述多个代码对进行分类识别处理,得到分类识别结果包括:基于代码精排模型对所述多个代码对进行分类识别处理,得到所述分类识别结果。
6.根据权利要求5所述的方法,其特征在于,所述获取精排训练样本集包括:基于代码召回模型和样本代码集中的每一样本源代码对所述样本代码集中的样本伪代码进行召回,得到所述每一样本源代码对应的参考伪代码集;将所述每一样本源代码分别与所述参考伪代码集中的样本伪代码进行组合,得到正样本代码对和负样本代码对;基于所述正样本代码对和所述负样本代码对构建所述精排训练样本集。7.根据权利要求2
‑
6中任一项所...
【专利技术属性】
技术研发人员:屠子睿,
申请(专利权)人:深圳市腾讯网域计算机网络有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。