一种二进制文件中混合在指令中的数据的识别方法及装置制造方法及图纸

技术编号:29834789 阅读:18 留言:0更新日期:2021-08-27 14:24
本发明专利技术提供一种二进制文件中混合在指令中的数据的识别方法及装置,涉及二进制技术领域,包括以下步骤:获取待执行的二进制文件;执行所述二进制文件,探索二进制文件的路径,当执行的二进制文件的代码片段访问原始的代码区域时,将访问原始的代码区域的所述代码片段确定为混合在指令中的数据;将所述混合在指令中的数据和二进制文件的原始数据段作为重写后二进制文件的数据段,本发明专利技术实现了二进制重写技术的准确性和完全性。

【技术实现步骤摘要】
一种二进制文件中混合在指令中的数据的识别方法及装置
本专利技术涉及二进制
,尤其涉及一种二进制文件中混合在指令中的数据的识别方法及装置
技术介绍
二进制重写技术是指在程序源码缺失的情况下,将编译好的二进制文件提升到更高级的编程语言如汇编语言、中间表示语言(intermediaterepresentation,IR),并对其进行二次开发、优化和利用(包括二进制强化、Profiling、插桩和添加安全策略),并再次编译成二进制可执行文件的技术。由于二进制文件中的数据和指令没有明显界线,有些二进制文件中为了指令对齐会插入一些padding;编译器为了性能优化或者人为因素也会在二进制指令中混入数据。因此,能否有效的区分二进制文件中的指令和数据是二进制重写技术的难点。此外,由于原始程序在编译成二进制后,原程序语言中的数据类型和符号标签等信息都会被舍弃,这使得区分指令和数据更变得异常艰难。现有的二进制重写技术并不能有效的区分混合的数据和指令,部分二进制重写技术仍然需要完全拷贝原始代码作为重写后二进制文件的执行参考。
技术实现思路
本专利技术提供一种二进制文件中混合在指令中的数据的识别方法及装置,用以解决现有技术中二进制重写技术并不能有效的区分数据和指令的缺陷,实现了二进制重写技术的准确性和完全性。本专利技术提供一种二进制文件中混合在指令中的数据的识别方法,包括以下步骤:获取待执行的二进制文件;执行所述二进制文件,探索二进制文件的路径,当执行的二进制文件的代码片段访问原始的代码区域时,将访问原始的代码区域的所述代码片段确定为混合在指令中的数据;将所述混合在指令中的数据和二进制文件的原始数据段作为重写二进制文件的数据段。根据本专利技术提供的一种二进制文件中混合在指令中的数据的识别方法,所述混合在指令中的数据包括两类,分别为混入函数内的数据和混入函数间的数据,所述混入函数内的数据位于函数内部,并且在函数执行时被访问,所述混入函数间的数据存在于两个函数间,用于指令地址的对齐。根据本专利技术提供的一种二进制文件中混合在指令中的数据的识别方法,探索二进制文件的路径,具体包括以下步骤:从二进制文件的入口地址开始探索二进制文件的路径,执行二进制文件的代码片段;当遇到二进制文件的分支时,记录未执行的分支的地址并获取所述未执行的分支的地址的状态;当遇到已经执行过的指令地址或者非法的跳转地址时,停止当前的路径探索,并在当前路径执行终止后恢复所述状态,从未执行的分支的地址开始执行二进制文件的代码片段;其中,状态为二进制文件当前运行时状态;当一条路径中所有分支遍历后,获取二进制文件的非完全转移指令的指令地址;其中,完全转移指令为转移控制流到两个不同的方向的控制流转移指令,并且非完全转移指令在一条路径的执行过程中被识别;在第一次遍历所有路径后,选取一个未被选取的非完全转移指令的地址作为下一条路径的入口地址,并从下一条路径的入口地址继续执行路径探索;遍历非完全转移指令的地址,以完成对二进制文件的路径的全覆盖。根据本专利技术提供的一种二进制文件中混合在指令中的数据的识别方法,选取一个未被选取的非完全转移指令的地址作为下一条路径的入口地址时,若从代码块的入口地址解码出的指令中存在无法匹配Def操作的Def_Mem操作,则认为该入口地址是一个数据地址,De_Mem表示一条指令的语义中具有地址解引用操作。根据本专利技术提供的一种二进制文件中混合在指令中的数据的识别方法,当执行的二进制文件的代码片段访问原始的代码区域时,将访问原始的代码区域的所述代码片段确定为混合在指令中的数据,具体包括以下步骤:监控代码片段的执行行为,若某一指令的执行行为尝试访问代码段的内存地址,则确定执行的代码片段访问原始的代码区域,并将访问原始的代码区域的代码片段确定为混合在指令中的数据;根据当前的已经探索的代码块的内存地址范围,将被访问的地址确定为混合在指令中的数据的地址,以确定混合在指令中的数据的地址的上界和下界。根据本专利技术提供的一种二进制文件中混合在指令中的数据的识别方法,将所述混合在指令中的数据和二进制文件的原始数据段作为重写后二进制文件的数据段之后还包括以下步骤:重写二进制文件。根据本专利技术提供的一种二进制文件中混合在指令中的数据的识别方法,重写二进制文件,具体包括以下步骤:将执行过的代码片段转换为中间表示语言;在遍历完所有非完全转移地址后,根据所述重写二进制文件的数据段,转换所述中间表示语言为重写二进制文件的代码片段,将二进制文件重写为重写二进制文件。本专利技术还提供一种二进制文件中混合在指令中的数据的识别装置,包括:二进制文件获取模块,用于获取待执行的二进制文件;执行模块,用于执行所述二进制文件,探索二进制文件的路径,当执行的二进制文件的代码片段访问原始的代码区域时,将访问原始的代码区域的所述代码片段确定为混合在指令中的数据;数据段确定模块,用于将所述混合在指令中的数据和二进制文件的原始数据段作为重写二进制文件的数据段。数据段确定模块本专利技术还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述一种二进制文件中混合在指令中的数据的识别方法的步骤。本专利技术还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述二进制文件中混合在指令中的数据的识别方法的步骤。本专利技术提供的二进制文件中混合在指令中的数据的识别方法及装置,通过探索二进制文件的路径,遍历路径,在路径探索过程中根据指令执行的效果是否访问二进制文件的代码区域,确定是否为混合在指令中的数据的地址,再将执行过的代码片段转换为IR用于代码分析,在遍历完所有非完全地址为入口的路径后,转换中间表示语言为重写二进制文件的代码片段,并将混合在指令中的数据和原始的二进制文件的原始数据段作为所述重写后二进制文件的数据段,可以有效的区分混合在二进制文件指令中的数据,并可以精准的识别二进制文件中所有的合法指令。同时可以满足所有的开发人员对二进制进行二次开发利用的需求,本专利技术提供的二进制文件中混合在指令中的数据的识别方法及装置将指令转换为架构无关的IR,降低了二进制分析技术的难度。在实验中,本专利技术提供的二进制文件中混合在指令中的数据的识别方法及装置构建了一个近似理想的参照环境,在此环境中本专利技术提供的二进制文件中混合在指令中的数据的识别方法及装置可以实现完全的识别二进制程序所有的合法指令和数据,并且不需要原始代码完全拷贝作为数据参考,并且产生的非法指令率仅为0.02%。与同类型二进制重写技术相比通过识别出混合的数据,大大减少了解码二进制文件产生的非法指令的数量。本专利技术提供的二进制文件中混合在指令中的数据的识别方法及装置分别执行重写后的程序和原始的程序,并且采用默认的参数配置。试验结果表明重写后的程序输出的结果和原始版本程序输出的结果相同,并本文档来自技高网...

