#模糊测试 #afl #模糊器 #模糊测试 #测试工具

app afl_runner

轻松实现AFLPlusPlus模糊测试活动的最佳实践扩展

18 个不稳定版本 (3 个重大更改)

0.4.2 2024年5月12日
0.4.1 2024年4月30日
0.3.5 2024年4月29日
0.2.0 2024年4月23日
0.1.3 2024年1月23日

#141 in 测试

Download history 598/week @ 2024-04-26 60/week @ 2024-05-03 105/week @ 2024-05-10 36/week @ 2024-05-17 8/week @ 2024-05-24 7/week @ 2024-05-31 6/week @ 2024-06-07 2/week @ 2024-06-14 6/week @ 2024-06-28 43/week @ 2024-07-05 57/week @ 2024-07-26 12/week @ 2024-08-02

每月 69 次下载

Apache-2.0

4MB
2.5K SLoC

AFL Runner

Crates.io License

AFL_Runner 是一款现代命令行工具,旨在简化高效的多核 AFLPlusPlus 活动的运行。默认配置基于官方文档中 使用多核 的部分。

入门 🚀

目前,此工具应适用于所有 *NIX 风格操作系统。

先决条件

安装

您可以自己编译 AFL_Runner...

git clone https://github.com/0xricksanchez/AFL_Runner.git
cd AFL_Runner
cargo build --release
./target/release/aflr --help

...或者直接通过 crates.io 安装

cargo install afl_runner
aflr --help

功能 ✨

AFL_Runner 允许您设置最必要的 AFLPlusplus 标志,并模拟这些选项的 AFLPlusplus 语法

  • 支持的 AFLPlusplus 标志

    • 语料库目录
    • 输出目录
    • 字典文件
    • 为所有实例自定义 afl-fuzz 二进制路径
    • 为目标二进制文件提供参数(包括 @@)
    • 生成运行命令的数量
    • 支持 *SAN, CMPLOG, CMPCOV 二进制文件
  • 其他功能

    • 为所有运行器自动创建适当布局的 Tmuxscreen 选项
    • 文本用户界面 (TUI)
    • 通过 --config 提供配置文件,以便更容易地共享/存储每个项目的配置
      • 当未提供 --config 时,自动读取 CWD 中名为 aflr_cfg.toml 的配置

注意:命令行提供的参数优先于任何配置文件选项。

不是什么? ❌

AFL_Runner的目标是一个即插即用的解决方案,适用于在进行模糊测试活动时,只剩下运行多核设置的阶段。因此,这个工具不是(目前)以下方面的助手:

  • 编译目标程序的不同版本
  • 准备一个良好的初始种子语料库
  • 提供合适的字典以提升代码覆盖率
  • 调试模糊测试活动

路线图 🗺️

  • 添加远程选项 🌐
  • statsd的本地集成
  • 添加更多配置选项
    • 为其他选项添加更合理的默认值
  • 允许在某些运行器上使用AFLPlusPlus的分支

使用示例 💡

以下是一个使用AFL_Runner生成AFL++命令的示例

AFL_Runner_cmd_gen

注意:提供*SAN、CMPLOG或CMPCOV二进制文件是可选的,如果省略,所有调用都将包含(强制性)已配置的目标。

展示 🎥

AFL_Runner还包括一个终端用户界面(TUI),用于监控模糊测试活动的进度。以下演示可以在examples/中找到,可以通过在项目的根目录中运行cargo make进行本地构建。

示例使用不同的编译时配置,构建了libxml2的最新版本四次

  1. plain AFL++配置
  2. Address-Sanitizer (ASan)
  3. CMPCOV,以及
  4. CMPLOG。

之后,生成16个实例所需的必要命令,然后在专用的TMUX会话中执行。最后,由*AFL Runner*提供的自定义TUI在集中空间跟踪模糊测试活动的进度

AFL_Runner demo

注意:可以使用afl_runner tui <afl_output_dir>将TUI用作afl-whatsup完全替代品!

贡献 🤝

欢迎贡献!请随时提交拉取请求或打开有关任何错误、功能请求或改进的问题。任何其他支持也欢迎:)

许可证 📜

本项目采用Apache许可证。有关详细信息,请参阅LICENSE文件。



🔼 返回顶部

依赖项

~11–39MB
~613K SLoC