用途:为安全开发者提供设计、实现、调试和维护模糊测试器(fuzzer)的指南,用于安全测试。
主要能力:提供决策树帮助选型——简单 C/C++ 目标用 LibFuzzer,仅二进制目标用 AFL++ QEMU/Frida 模式,需要自定义组件用 LibAFL(Rust、模块化),结构化输入(JSON/XML/协议)用基于语法的方案。涵盖编写 fuzz target/harness、调试覆盖率不增长、崩溃未检测、执行缓慢等问题,以及崩溃分类、去重、最小化和根因分析。
使用方式:LibFuzzer harness 使用 LLVMFuzzerTestOneInput,编译命令为 clang -g -O1 -fsanitize=fuzzer,address target.c -o fuzzer,运行 ./fuzzer corpus/。AFL++ 持久模式使用 __AFL_FUZZ_INIT 等宏,编译 afl-clang-fast -o target target.c,运行 afl-fuzz -i corpus -o out -- ./target。LibAFL 需组装 harness、覆盖率 map、observer、feedback、objective、scheduler、mutator 和 stages 后调用 fuzz_loop。
调试与变异:覆盖率不增长时用 afl-showmap 或 -print_coverage=1 检查插桩,启用 CmpLog(AFL_LLVM_CMPLOG=1)处理 magic bytes;崩溃未检测时启用 ASan/UBSan 并配置 CrashFeedback;性能问题用持久模式、将初始化移出循环、限制 -max_len。变异策略按场景选择 havoc、字典、CmpLog、语法或自定义 mutator,字典用 -x 或 -dict 启用。
适用场景:覆盖率引导模糊测试、二进制模糊测试、结构化输入模糊测试、CI 集成(LibFuzzer 兼容 OSS-Fuzz)。
限制:资料未提供具体收费、价格、平台支持范围或效果数据,暂未提供。