[发明专利]一种结合符号执行提高软件模糊测试效率的方法有效
| 申请号: | 201810689118.8 | 申请日: | 2018-06-28 |
| 公开(公告)号: | CN108845944B | 公开(公告)日: | 2021-10-15 |
| 发明(设计)人: | 董威;徐鲁杭;尹良泽;贾维熙;陈振邦;陈立前;王戟 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 周长清;胡君 |
| 地址: | 410073 湖南*** | 国省代码: | 湖南;43 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 结合 符号 执行 提高 软件 模糊 测试 效率 方法 | ||
1.一种结合符号执行提高软件模糊测试效率的方法,其特征在于,步骤包括:
S1.预处理:对目标程序进行包括反汇编、插桩的预处理,获取目标程序的包括汇编代码、控制流图CFG的信息;
S2.模糊测试:向目标程序输入模糊测试器生成测试用例,并检测程序是否发生异常,如果发生程序异常记录对应的测试用例;
S3.基于路径覆盖率的调度:基于模糊测试过程中的路径覆盖率构建用于调度的调度参数,计算所述步骤S2的模糊测试过程中所述调度参数,根据计算得到的所述调度参数判断模糊测试器的状态,如果处于低速状态,所述低速状态为模糊测试器无法发现有效的测试用例时,转入执行步骤S4,如果处于高速状态,所述高速状态为激发模糊测试器生成结构化或者基于magic-byte类型的输入,返回执行步骤S2,如果处于停滞状态,所述停滞状态即为阻碍态,判定已遍历目标程序的所有可达路径,退出测试;
S4.测试用例生成:识别模糊测试过程中未遍历的分支,并根据识别到的分支构建模糊测试未遍历的程序路径,对构建的程序路径使用符号执行方法生成有效测试用例以激发模糊测试器至高速状态,如果无法生成有效测试用例且模糊测试器为停滞状态,判定已遍历目标程序的所有可达路径,退出测试。
2.根据权利要求1所述的结合符号执行提高软件模糊测试效率的方法,其特征在于,所述步骤S1的具体步骤为:
S11.将程序加载至二进制程序分析框架中进行反汇编,并将二进制转化为汇编代码;
S12.根据目标程序的汇编代码,生成目标程序的控制流图以及VEX IR;
S13.对目标程序进行插桩处理,得到插桩处理后的目标程序。
3.根据权利要求1所述的结合符号执行提高软件模糊测试效率的方法,其特征在于,所述步骤S2的具体步骤为:
S21.将目标程序加载至模糊测试器当中;
S22.向目标程序输入模糊测试器生成测试用例,检测程序是否出现异常行为,如有异常行为则记录触发该异常的输入;
S23.对当前测试用例进行变异,将变异好的测试用例输入到程序当中,检测程序是否出现异常行为,如有异常行为则记录触发该异常的输入,返回执行步骤S23,直至测试完当前测试用例。
4.根据权利要求1或2或3所述的结合符号执行提高软件模糊测试效率的方法,其特征在于,所述步骤S3中判断模糊测试器的状态的具体步骤为:由模糊测试过程中路径覆盖率的变化率Pm作为所述调度参数,进行调度时计算所述变化率Pm,当Pm≥Pmax*ω时,判定模糊测试器处于高速状态,当0PmPmax*ω时,判定模糊测试器处于低速状态,当Pm=0时,判定模糊测试处于停滞状态,其中Pmax为历史Pm的峰值,ω为影响因子。
5.根据权利要求4所述的结合符号执行提高软件模糊测试效率的方法,其特征在于:所述路径覆盖率的变化率Pm具体由下式计算得到;
其中,qm、qm-1分别为m、m-1时刻的路径覆盖率,且m≥1,Δt为m、m-1时刻之间的时间差。
6.根据权利要求4所述的结合符号执行提高软件模糊测试效率的方法,其特征在于:所述计算所述变化率Pm时还包括对计算到的Pm进行平滑处理以减弱高频的波动步骤。
7.根据权利要求6所述的结合符号执行提高软件模糊测试效率的方法,其特征在于:对计算到的Pm具体按照下式进行滑动平均处理;
其中,n为正整数,且m≥2n。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810689118.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种判断软件测试阶段性完成的方法及系统
- 下一篇:应用测试优化方法及装置





