0

我希望了解 AFL 如何实现其种子选择。据我了解,afl-fuzz.c有一个称为has_new_bits返回值的函数,用于识别输入结果是否创建了新路径、新边缘,或者它是否不是我们正在考虑的有趣分支。所以我的问题是这样的,因为我能够插入一些代码行,允许我插入变量,例如计数器,我可以插入其他代码行,这将在给定分支中增加它,我该如何修改AFL 是否能够检测到这一点?

4

1 回答 1

0

在 AFL++ 中,您可以使用__afl_coverage_interesting直接影响覆盖位图。例如,您可以使用计数器的值计算 val 参数(但请注意 val 是 u8)。

另一种方法是使用FuzzFactory,它是 AFL 的修改版本,允许用户定义自定义覆盖率指标。在他们的论文中,作者讨论了 FuzzFactory 可以使用的一种可能的覆盖率指标,即有效性。在有效性的情况下,模糊器选择具有更多概率的有效输入。您可以绕过它并制作一个 FuzzFactory 版本,该版本专注于触发不安全代码而不是有效输入的输入。

于 2021-04-19T12:33:02.987 回答