45 个版本 (4 个稳定版本)
1.1.0 | 2024 年 5 月 22 日 |
---|---|
1.0.0 | 2024 年 2 月 5 日 |
0.8.3 | 2024 年 1 月 18 日 |
0.8.2 | 2023 年 11 月 20 日 |
0.1.0 | 2022 年 6 月 13 日 |
#75 在 Cargo 插件 中排名
每月 123 次下载
77KB
1.5K SLoC
ziggy
ziggy
是一个 Rust 项目模糊测试管理器,旨在
- 并行运行不同的模糊测试并使用共享语料库
- 创建和监控连续模糊测试管道
功能集
- 🤹 并行处理不同的模糊测试进程(honggfuzz,AFL++)
- 🗃️ 为所有模糊测试提供一个共享语料库
- 🤏 无需努力即可最小化语料库
- 📊 有洞察力的监控
- 🎯 易于生成覆盖率报告
- 😶🌫️ 支持任意特质
还包括以下功能
- 🐇 LibAFL 集成
- 📨 通过 bash 钩子通知新的崩溃
使用示例
首先,通过运行以下命令安装 ziggy
及其依赖项:
cargo install --force ziggy cargo-afl honggfuzz grcov
以下是工具帮助输出的示例
$ cargo ziggy
A multi-fuzzer management utility for all of your Rust fuzzing needs 🧑🎤
Usage: cargo ziggy <COMMAND>
Commands:
build Build the fuzzer and the runner binaries
fuzz Fuzz targets using different fuzzers in parallel
run Run a specific input or a directory of inputs to analyze backtrace
minimize Minimize the input corpus using the given fuzzing target
cover Generate code coverage information using the existing corpus
plot Plot AFL++ data using afl-plot
add-seeds Add seeds to the running AFL++ fuzzers
triage Triage crashes found with casr - currently only works for AFL++
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
要创建模糊测试,只需将 ziggy
添加为依赖项。
[dependencies]
ziggy = { version = "1.1.0", default-features = false }
然后在您的 main
中使用 fuzz!
宏创建一个 harness。
fn main() {
ziggy::fuzz!(|data: &[u8]| {
println!("{data:?}");
});
}
有关文档齐全的模糊测试示例,请参阅 url 示例。
output
目录
在您启动模糊测试后,您将在 output
目录中找到几个项目:
- 包含完整语料库的
corpus
目录 - 包含模糊测试检测到的任何崩溃的
crashes
目录 - 包含模糊测试日志文件的
logs
目录 - 包含 AFL++ 输出的
afl
目录 - 包含 Honggfuzz 输出的
honggfuzz
目录 - 用于 ziggy 将 AFL++ 中的项目传递给 Honggfuzz 的
queue
目录
关于覆盖率的说明
默认情况下,cargo cover
命令不会为模糊测试项目的依赖项生成覆盖率。
如果您想更改此设置,可以使用以下技巧
CARGO_HOME=.cargo cargo ziggy cover
这将把每个依赖项克隆到一个 .cargo
目录中,并且该目录将被包含在生成的覆盖率中。
ziggy
日志
如果您想查看 ziggy
的内部日志,可以将 RUST_LOG=INFO
设置。
依赖项
~0–16MB
~320K SLoC