16.2 动态测试技术
16.2.1 SPIKE 简介
main() { int i,k; //设置的两个变量,向其中逐个加入畸形数据 struct spike * p_spike = new_spike(); setspike(p_spike); spike_clear();
//s_init_fuzzing();//使用SPIKE自带畸形数据库
s_add_fuzzstring("fuzz1111");//添加自定义的畸形数据
s_add_fuzzstring("fuzz2222");//添加自定义的畸形数据
//s_add_fuzzstring("failwest3");//添加自定义的畸形数据
//s_add_fuzzstring("failwest4");//添加自定义的畸形数据
s_resetfuzzvariable();
for (k = 0; k < 2; k++) {
for (i = 0; i < s_get_max_fuzzstring(); i++) {
spike_clear();
s_incrementfuzzstring();
s_string("aaaaaaaa");
s_string_variable("");
s_string("bbbbbbbb");
s_string_variable("");
s_string("cccccccc");
s_print_buffer();
}
s_incrementfuzzvariable();
}
spike_free(p_spike);
} ```
- 函数的功能:
- s_string()函数用于以字符串形式向 SPIKE 结构体的缓冲区添加数据。
- s_init_fuzzing()函数表明使用 SPIKE 自带的畸形数据集合。
- s_add_fuzzstring()函数允许用户添加自定义的畸形数据。
- spike_clear()清空 SPIKE 的缓存。
- s_incrementfuzzstring()表示使用下一个畸形数据。
- s_incrementfuzzvariable()表示移向下一个变量的位置进行 fuzz。
- s_print_buffer()函数用于以十六进制形式输出当前缓冲区的数据。
- 上面代码测试的原理如下所示: