libfuzzer
与 LLVM 工具链整合的 C/C++ 项目覆盖率导向模糊测试工具。
简介
libFuzzer 是一款专为 C/C++ 应用程序设计的进程内、覆盖率导向模糊测试工具。作为 LLVM 项目的核心组件,它为使用 Clang 的开发人员提供了无缝的集成体验。它专门针对需要快速设置且在识别崩溃、内存泄漏及未定义行为方面具有可靠性能的项目。通过利用编译阶段提供的检测机制,libFuzzer 可追踪代码覆盖率以智能方式变异输入,进而探索传统模糊测试工具可能忽略的深度代码路径。由于其简洁性、易于维护性以及与现代构建系统的高度兼容性,它是大多数 C/C++ 模糊测试任务的首选起点。虽然它针对单进程、单核心执行进行了优化,但其测试脚本(harness)结构与 AFL++ 等更先进的工具兼容,使其成为未来可能需要分布式、多核心模糊测试项目的绝佳桥梁。
-
执行进程内、覆盖率导向的变异模糊测试,以检测软件漏洞与崩溃。
-
使用 -fsanitize=fuzzer 标志直接集成到现有的 LLVM/Clang 构建流程中。
-
使用 FuzzedDataProvider 处理复杂的结构化输入与多参数目标函数。
-
支持基于脚本的测试,允许对特定逻辑分支与 API 接口进行定向执行。
-
实现确定性模糊测试,确保发现的错误与崩溃可完全重现。
-
促进高速测试脚本的创建,目标为每秒达到数千次执行。
-
非常适合需要快速、高效测试关键代码路径的 C/C++ 开发人员与安全研究人员。
-
需要一个名为 LLVMFuzzerTestOneInput 的 C++ 入口函数来接收模糊测试数据。
-
测试函数必须始终返回 0,非零返回值保留供引擎未来使用。
-
避免在测试脚本内使用随机数生成器或未设置种子的熵等非确定性元素。
-
通过在迭代之间重置全局状态来维持脚本隔离,防止执行流的交叉污染。
-
虽然主要是 Linux 工具,但可通过兼容的 LLVM 工具链安装在 macOS 与 Windows 上使用。
仓库统计
- Star 数
- 4,905
- Fork 数
- 428
- Open Issue 数
- 21
- 主要语言
- Python
- 默认分支
- main
- 同步状态
- 空闲
- 最近同步时间
- 2026年4月30日 10:07