PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
2020-08-27尹小康刘鎏刘龙刘胜利
网络与信息安全学报 2020年4期
关键词:分析
尹小康,刘鎏,刘龙,刘胜利
PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
尹小康,刘鎏,刘龙,刘胜利
(数学工程与先进计算国家重点实验室,河南 郑州 450001)
函数参数个数的识别有助于函数原型的恢复,是进行数据流分析以及其他安全分析的基础。为了提高对函数参数个数识别的准确率,提出一种依据函数调用关系的投票机制来确定函数参数个数的算法—— Findargs。Findargs从PPC和MIPS指令集的函数调用特点出发,利用函数调用关系和参数传递分析,识别函数参数的个数,为函数原型的恢复提供帮助。为了评估Findargs的识别效果,选取大型的二进制文件进行了测试,并与radare2进行了对比。实验结果表明,Findargs具有更高的准确率。对于PPC指令集,其准确率达到90.3%;对于MIPS指令集,其准确率为86%。
静态分析;函数调用分析;参数个数识别;投票机制
1 引言
二进制分析在安全研究中具有重大意义,在安全分析中的应用主要有:二进制代码审计[1]、控制流完整性分析[2]、污点分析[3-4]、符号执行[5-6]、漏洞修复[7]、代码重用[8]、漏洞挖掘[9-11]等。在高级语言中,函数名、函数的参数个数、参数类型、函数的返回值等信息能够有效帮助理解函数的功能。源代码经过编译器编译丢失了如高级语言C/C++中的数据类型、数据结构、语义以及控制结构等信息,这给研究者分析二进制代码造成了诸多障碍。因此,如何从二进制代码中恢复出丢失的信息成为二进制分析的关键。对二进制程序进行逆向分析的第一步是对函数的识别,确定函数的起始位置、结束位置、函数的调用方式,以及函数的参数个数。……
登录APP查看全文
