我期待着理解AFL如何实现其种子选择。据我所知,afl-fuzz.c有一个名为has_new_bits的函数,它返回值来标识输入的结果是否创建了新路径、新边,或者它是否不是我们正在考虑的有趣分支。所以我的问题是,假设我能够插入一些代码行,允许我插入变量,例如计数器,我可以插入其他代码行,这些代码将在给定的分支中递增,我如何修改AFL,使其能够检测到这一点?
发布于 2021-04-19 20:33:03
在AFL++中,您可以使用__afl_coverage_interesting直接影响覆盖率位图。例如,您可以使用计数器的值来计算val参数(但请记住val是u8)。
另一种方法是使用FuzzFactory,这是AFL的一个修改版本,允许用户定义自定义覆盖指标。在他们的paper中,作者讨论了FuzzFactory可以使用的一种可能的覆盖指标,即有效性。对于有效性,模糊器选择具有更多概率的有效输入。你可以绕过它,制作一个FuzzFactory版本,专注于触发不安全代码的输入,而不是有效的输入。
https://stackoverflow.com/questions/66794072
复制相似问题