AFL维护了一个队列(queue),每次从这个队列中取出一个文件,对其进行大量变异,并检查运行后是否会引起目标崩溃、发现新路径等结果。

bitflip 位反转

文件头 判断

比如 xxxxxxxxIHDRxxxxxxxx 这样的字符串,如果在被 位反转后 运行后的 覆盖率变低了很多,这个时候fuzz 会认为这个是一个特定字符串,存在这个字符串时,覆盖率才会更高。这样就会将这个字符串记录为 token

其实token的长度和数量都是可以控制的,在 config.h 中有定义,但是因为是在头文件宏定义的,修改之后需要重新编译使用。