fuzz相关基础概念:libfuzzer,afl,honggfuzz,sanitizer,seed,harness
一些容易混淆的概念
- libFuzzer, AFL++, Honggfuzz
libFuzzer、AFL++ 和 Honggfuzz 是三种常用的基于代码覆盖率的模糊测试工具,它们在功能和使用场景上有一些区别。
(1)libFuzzer- libFuzzer 是一个灰盒模糊测试工具,主要用于 C/C++ 程序的测试。它由 LLVM 社区开发,并且与 LLVM 的 sanitizer 套件集成良好
。 - libFuzzer 的特点是它在单个进程中进行模糊测试,这使得它在速度上可能比其他工具更快,但同时也可能更脆弱。
 - 它支持结构感知的模糊测试,允许用户定义和管理自定义变异算子
。 - libFuzzer 主要用于测试库函数,而不是整个程序的入口点。
 
 - libFuzzer 是一个灰盒模糊测试工具,主要用于 C/C++ 程序的测试。它由 LLVM 社区开发,并且与 LLVM 的 sanitizer 套件集成良好
 
(2)AFL++
- 是 AFL(American Fuzzy Lop)的一个改进版本,它集成了最新的模糊测试研究,旨在提高模糊测试的效率和准确性
 - 它通常用于对整个程序进行模糊测试,而不仅仅是库函数
 
(3)Honggfuzz
- 是由 Google 开发的一种基于代码覆盖率的模糊测试工具,与 AFL 和 libFuzzer 类似
 - 它同样采用覆盖率引导的方法,但与 libFuzzer 相比
 
libFuzzer 更适合于库函数的测试,AFL++ 提供了更广泛的模糊测试功能和更高的灵活性,而 Honggfuzz 则是 Google 开发的一个高效工具,适用于广泛的模糊测试场景。
- 
sanitizer
在fuzzing(模糊测试)中,sanitizer是一种用于检测和报告程序中错误的工具。它通常通过在目标程序中插入额外的代码检查来实现,这些检查用于检测非法条件,如缓冲区溢出、整数溢出等。
Sanitizer可以分为几种类型,包括地址消毒器(Address Sanitizer, ASAN)、未定义行为消毒器(Undefined Behavior Sanitizer, UBSAN)、内存消毒器(Memory Sanitizer, MSAN)和数据流消毒器(Data Flow Sanitizer, DFSAN)。
在fuzzing过程中,sanitizer不仅用于检测漏洞,还可以指导模糊测试器(fuzzer)向特定的错误条件进发,从而提高发现漏洞的效率 - 
种子
在模糊测试中,种子是指用于生成测试输入的基础数据。这些种子可以是一个或一组特定的输入文件或数据,它们被用作基准来生成新的测试用例,以检测目标程序中的漏洞或异常行为。模糊测试通过随机生成大量的非预期输入种子文件,并将这些种子作为目标程序的输入,观察程序是否会出现执行异常或崩溃,从而发现潜在的安全漏洞 - 
harness
harness就是测试用例(参考1)。 
参考
- harness. https://bitcoin.stackexchange.com/questions/100303/what-is-a-fuzz-testing-harness
 
