论文部分内容阅读
主动发掘并分析软件安全漏洞,对网络攻防具有重要的意义,软件缺陷分析工作日益重要。基于二进制程序的软件缺陷分析方法因其具有普遍适用性,具有重要意义。符号执行技术作为一种精确的软件缺陷分析检测方法成为当前研究的热点。但由于符号执行技术进行路径敏感的遍历式检测,会出现较为严重的“路径组合爆炸”问题,因而缓解路径爆炸成为该技术实用化的一个重要方面。软件程序中的路径数量往往非常庞大,对程序的每一条路径都进行测试是不现实的,有时也是没有必要的。有时可能更关心程序中某段语句的执行状态,此时仅关心使程序运行到该目标语句的程序执行路径。为此,本文提出了覆盖目标的测试数据自动生成方法,生成的测试数据覆盖程序执行路径中通过目标语句的所有路径。与进行路径敏感的遍历式检测相比,进行重点路径的分析检测使得对程序的检测有了选择性。覆盖目标的测试数据自动生成方法使有重点有选择的程序缺陷分析检测成为可能。本测试数据生成方法基于二进制程序,不依赖于源码。它通过回溯路径的方法自动获取可达目标语句的程序路径,并通过路径引导的方法自动为获得的路径寻求相应的测试数据。路径引导是一种全新的路径测试数据生成方法,它基于程序的实际动态执行,并将符号执行静态技术结合到实际执行中。采用路径引导的方法可以极大限度的降低生成路径测试数据所需要的运行反馈次数,与已有的路径测试数据生成方法相比,所需要的运行次数大大的降低,从而极大的提高了生成测试数据的效率。