AFL++ 项目教程
项目的目录结构及介绍
AFL++ 项目的目录结构如下:
AFLplusplus/
├── afl-analyze
├── afl-as
├── afl-cmin
├── afl-fuzz
├── afl-gcc
├── afl-gotcpu
├── afl-plot
├── afl-showmap
├── afl-tmin
├── afl-whatsup
├── as
├── clang_mode
├── docs
├── include
├── llvm_mode
├── qemu_mode
├── scripts
├── test
├── unicorn_mode
├── LICENSE
├── README.md
└── ...
主要目录介绍
afl-analyze
,afl-as
,afl-cmin
,afl-fuzz
,afl-gcc
,afl-gotcpu
,afl-plot
,afl-showmap
,afl-tmin
,afl-whatsup
: 这些是 AFL++ 的主要工具文件。as
,clang_mode
,llvm_mode
,qemu_mode
,unicorn_mode
: 这些是不同模式的实现文件。docs
: 包含项目的文档文件。include
: 包含项目的头文件。scripts
: 包含一些辅助脚本。test
: 包含测试文件。LICENSE
: 项目的许可证文件。README.md
: 项目的介绍文件。
项目的启动文件介绍
AFL++ 的启动文件主要是 afl-fuzz
,它是 AFL++ 的核心工具,用于执行模糊测试。
afl-fuzz
介绍
afl-fuzz
是 AFL++ 的主要模糊测试工具,它负责执行以下任务:
- 读取输入文件并生成测试用例。
- 监控目标程序的执行状态。
- 记录发现的新路径和崩溃。
使用方法:
./afl-fuzz -i <input_dir> -o <output_dir> -- <target_program> [params]
项目的配置文件介绍
AFL++ 的配置文件主要是 afl-fuzz
的命令行参数和环境变量。
命令行参数
-i <input_dir>
: 指定输入目录,包含初始测试用例。-o <output_dir>
: 指定输出目录,用于存储生成的测试用例和结果。-- <target_program>
: 指定要测试的目标程序及其参数。
环境变量
AFL++ 还支持一些环境变量来配置其行为,例如:
AFL_SKIP_CPUFREQ
: 跳过 CPU 频率检查。AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES
: 忽略缺失的崩溃报告。AFL_NO_UI
: 禁用用户界面。
这些配置文件和环境变量可以根据具体需求进行调整,以优化模糊测试的效果。