接下来的是这个fuzzing部分找到的新路径数量和在进行并行化fuzzing时从其他fuzzer实例导入的路径数量 。 最后一个数据可以衡量观测到痕迹的一致性,如果程序对相同的输入始终表现相同,则为100%,若数值较低但仍然显示为紫色,测试过程不太可能受到负面影响,而显示红色说明出现了问题,afl可能难以区分调整输入文件的有意义的效...
10)Addendum: status and plot files(附录:状态和图文件) 对于无人值守的操作,一些关键状态屏幕信息也可以在输出目录的fuzzer_stats文件中以机器可读的格式找到。这包括: -start_time-Unix时间,表示af-fuzz的开始时间 -last_update-与此文件的最后更新相对应的Unix时间 -fuzzer_pid-模糊器进程的PID -cycles_done-...
queue/- 存放AFL生成的触发新代码路径的测试样本 crashes/- 存放能触发待测程序崩溃的测试样本 hangs/- 存发导致待测程序超时的测试样本 fuzzer_stats-文本文件,包含了fuzzer的实时统计信息,如执行速度、路径覆盖等度量指标。这个文件不断更新以反映当前的fuzzing状态。 plot_data- 文本文件,包含了AFL执行过程中的统计...
测试一段时间后我们可以打开输出文件夹,就可以看到有crashes,hangs,queue三个文件夹存放着生成的对应的样例,以及fuzzbitmap, fuzzerstats, plot_data三个文件。比如针对我们的demo1 得到的crash用xxd查看 基础的安装与使用就介绍到这里,afl还有很多别的功能,感兴趣的朋友可以继续研究 引用和参考 American fuzzy lo...
判断in_place_resume变量,如果为1, 则设置fn = alloc_printf("%s/fuzzer_stats", out_dir);,否则fn = alloc_printf("%s/../fuzzer_stats", in_dir); 只读模式读取fd内容到tmp[4096]中,并搜索exec_timeout:字符串,如果找不到直接返回,如果找到了则读取这个超时时间,大于4就设置为exec_tmout。
如果指定了resuming_fuzz即从输出目录当中恢复模糊测试状态,会从之前的模糊测试状态fuzzer_stats文件中计算中timeout值,保存在exec_tmout中 如果目标程序的输入不是来源于文件而是来源于标准输入的话,则将目录文件\"%s/.cur_input\"文件打开保存在out_fd文件句柄中,后续将标准输入重定向到该文件中 ...
stage_cur计数器加一,如果stage_cur是stats_update_freq的倍数,就刷新一次展示界面。 向id_fd写入当前的next_min_accept值 总结来说,这个函数就是先读取有哪些fuzzer文件夹,然后读取其他fuzzer文件夹下的queue文件夹里的case,并依次执行,如果发现了新path,就保存到自己的queue文件夹里,而且将最后一个sync的case id...
show_init_stats():向用户输出一些状态信息 find_start_position() 只有在resuming_fuzz时才起作用。 如果设置了in_place_resume。 打开out_dir/fuzzer_stats 否则打开in_dir/../fuzzer_stats 读取4095字节到tmp中。 查找子串"cur_path : "的位置为off。 设置ret = atoi(off + 20); 如果ret >= queued_...
对于无人值守的操作,一些关键状态屏幕信息也可以在输出目录的fuzzer_stats文件中以机器可读的格式找到。 这包括:start_time –unix 时间,指示 afl-fuzz 的开始时间 last_update– 此文件上次更新的unix时间 fuzzer_pid –fuzzer 进程的 PID cycles_done– 到目前为止完成的队列周期 execs_done– 尝试的 execve()...
fuzzer AFL 源码分析(四)-监控 上一部分对afl如何实现反馈进行了较为详细的介绍,本文将对afl如何实现监控进行分析。监控是指afl能够成功运行目标程序、获取目标程序的反馈信息(运行状态)并判定此次运行是否有效(此次运行的样例是否增加了模糊测试的覆盖率、是否崩溃或超时),以更有效的指导下一次模糊测试及保存崩溃。