发明名称 一种动态的二进制代码测试用例生成方法
摘要 本发明公开了一种动态的二进制代码测试用例生成方法。实现动态的二进制插装工具,可收集二进制代码执行过程中,寄存器、内存、线程、系统调用、库加载等动态上下文信息,将此类信息传送到二进制代码翻译组件中,转化为一种中间语言,并在此中间语言上进行符号执行,传播符号输入,收集依赖于输入的路径约束。然后把此路径约束输入到路径生成组件中,提出一种新的同级分支路径变异算法及策略,在每次符号执行后尽可能多地生成新的路径约束,再使用定理证明器来求解新的路径约束,得到满足该路径约束的新输入,把新输入传送给二进制代码进行再一次具体执行,不断循环从新的执行中得到新的路径约束,生成新的输入,从而提高二进制代码覆盖率。
申请公布号 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号