论文部分内容阅读
随着计算机软件产业的发展,软件的规模日益增大,软件的质量也受到人们越来越多的关注,往往一个细微的漏洞都有可能被恶意攻击者利用,给用户造成难以估计的损失。因此运用测试技术,定位软件中的缺陷、漏洞,帮助开发者修改程序中的漏洞显得意义非凡。软件中隐含的缺陷数目与可靠性直接相关。基于动态函数调用序列的软件缺陷定位能够很好地与自动化测试相结合,有较强的现实意义。通过多次程序执行(包括正确执行和错误执行),利用面向方面编程框架(如AspectJ)获取函数调用轨迹(包括函数调用结构以及函数调用中的现场信息)。然后通过挖掘、分析软件动态运行中的函数调用轨迹形成的函数调用序列,计算函数中存在缺陷的可能性,提出一种基于函数调用序列的漏洞定位方法,并通过实例验证了此方法的有效性。函数调用序列既体现了函数调用的时间先后次序,又包含了函数调用过程中的现场信息(包括函数调用中传递的参数、隐含传递的参数以及返回值等),同时运用决策树构造算法,信息增益率越大的列对应的函数说明该函数对程序是否正确执行的影响程度越大,从而说明此函数出现漏洞的可能性越大。针对基于函数调用序列的软件缺陷定位方法,一个原型系统得以设计和实现,并给出系统中各功能模块和详细设计。实验环节中,通过在weka开源软件中注入缺陷来验证方法的可行性,测试数据来源于uci机器学习库,实验表明此方法是一种有效的定位软件缺陷的方法,使缺陷定位更精确。