发明名称 基于神经网络的指令集无关的二进制代码相似性检测方法
摘要 本发明涉及一种基于神经网络的指令集无关的二进制代码相似性检测方法,其主要步骤包括:对二进制文件进行逆向分析,提取函数的调用关系特征、字符串特征、栈空间特征、代码规模特征、路径序列特征、路径基本特征,度序列特征、度基本特征,图规模特征等9个方面共24个特征。基于特征的表现形式,采用3种相似度计算方法计算待比较的两个函数的24个特征的相似程度,作为集成神经网络分类器的输入向量,获得两个函数整体相似度的预测值并进行排序。本发明与现有的技术比,不依赖特定的指令集,可以实现不同指令集的二进制文件的相似度检测,准确率高,技术简单,易于推广。
申请公布号 CN105868108A 申请公布日期 2016.08.17
申请号 CN201610182075.5 申请日期 2016.03.28
申请人 中国科学院信息工程研究所 发明人 石志强;刘中金;常青;陈昱;孙利民;朱红松;王猛涛
分类号 G06F11/36(2006.01)I;G06K9/62(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 北京君尚知识产权代理事务所(普通合伙) 11200 代理人 邱晓锋
主权项 一种基于神经网络的指令集无关的二进制代码相似性检测方法,其特征在于,包括以下步骤:1)选择同一份源码,选择不同的编译器和不同的优化选项,针对不同的架构进行编译,获得二进制可执行文件;2)对二进制可执行文件进行逆向分析,提取每一个函数的调用关系特征、字符串特征、栈空间特征、代码规模特征、路径序列特征、路径基本特征,度序列特征、度基本特征,图规模特征共9个方面的特征;3)基于步骤2)提取的9个方面的特征,采用相似度计算方法计算待比较函数的各特征的相似度;4)将步骤3)提取的相似度作为神经网络的输入向量;如果两个函数名称相同,则标签作为正样本;如果两个函数名称不同,则标签作为负样本;5)提取若干正样本和负样本以构造训练样本集,并初始化若干个神经网络,针对每个神经网络构造独立同分布的训练样本子集进行训练,根据预测结果调整参数直至预测结果符合要求,此时神经网络分类器训练完毕;6)将已知的函数称为本地函数,将待检测的函数称为目标函数,根据需求构建本地函数库和目标函数库;对每个本地函数按步骤2)提取9个方面的特征,构造过滤器;对每个目标函数按步骤2)提取9个方面的特征;对每个本地函数,用其对应的过滤器对目标函数库进行过滤,构建该本地函数的候选集;按步骤3)计算每个本地函数与其对应候选集内每个目标函数的相似度值,作为测试样本;7)将测试样本输入神经网络分类器中,将每个神经网络分类器输出的预测值取加权平均作为整体相似度预测值并进行排序。
地址 100093 北京市海淀区闵庄路甲89号