AFL:记录fuzz过程中的覆盖率
作者:互联网
AFL流程
AFL覆盖率的收集
fuzzer fork 父进程fuzzer 子进程forkserver(父子进程通过管道通信,一个传递状态,一个个传输控制命令),子进程初始化管道,并执行execve()目标程序。
target是将每个分支的执行次数用一个byte存储,而fuzzer则是进一步将这个执行次数归入不同的buckets中。 (count_class_lookup8[])
- virgin_bits[i]:记录整体的tuple信息(即边的信息)
- trace_bits[i]:记录当前输入的tuple信息
- trace_mini[i]:只记录覆盖信息,不记录边执行的次数
- top_rated[i]:数组中的每一个元素是一个queue_entry 类型的指针。top_rated数组的索引同样代表一条边,也就是说,top_rated数组的索引和trace_bits数组的索引所代表的含义是一致的。
一条边可能被多个testcase执行,而这些testcase的长度和运行时间基本是不同的。top_rated[index]表示在众多执行了edge-index的testcase中、长度运行时间最短的那个testcase(我们称这个testcase更favored的)。
标签:AFL,rated,覆盖率,top,testcase,fuzz,fuzzer,bits 来源: https://www.cnblogs.com/Ricardio/p/16264303.html