摘要:如今的大型软件开发中存在复杂性和抽象性缺陷,受到嵌入式系统时间以及空间资源有限的干扰,导致检测大型嵌入式软件缺陷的难度不断提升。而软件设计中的整型符号转换缺陷较多,该种缺陷的隐蔽性强,同其他缺陷融合,会形成内存缺陷,对程序造成严重损害。传统方法检测该种缺陷时,只能检测到缺陷的“征兆”,无法检测到缺陷的根源。基于此,本文就从大型嵌入式软件设计中的缺陷定位技术展开分析。
关键词:大型嵌入式;软件设计;缺陷定位技术
1、动态方法嵌入式软件设计中的缺陷定位技术
1.1整型符号转换缺陷
本文方法检测整型符合转换缺陷过程中,应先截获内存相关库函数,检测整型参数的符号种类,定义需要截获的内存相关库函数和潜在函数。
1.2总体设计
检测整型符号转换缺陷时,应先获取程序变量的符号种类信息,再采集引发符号冲突的指令地址,对缺陷形成的位置实时定位。设计的缺陷检测系统构建在二进制插桩框架Valgrind上,将整型符号检测转换缺陷的检测方法应用到原型工具Sconveheck的实现中。系统总体架构如图1左边所示。
图1左边中描述的系统包括Valgrind内核部分和原型工具Sconvcheck,Valgrind内核可同底层参照系统完成交互。Sconvcheck提供的功能能够完成符号转换缺陷的检测和定位。总体系统的运行流程是:将二进制代码变换成中间描述形式(VEX,IR),为分析指令的隐藏信息提供依据;在中间代码层面中,检测各条中间代码指令,采集变量存储单元中涵盖的符号种类信息;收集内存相关函数定义,得到少数参数的符号种类信息,对这些映射关系实施初始化设置;采用数据流分析各变量的符号种类信息,存储变量符号信息。后续得到新种类符号时,将其同前期获取的符号种类进行对比,如果不一致,则说明是冲突种类,存储当前指令;通过种类推导方法检索潜在符号缺陷候选集,依据存储的符号种类信息对整型符号变换缺陷代码实时定位。原型工具Sconvcheck的运行流程由信息采集、检测方案和缺陷定位三部分组成,其中的符号种类信息采集流程,如图1右边所示。
图1
1.3检测方案
基于图1右边描述的符号种类信息采集过程,能够获取包含冲突种类的单元存储单元集。将其当成潜在的符号变换缺陷候选集。还应采用检测方案对整型符号变换缺陷进行进一步辨识。整型符号转换缺陷的检测方案的流程如图2所示。
从图2可以看出,检测方案得到内存相关库函数的调用后,便得到描述内存分配长度的全部参数存储单元。如果是冲突种类,则在符号前插入检测代码,在程序运行过程中检测传递的实参是否是负数;如果不是冲突种类,则结束检测;否则,呈现运行过程中将负数反馈给冲突种类参数的现象判定成实际的符号变换缺陷。
图2
1.4缺陷定位
采集符号种类信息时既要采集变量的符号种类信息,也要在存在冲突种类信息时将当前指令地址信息存储下来。若变量被辨识成冲突种类,则用当前操作指令地址替换前期记录的地址信息,依据新指令地址信息对缺陷代码实施定位。检测方案检测到整型符号转换缺陷时,采集变量信息,并对映射表进行检测,将获取的指令地址信息当成产生缺陷的指令地址。
2、实验分析
实验采用本文方法对E?mail服务器thrownmial7.7.2实施检测,结果如图3左边所示。能够看出本文方法有效检测出了thrownmial7.7.2的中的缓冲区溢出以及整型符号转换缺陷,并对检测出的缺陷给出警告。
实验选择三种待测程序,使它们分别运行在正常状态下、Buffcheck以及本文方法中的工具Valgrind下,检测不同程序的运行效率,分析不同状态下的程序运行性能,结果如图3右边所示。
分析图3右边可得,待测程序在本文方法下的运行速率比正常运行下和其他状态下高,说明本文方法在提高程序运行效率方面具有较强的优越性和较高的性能。
图3
结束语
本文提出了基于动态方法的嵌入式软件设计中的缺陷定位技术,其采用面向二进制程序整型符号变换缺陷检测方法,对整型符号变换引起的缓冲区溢出缺陷进行准确定位。结果表明,所提方法准确检测出了整型符号转换缺陷,性能较高。
参考文献
[1]林永峰.面向安全性分析的嵌入式软件测试方法研究[J].现代电子技术,2016.
[2]常佩佩.基于代码结构信息的软件缺陷定位方法研究[J].计算机应用研究,2016.
[3]王赞.一种基于遗传算法的多缺陷定位方法[J].软件学报,2016.
论文作者:孙照鹏
论文发表刊物:《建筑学研究前沿》2018年第10期
论文发表时间:2018/9/4
标签:缺陷论文; 符号论文; 种类论文; 整型论文; 方法论文; 信息论文; 指令论文; 《建筑学研究前沿》2018年第10期论文;