hAFL1 项目安装与使用教程
hAFL1 项目地址: https://gitcode.com/gh_mirrors/ha/hAFL1
1. 项目的目录结构及介绍
hAFL1 项目的目录结构如下:
hAFL1/
├── EFIGuardBootable.iso
├── OVMF_CODE-pure-efi.fd
├── README.md
├── copy_files_to_vm.sh
├── coverage_analysis.md
├── hAFL1-LICENSE
├── install.sh
├── sha256sums.lst
├── targets/
│ └── windows_86_64/
│ ├── bin/
│ │ ├── fuzzer/
│ │ │ └── packet_sender.exe
│ │ └── loader/
│ │ └── loader.exe
│ └── compile.sh
├── tools/
└── kAFL-Fuzzer/
├── kafl_fuzz.py
└── kafl_gui.py
目录结构介绍
- EFIGuardBootable.iso: 用于禁用 PatchGuard 和驱动签名强制的 ISO 文件。
- OVMF_CODE-pure-efi.fd: 用于启动虚拟机的 UEFI 固件文件。
- README.md: 项目的基本介绍和使用说明。
- copy_files_to_vm.sh: 用于将文件复制到虚拟机的脚本。
- coverage_analysis.md: 覆盖率分析的说明文档。
- hAFL1-LICENSE: 项目的许可证文件。
- install.sh: 项目的安装脚本。
- sha256sums.lst: 文件的 SHA256 校验和列表。
- targets/windows_86_64/: 包含 Windows 64 位目标的编译脚本和二进制文件。
- bin/fuzzer/packet_sender.exe: 触发数据包发送 IOCTL 的程序。
- bin/loader/loader.exe: 加载并执行
packet_sender.exe
的程序。 - compile.sh: 编译 fuzzing 二进制文件的脚本。
- tools/: 包含项目使用的各种工具。
- kAFL-Fuzzer/: 包含 kAFL 模糊测试器的核心脚本。
- kafl_fuzz.py: 模糊测试的主脚本。
- kafl_gui.py: 模糊测试器的 GUI 脚本。
2. 项目的启动文件介绍
启动文件
- kafl_fuzz.py: 这是 hAFL1 项目的主要启动文件,用于启动模糊测试过程。它负责加载目标二进制文件、配置模糊测试参数并启动模糊测试实例。
使用方法
python3 kAFL-Fuzzer/kafl_fuzz.py -work_dir work --purge -vm_dir <OVERLAY_DIR> -bios OVMF_CODE-pure-efi.fd -mem 6144 -agent targets/windows_x86_64/bin/fuzzer/packet_sender.exe -seed_dir <SEED_DIR> -p <NUMBER_OF_INSTANCES> -ip0 <start_address>-<end_address> --debug -v
参数说明
- -work_dir: 工作目录,用于存储模糊测试的输出和日志。
- --purge: 清除工作目录中的旧数据。
- -vm_dir: 虚拟机目录,包含虚拟机镜像文件。
- -bios: 指定 UEFI 固件文件。
- -mem: 分配给虚拟机的内存大小。
- -agent: 指定目标二进制文件。
- -seed_dir: 种子文件目录,用于初始化模糊测试。
- -p: 指定模糊测试实例的数量。
- -ip0: 指定模糊测试的起始和结束地址。
- --debug: 启用调试模式。
- -v: 启用详细日志输出。
3. 项目的配置文件介绍
配置文件
- install.sh: 这是 hAFL1 项目的安装脚本,用于在 Linux 机器上安装 kAFL、kvm 和 hAFL1。
使用方法
./install.sh all
参数说明
- all: 编译所有必要的二进制文件,包括 fuzzing 二进制文件和 harness 驱动程序。
其他配置文件
- copy_files_to_vm.sh: 用于将文件复制到虚拟机的脚本。
- coverage_analysis.md: 覆盖率分析的说明文档,包含如何分析模糊测试结果的指导。
通过以上步骤,您可以成功安装和配置 hAFL1 项目,并开始进行模糊测试。