微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

修改 AFL 以包含一个新变量供 Fuzzer 在种子选择中考虑

如何解决修改 AFL 以包含一个新变量供 Fuzzer 在种子选择中考虑

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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。