【技术实现步骤摘要】
测试方法及装置
本公开涉及计算机
,尤其涉及一种测试方法及装置。
技术介绍
目前,由于对安全问题的重视,通常在软件发布之前都会进行安全测试,通过漏洞挖掘,尽可能提前发现漏洞,并进行修复。漏洞挖掘通常采用模糊测试方式,模糊测试是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法,它以稳定、速度快且不需要程序分析而带来的低价且有效的优势被工业界广泛接受和使用,用于安全产品的检测。然而,模糊测试虽广受工业界欢迎,但因其具有盲目性导致难以深入测试软件,从而导致测试效率低下、测试时间长。
技术实现思路
有鉴于此,本公开提出了一种测试方法,所述方法包括:获取待测程序的数据流信息、控制流信息中基本块的权重及基本块的第一地址信息,并将所述数据流信息中的数据作为种子加入种子队列中;对所述待测程序进行动态插桩以获取待测程序中基本块的第二地址信息,在所述第二地址信息与所述第一地址信息相同的情况下,将所述第一地址信息对应的基本块的权重作为所述第二地址信息对应的基本块的权重;将所述种 ...
【技术保护点】
1.一种测试方法,其特征在于,所述方法包括:/n获取待测程序的数据流信息、控制流信息中基本块的权重及基本块的第一地址信息,并将所述数据流信息中的数据作为种子加入种子队列中;/n对所述待测程序进行动态插桩以获取待测程序中基本块的第二地址信息,在所述第二地址信息与所述第一地址信息相同的情况下,将所述第一地址信息对应的基本块的权重作为所述第二地址信息对应的基本块的权重;/n将所述种子队列中的种子作为输入运行动态插桩后的所述待测程序,并利用所述待测程序中基本块的权重引导所述种子的执行路径以对所述待测程序进行测试。/n
【技术特征摘要】
1.一种测试方法,其特征在于,所述方法包括:
获取待测程序的数据流信息、控制流信息中基本块的权重及基本块的第一地址信息,并将所述数据流信息中的数据作为种子加入种子队列中;
对所述待测程序进行动态插桩以获取待测程序中基本块的第二地址信息,在所述第二地址信息与所述第一地址信息相同的情况下,将所述第一地址信息对应的基本块的权重作为所述第二地址信息对应的基本块的权重;
将所述种子队列中的种子作为输入运行动态插桩后的所述待测程序,并利用所述待测程序中基本块的权重引导所述种子的执行路径以对所述待测程序进行测试。
2.根据权利要求1所述的方法,其特征在于,所述获取待测程序的数据流信息、及控制流信息中基本块的权重及基本块的第一地址信息,包括:
利用基本块的父亲基本块的生成概率、基本块与父亲基本块之间的边的生成概率、基本块的父亲基本块的数目、基本块的兄弟基本块的父亲基本块的数目获取基本块的权重。
3.根据权利要求2所述的方法,其特征在于,所述利用基本块的父亲基本块的生成概率、基本块与父亲基本块之间的边的生成概率、基本块的父亲基本块的数目、基本块的兄弟基本块的父亲基本块的数目获取基本块的权重,包括:
利用如下公式获取基本块的权重:
其中,
其中,w(b)表示基本块b的权重,pred(b)表示基本块b的父亲基本块的集合,len(pred(b))表示基本块b的父亲基本块的数目,len(pred(bro(b)))表示基本块b的兄弟基本块的父亲基本块的数目,prob(c)表示基本块b的父亲基本块的生成概率,prob(ecb)表示基本块c与基本块b之间的边的生成概率,∑c∈pred(b)prob(c)*prob(ecb))表示基本块b的生成概率。
4.根据权利要求1所述的方法,其特征在于,所述利用所述待测程序中基本块的权重引导所述种子的执行路径以对所述待测程序进行测试,包括:
获取所述种子执行到的所述待测程序的当前基本块的子基本块的权重大小;
选择所述子基本块中权重最大的子基本块作为所述种子的执行路径中的下一个基本块。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述种子中的最优种子;
对所述最优种子进行变异,得到变异后的种子;
在所述变异后的种子满足预设条件的情况下,将所述变异后的种子加入到所述种子队列中。
6.根据权利要求5所述的方法,其特征在于,确定所述种子中的最优种子,包括:
利用所述种子的完整的执行路径中各个基本块的权重之和、所述执行路径中子路径的基本块的子基本块的权重、所述种子的字节长度、所述种子在所述待测程序的执行时间获取所述种子的适应度值,
将当前种子的适应度值与前一个种子的适应度值进行比较,在当前种子的适应度值大于前一个种子的适应度值的情况下,将当前种子作为所述执行路径上的最优种子;
将所述最优种子保存在最优种子队列中。
7.根据权利要求6所述的方法,其特征在于,利用所述种子的执行路径中各个基本块的权重之和、基本块的子基本块的权重、所述种子的字节长度、所述种子在所述待测程序的执行时间获取所述种子的适应度值,包括:
利用如下公式获取所述种子的适应度值:
其中,f(d)表示所述种子的适应度值,wnextd表示执行路径中子路径的基本块d的子基本块的权重,wq表示所述种子的完整的执行路径中各个基本块的权重之和,tq表示所述种子在所述待测程序的执行时间,lq表示所述种子的字节长度,ε为预设值。
8.根据权利要求6或7所述的方法,其特征在于,对所述最优种子进行变异,得到变异后的种子,包括:
从所述最优种子队列中获取所述最优种子;
获取所述最优种子经历变异的代数、被选为最优种子的次数,并获取执行过所述执行路径的种子数目;
利用所述最优种子经历变异的代数、被选为最优种子的次数、执行过所述执行路径的种子数目获取所述最优种子的待变异次数;
根据所述待变异次数对所述最优种子进行变异,以获取变异后的种子。
9.根据权利要求8所述的方法,其特征在于,在所述变异后的种子满足预设条件的情况下,将所述变异后的种子加入到所述种子队列中,包括:
利用所述变异后的种子作为输入执行所述待测程序,并利用所述待测程序中基本块的权重引导所述变异后的种子的执行路径以对所述待测程序进行测试;
在所述变异后的种子导致所述待测程序的代码覆盖率增加,或所述执行路径中的子路径的覆盖次数到达预设值时,确定所述变异后的种子满足预设条件,并将所述变异后的种子加入到所述种子队列中。
10.根据权利要求8所述的方法,其特征在于,所述利用所述最优种子经历变异的代数、被选为最优种子的次数、执行过所述执行路径的种子数目获取所述最优种子的待变异次数,包括:
根据以下公式获取所述待变异次数:
T=K*energy(x);
其中,T表示所述待变异次数,x表示所述最优种子,K表示预设转换系数,energy(x)表示分配给所述最优种子的能量,d(x)表示所述最优种子经历变异的代数,g(x)表示执行过所述执行路径的种子数目,s(x)表示最优种子x被选为最优种子的次数,max_gene表示预设最大变异代数。
11.一种测试装置,其特征在于,所述装置包括:
获取模块,用于获取待测程序的数据流信息、控制流信息中基本块的权重及基本块的第一地址信息,并将所述数据流信息中的数据作为种子加入种子队列中;
动态插桩模块,连接于所述获取模块,用于对所述待测程序进行动态插桩以获取待测程序中基本块的第二地址信息,在所述第二地址信息与所...
【专利技术属性】
技术研发人员:冀甜甜,王忠儒,阮强,
申请(专利权)人:北京丁牛科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。