American Fuzzy Lop(AFL)介绍

American Fuzzy Lop是一个结合了极其简单但是有坚如磐石的工具指引的遗传算法的暴力fuzzer。它使用了一个边缘覆盖的修改的表单来轻易地pick up不易察觉的,局部尺度变化到程序控制流中。

简单来说,整个算法可以归纳为如下:

  1. 加载用户提供的初始测试用例到一个队列中,
  2. 从队列中取得下一个输入文件,
  3. 尝试裁剪测试用例的大小并降到最小,同时并不改变程序的衡量行为,
  4. 使用一个均衡的,并且对传统fuzzing策略研究透彻的变化来重复转变文件,
  5. 如果任意一个生成的转变导致了一个由一起记录的新的状态转换,增加转变的输出作为一个新的入口在队列中,
  6. 重复步骤2
被发现的测试用例同样需要周期地剔除来排除一部分测试用例,这些测试用例已经被新的,更高的覆盖率发现已经被淘汰;同时经历一些其它工具驱动的努力最小化步骤。
作为fuzzing过程的一个副产品,这个工具创建了一个小的,自包含的有意思的测试用例的文集。对一些人力或者资源密集的测试工作,这些集合是非常有用的。例如,对于浏览器的压力测试,办公应用,绘图套件或者闭源的工具。

你可能感兴趣的:(American Fuzzy Lop(AFL)介绍)