构建 LibAFL

LibAFL 和大多数 Rust 项目一样,可以使用 cargo 从项目的根目录下构建:

$ cargo build --release

请注意,--release在开发测试时是可选项,但使用Debug版本进行模糊测试可能会有10倍以上的性能损失,正式使用时你需要添加 --release 标志才能获得正常的速度。

LibAFL资源库是由多个板块组成的。 顶层的 Cargo.toml 是将这些板块分组的工作区文件。 从根目录调用 cargo build 将编译工作区中的所有板块。

构建示例模糊器

对于有经验的 rustaceans 来说,最好的起点是阅读并改编示例模糊器。

我们将这些模糊程序放在 LibAFL 资源库的 ./fuzzers 目录下,该目录包含一组不属于工作区的crates。

这些示例模糊器中的每一个都使用了 LibAFL 的特定功能,有时与不同的插桩后端相结合 (例如 SanitizerCoverage, Frida, ...) 。

你可以使用这些 crates 作为例子,并作为具有类似功能集的自定义模糊器的骨架。 每个模糊器的目录中都有一个 README.md 文件,描述模糊器及其特性。

要建立一个例子的模糊器,你必须从其各自的文件夹 (fuzzers/[FUZZER_NAME]) 调用 cargo build --release