The invention discloses a method for comparison of SimHash algorithm based on binary file, which comprises the following steps: S1: IDA Pro by extended function, the binary file write plug-ins for information extraction; the information including a binary file compilation instruction sequence, control flow graph, flow graph information; S2: pretreatment of to extract binary file information; S3: after pretreatment of the binary file information by keywords definition; S4: the extraction of keywords and keyword weighting; S5: weight extracted by the SimHash fingerprint calculation function, and storage of fingerprint; S6: similar results after the query based on the accurate matching algorithm based on classical structural matching. The invention has the advantages of good versatility, high efficiency and high accuracy.
【技术实现步骤摘要】
一种基于SimHash算法的二进制文件快速比较方法
本专利技术主要涉及到计算机系统安全
,特指一种基于SimHash算法的二进制文件快速比较方法。
技术介绍
随着计算机技术的飞速发展和互联网的广泛应用,软件自身的规模也随着功能的多样性而变得越来越大。日趋丰富的功能在给用户带来良好体验的同时,也带来了诸多安全问题。同时,一定规模的软件难免会使用第三方的组件,而第三方的组件往往缺乏源代码:如微软系统的动态链接库文件,欲对这样的软件进行代码审查,逆向工程手段几乎是唯一的选择。在逆向工程中,静态分析的主要任务是全部或部分恢复二进制文件中被完全抹除的函数和数据信息,为后续版本的系统分析、设备攻击和控制利用的关键点定位等工作奠定基础。但由于当前软件版本众多、规模庞大,使这项工作越来越无法依靠人力来完成。因此自动化逆向需求应运而生。在这其中所用到的主要方法就是二进制文件的比对技术。目前,常用的二进制文件比对方法大致有四种,分别是基于源文件的二进制字节内容比较、基于源文件反汇编后的汇编指令比较、基于汇编指令的相似性图形比较和基于汇编指令的结构化图形比较。这几种方法按照先后顺序不断克服前面方法存在的缺陷,但对于一些大型复杂的二进制文件而言,这些方法仍存在着不足。现有的二进制比较方法中,除直接比较二进制内容的方法外,大都采用了:提取特征,遍历函数集合寻找匹配函数,迭代修正匹配结果的三步走流程。对于两个二进制文件A和B。假设N(A)表示A中函数的个数,N(B)表示B中函数的个数,t表示两个特征签名比较所需要的时间,n表示循环迭代次数。则该算法流程的时间复杂度大致为O(n* ...
【技术保护点】
一种基于SimHash算法的二进制文件比较方法,其特征在于,步骤为:S1:利用IDA Pro的扩展功能,编写插件对二进制文件进行信息提取;所述信息包括二进制文件的汇编指令序列、控制流图、调用流图信息;S2:对提取到的二进制文件信息进行预处理;S3:对预处理过后的二进制文件信息进行关键字定义;S4:对提取到的关键字进行权重衡量;S5:利用提取到的关键字及其权重,计算函数的SimHash指纹特征,并对指纹特征进行存储;S6:基于查询后的相似结果,再采用基于结构化匹配的经典算法进行精确匹配。
【技术特征摘要】
1.一种基于SimHash算法的二进制文件比较方法,其特征在于,步骤为:S1:利用IDAPro的扩展功能,编写插件对二进制文件进行信息提取;所述信息包括二进制文件的汇编指令序列、控制流图、调用流图信息;S2:对提取到的二进制文件信息进行预处理;S3:对预处理过后的二进制文件信息进行关键字定义;S4:对提取到的关键字进行权重衡量;S5:利用提取到的关键字及其权重,计算函数的SimHash指纹特征,并对指纹特征进行存储;S6:基于查询后的相似结果,再采用基于结构化匹配的经典算法进行精确匹配。2.根据权利要求1所述的基于SimHash算法的二进制文件比较方法,其特征在于,在步骤S3中,对关键字的定义考虑:单个指令、基本块、基本路径;取单个指令的操作码和操作数作为关键字,用SPP算法计算每个基本块的SPP值,基本路径的SPP值作为关键字。3.根据权利要求1所述的基于SimHash算法的二进制文件比较方法,其特征在于,在步骤S4中,关键字重要性程度为:基本路径>基本块>单个指令;对于单个指令而言,其操作码和操作数的权重为1;于基本块而言,其权重为其SPP值;对于基本路径而言,其权重为该路径所经过的指令数目。4.根据权利要求1或2或3所述的基于SimHash算法的二进制文件比较方法,其特征在于,在步骤S3的详细流程为:S301:对控制流图进行分割块合并;S302:对指令序列进行寄存器模糊化处理;S303:对指令序列中的地址信息进行重定向。5.根据权利要求4所述的基于SimHash算法的二进制文件比较方法,其特征在于,在步骤S301中,CFG中当一个基本块只有一个子块,且该子块也只有一个父块时,这两个基本块就被定义为分割块;假设函数F中所有基本块的集合为B,p(a)为CFG中基本块a的父节点的集合,c(a)为CFG中基本块a的子节点的集合,e(a,b)为CFG中以a为起点,b为终点的一条边,流程为:i.遍历集合B中的基本块;如果已遍历完,则跳转到步骤v;否则,从集合B中取基本块b,执行步骤ii;ii.如果基本块b的子节点集合c(b)的大小为1,执行步骤iii,否则返回i;iii.令a=c(b),如果基本块a的父节点集合p(a)的大小为1,执行步骤iv,否则返回i;iv.将b和a合并为新的基本块c;同时,移除边e(b,a),{e(x,b)|x∈p(b)}和{e(a,x)|x∈c(...
【专利技术属性】
技术研发人员:唐勇,俞昕,王宝生,王毅,喻波,解炜,李根,
申请(专利权)人:中国人民解放军国防科学技术大学,
类型:发明
国别省市:湖南,43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。