发明名称 | 一种动态的二进制代码测试用例生成方法 | ||
摘要 | 本发明公开了一种动态的二进制代码测试用例生成方法。实现动态的二进制插装工具,可收集二进制代码执行过程中,寄存器、内存、线程、系统调用、库加载等动态上下文信息,将此类信息传送到二进制代码翻译组件中,转化为一种中间语言,并在此中间语言上进行符号执行,传播符号输入,收集依赖于输入的路径约束。然后把此路径约束输入到路径生成组件中,提出一种新的同级分支路径变异算法及策略,在每次符号执行后尽可能多地生成新的路径约束,再使用定理证明器来求解新的路径约束,得到满足该路径约束的新输入,把新输入传送给二进制代码进行再一次具体执行,不断循环从新的执行中得到新的路径约束,生成新的输入,从而提高二进制代码覆盖率。 | ||
申请公布号 | CN102799529A | 申请公布日期 | 2012.11.28 |
申请号 | CN201210243495.1 | 申请日期 | 2012.07.13 |
申请人 | 北京航空航天大学 | 发明人 | 李舟军;马金鑫;忽朝俭;章张锴 |
分类号 | G06F11/36(2006.01)I | 主分类号 | G06F11/36(2006.01)I |
代理机构 | 北京慧泉知识产权代理有限公司 11232 | 代理人 | 王顺荣;唐爱华 |
主权项 | 一种动态的二进制代码测试用例生成方法,其特征在于:该方法的具体步骤如下:步骤A.实现二进制代码运行时的动态插装框架,观察二进制的执行过程;步骤B.根据动态插装框架收集到的动态运行时信息,如指令、寄存器、内存访问信息,把二进制代码翻译成中间语言;步骤C.根据动态插装框架中记录的输入点信息,将输入点作为符号,传播与输入点相关的执行过程,在每个分支处收集路径约束;步骤D.将收集到的路径约束,通过变异路径算法得到新的路径约束,将该路径约束转化为求解器可识别的查询语句;步骤E.使用求解器计算新路径约束中,输入需满足的条件,再借助动态插装框架把新产生的输入交给二进制代码再次执行。 | ||
地址 | 100191 北京市海淀区学院路37号 |