精简指令集下大型二进制固件参数个数识别方法技术

技术编号:26689370 阅读:34 留言:0更新日期:2020-12-12 02:38
本发明专利技术公开了一种精简指令集下大型二进制固件参数个数识别方法,该方法对整个大型二进制固件进行静态分析,首先提取函数的调用关系,依据函数的调用关系和参数传递规则设计基于投票的机制的函数参数个数识别方法,对函数的参数个数进行识别,方便后续的函数原型的恢复。本发明专利技术通过静态分析整个二进制固件的可执行代码,获取全局的函数调用关系,为每个函数调用进行解析获取子函数的参数个数,并依据投票机制获得最为准确的函数参数个数,避免了编译器优化的影响,提高了函数参数个数识别的准确率并且具有较好的适用性。

【技术实现步骤摘要】
精简指令集下大型二进制固件参数个数识别方法
本专利技术属于二进制固件参数分析
,具体涉及一种精简指令集下大型二进制固件参数个数识别方法。
技术介绍
二进制分析在安全研究中具有重大意义,在安全分析中的应用主要有:二进制代码审计、控制流完整性分析、污点分析、符号执行、漏洞修复、代码重用、漏洞挖掘等。在高级语言中,函数名、函数的参数个数、参数类型、函数的返回值等信息能够有效帮助理解函数的功能。源代码经过编译器编译丢失了如高级语言C/C++中的数据类型、数据结构、语义以及控制结构等信息,这给研究者分析二进制代码造成了诸多障碍。因此如何从二进制代码中恢复出丢失的信息成为二进制分析的关键。对二进制程序进行逆向分析的关键是对函数的识别,确定函数的起始位置、结束位置、函数的调用方式,以及函数的参数等信息。二进制代码逆向分析的准确率影响后续安全分析的正确性。函数参数个数的准确识别是进行函数原型识别的基础,是进行数据流分析以及其他安全分析的前提。由于精简二进制程序中的符号表等信息被移除,无法直接获得函数入口等相关信息,这就增加了对二进制可执行文件进行本文档来自技高网...

【技术保护点】
1.一种精简指令集下大型二进制固件参数个数识别方法,其特征在于:包括如下步骤:/nS1,二进制代码的提取和反汇编/n首先根据可执行文件头信息提取二进制可执行指令,然后通过反汇编工具将提取的二进制可执行指令转换成汇编代码;/nS2,函数边界的识别/n然后,对获得的汇编代码进行静态分析,并获取函数的边界信息,所述边界信息包括起始地址和结束地址,用于函数调用关系的分析;/nS3,二进制函数调用关系的提取/n并结合函数的边界信息,采用线性扫描对整个代码段进行分析,并获取函数的调用关系;/nS4,函数参数个数识别/n最后,对于获得的函数调用关系进行参数的识别,在汇编代码中提取被调用函数所有的父函数代码,...

【技术特征摘要】
1.一种精简指令集下大型二进制固件参数个数识别方法,其特征在于:包括如下步骤:
S1,二进制代码的提取和反汇编
首先根据可执行文件头信息提取二进制可执行指令,然后通过反汇编工具将提取的二进制可执行指令转换成汇编代码;
S2,函数边界的识别
然后,对获得的汇编代码进行静态分析,并获取函数的边界信息,所述边界信息包括起始地址和结束地址,用于函数调用关系的分析;
S3,二进制函数调用关系的提取
并结合函数的边界信息,采用线性扫描对整个代码段进行分析,并获取函数的调用关系;
S4,函数参数个数识别
最后,对于获得的函数调用关系进行参数的识别,在汇编代码中提取被调用函数所有的父函数代码,从每个父函数代码中提取调用该函数时的参数传递代码序列,对参数传递代码序列进行分析,根据对寄存器和栈的使用情况进行分析,获得参数的个数。


2.根据权利要求1所述的精简指令集下大型二进制固件参数个数识别方法,其特征在于:获取边界信息的方式为:首先获得的汇编代码进行静态分析,并根据函数的分支结构特征以及返回特征对整个汇编代码进行线性扫描,生成函数的边界信息。


3.根据权利要求1所述的精简指令集下大型二进制固件参数个数识别方法,其特征在于:在s3中,采用如下方法获取函数的调用关系:在每次解析函数调用关系时,将整个函数的可执行代码取出进行解析,通过解析生成格式为{函数地址:子程序1,子程序2,子程序3,…,子程序m}的形式,再对所有的函数分析完成后,将格式转换为{子程序:调用者1,调用者2,调用者3,…,调用者n}的形式,用于后续的函数参数的识别。
...

【专利技术属性】
技术研发人员:尹小康蔡瑞杰肖睿卿何杰朱肖雅胡安详刘胜利
申请(专利权)人:中国人民解放军战略支援部队信息工程大学
类型:发明
国别省市:河南;41

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

1