【技术保护点】
1.一种二进制文件中混合在指令中的数据的识别方法,其特征在于,包括以下步骤:/n获取待执行的二进制文件;/n执行所述二进制文件,探索二进制文件的路径,当执行的二进制文件的代码片段访问原始的代码区域时,将访问原始的代码区域的所述代码片段确定为混合在指令中的数据;/n将所述混合在指令中的数据和二进制文件的原始数据段作为重写后二进制文件的数据段。/n

【技术特征摘要】
1.一种二进制文件中混合在指令中的数据的识别方法,其特征在于,包括以下步骤:
获取待执行的二进制文件;
执行所述二进制文件,探索二进制文件的路径,当执行的二进制文件的代码片段访问原始的代码区域时,将访问原始的代码区域的所述代码片段确定为混合在指令中的数据;
将所述混合在指令中的数据和二进制文件的原始数据段作为重写后二进制文件的数据段。


2.根据权利要求1所述的二进制文件中混合在指令中的数据的识别方法,其特征在于,所述混合在指令中的数据包括两类,分别为混入函数内的数据和混入函数间的数据,所述混入函数内的数据位于函数内部,并且在函数执行时被访问,所述混入函数间的数据存在于两个函数间,用于指令地址的对齐。


3.根据权利要求2所述的二进制文件中混合在指令中的数据的识别方法,其特征在于,探索二进制文件的路径,具体包括以下步骤:
从二进制文件的入口地址开始探索二进制文件的路径,执行二进制文件的代码片段;
当遇到二进制文件的分支时,记录未执行的分支的地址并获取所述未执行的分支的地址的状态;
当遇到已经执行过的指令地址或者非法的跳转地址时,停止当前的路径探索,并在当前路径执行终止后恢复所述状态,从未执行的分支的地址开始执行二进制文件的代码片段;其中,状态为二进制文件当前运行时状态;
当一条路径中所有分支遍历后,获取二进制文件的非完全转移指令的地址;其中,完全转移指令为转移控制流到两个不同的方向的控制流转移指令,并且非完全转移指令在一条路径的执行过程中被识别;
在第一次遍历所有路径后,选取一个未被选取的非完全转移指令的地址作为下一条路径的入口地址,并从下一条路径的入口地址继续执行路径探索;
遍历非完全转移指令的地址,以完成对二进制文件的路径的全覆盖。


4.根据权利要求3所述的二进制文件中混合在指令中的数据的识别方法,其特征在于,选取一个未被选取的非完全转移指令的地址作为下一条路径的入口地址时,若从代码块的入口地址解码出的指令中存在无法匹配Def操作的Def_Mem操作,则认为该入口地址是一个数据地址,De_Mem表示一条指令的语义中具有地址解引用操作。


5.根据权利要...

【专利技术属性】
技术研发人员:陈李维田力楠史岗孟丹
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京;11

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

1