论文部分内容阅读
嵌入式系统是一种专用的计算机系统,通过裁剪、结合软硬件的资源,可以满足用户各项性能指标的要求,包括功能需求、可靠性、成本、能耗、体积等等。在嵌入式系统设备中,有一种设备,用来对信号做分析、提取、变化等处理,被称为数字信号处理器(DSP—Digital Signal Processor)。现代通信的特点是信号数字化,因此,DSP在推动当代信息处理数字化方面正发挥越来越大的作用,并且随着通信技术发展,将发挥更大的作用。同时,也由于DSP在数字化、网络化方面的发展,DSP的安全性也成为一个急需解决的问题。为了解决这个问题,就需要对DSP进行软件测试。软件测试的方法有很多种,程序分析是其中很重要的一种,它可以有效的提高软件可信性质。本文采用的符号执行,就是一种精确的程序分析技术,因为可行性好、无误报、应用范围广等优点,得到了广泛的关注和应用。但是,目前的符号执行技术和工具在对DSP程序分析的效果和效率上,都存在很多不足。主要原因有两个,一个是由于DSP需要与外界进行数据的实时交换,所以存在着一个随机触发的中断,中断的发生,会产生很多一般的程序分析难以发现的漏洞,目前的符号执行工具都没能很好的解决这个问题。第二个,则是由于DSP程序的很多问题都是逻辑性的,而一般的符号执行技术仅仅能发现程序的运行错误,而不能发现DSP的逻辑性错误。针对以上两个问题,本文提出了对DSP中断的处理办法以及变量的定点监测技术。基于符号执行技术,对中断函数进行插入,实现了中断函数随机触发的特性,并且对中断函数的插入密度进行控制,提高程序分析的效率。在此基础上,根据用户的指定,可以对相同路径条件下,不同路径中的变量进行检测,将可能存在缺陷的点进行记录报出。本文在KLEE中实现了上述两种算法,并对实际程序进行了实验。实验结果表明,相比现有的符号执行技术,本文提出的两种方法,可以更有效的发现DSP程序中存在的缺陷。