设置
第一步是下载 LibAFL 和所有没有被 cargo
自动安装的依赖项。
命令行符号
在本章和全书中,我们展示了一些终端内容。终端输入的行都以
$
开头,但你不需要输入$
字符; 它表示每个命令的开始。不以"$"开头的行通常显示的是 > 前一条命令的输出。 此外,PowerShell特定的例子将使用>
而不是$
。
虽然技术上你不需要安装 LibAFL,而是可以直接使用 crates.io 的版本,但我们还是建议下载或克隆 GitHub版本,这样你就可以得到示例模糊器、额外的实用程序和最新的补丁。
最简单的方法是使用 git
:
$ git clone git@github.com:AFLplusplus/LibAFL.git
你也可以在 类UNIX 的机器上,下载一个压缩的存档,然后用以下方法解压:
$ wget https://github.com/AFLplusplus/LibAFL/archive/main.tar.gz
$ tar xvf LibAFL-main.tar.gz
$ rm LibAFL-main.tar.gz
$ ls LibAFL-main # this is the extracted folder
安装 Clang
LibAFL 的外部依赖之一是 Clang C/C++ 编译器。 虽然大部分代码都是纯Rust语言编写,但我们仍然需要一个C语言编译器,因为稳定的Rust仍然不支持LibAFL某些部分可能需要的功能,比如弱连接以及LLVM内置链接。 对于这些部分,我们使用C语言来向我们的Rust代码库暴露缺少的功能。
此外,如果你想对 C/C++ 应用程序进行源码级模糊测试,你可能需要Clang及其插桩选项来编译被测程序。
在Linux上,你可以使用你的发行版的软件包管理器来获取Clang,但这些软件包并不总是最新的。 相反,我们建议使用来自 LLVM 的 Debian/Ubuntu 预编译包,这些包可以通过他们的 官方仓库 获得。
对于Microsoft Windows,你可以下载 LLVM 定期生成的 安装包。
尽管 Clang 是 MacOS 上的默认C编译器,但我们不鼓励使用苹果公司提供的编译器,而鼓励使用从 Homebrew 安装的版本: brew install llvm
。
另外,你也可以下载LLVM源码并自行构建,按照 这里 的方法。
安装 Rust
如果你没有安装 Rust,你可以很容易地按照 这里 描述的步骤来安装它。
请注意,Linux 发行版中的 Rust 版本可能已经过时,LibAFL 总是使用最新的稳定版本,可通过 rustup upgrade
获得。
我们建议先安装 Clang 和 LLVM,然后再安装 Rust。