论文部分内容阅读
随着微时代的到来,嵌入式软件发展受到广泛的关注,但软件缺陷问题也越来越凸显。软件缺陷问题可能会给社会带来经济等各方面的损失,而且大部分的嵌入式软件都有高可靠性和高安全性的要求,因此,需要针对嵌入式软件进行缺陷检测。目前,市场上的大部分商业软件以二进制代码的形式出现,如何判定二进制程序中是否具有安全缺陷是一个亟待解决的问题。当前X86平台下的二进制代码缺陷检测系统相对成熟,而基于嵌入式平台(如ARM平台)缺陷检测系统还不够成熟。反汇编技术是基于二进制代码的嵌入式软件缺陷检测工作中的重要一环,但专门针对嵌入式软件缺陷检测的反汇编算法和相关技术较少。另一方面,与动态分析相比,静态分析能够较全面的覆盖系统代码,为动态分析提供相应的程序结构,减少了一定的工作量。本文利用反汇编技术,开展了基于二进制代码的嵌入式软件缺陷静态检测研究,主要研究点和创新点在于:1、总结分析了嵌入式软件缺陷检测方法,对现有的缺陷检测流程进行分析总结,分析了ARM的编码特点,详细阐述了嵌入式软件缺陷静态检测方法,包括反汇编、数据流分析、控制流分析等。2、设计了一个基于二进制代码的嵌入式软件缺陷检测系统。定义和设计了系统的功能模块,阐述了各个模块在该系统的作用和相互之间的联系,根据模块之间的联系提出了该系统的体系结构。3、针对缺陷检测需要解决的主要问题,设计了反汇编实现的总体方案,实现了静态指令分析模块中的反汇编过程。提出了一种递归—线性扫描的反汇编算法,然后,通过实验验证了算法的正确性和结果的可读性,最后对反汇编代码覆盖率做了比较分析。4、利用反汇编技术设计了基于BinNavi平台的缺陷检测模型。在反汇编的基础上,借助BinNavi平台和Postgres数据库平台的支撑,设计并实现了一个新的缺陷检测模型,并以越界非法访问为例证明了该检测模型和缺陷检测算法的有效性。