RedQueen 项目使用教程
redqueen 项目地址: https://gitcode.com/gh_mirrors/re/redqueen
1. 项目目录结构及介绍
RedQueen 项目的目录结构如下:
redqueen/
├── AUTHORS
├── Evaluation
│ ├── KVM-PT
│ ├── QEMU-PT
│ ├── Target-Components
│ └── fastrand
├── LICENSE
├── README.md
├── fuzzer.gif
├── install.sh
├── rq_paper.png
└── kAFL-Fuzzer
├── kafl_fuzz.py
├── kafl_info.py
├── kafl_user_prepare.py
└── ...
目录结构介绍
- AUTHORS: 项目作者信息文件。
- Evaluation: 包含项目的评估和测试相关文件。
- KVM-PT: KVM-PT 相关文件。
- QEMU-PT: QEMU-PT 相关文件。
- Target-Components: 目标组件相关文件。
- fastrand: 快速随机数生成器相关文件。
- LICENSE: 项目许可证文件,采用 AGPL-3.0 许可证。
- README.md: 项目介绍和使用说明文件。
- fuzzer.gif: 项目演示动画文件。
- install.sh: 项目安装脚本。
- rq_paper.png: 项目相关论文的图片文件。
- kAFL-Fuzzer: 核心模糊测试工具目录,包含主要的模糊测试脚本和相关文件。
- kafl_fuzz.py: 模糊测试主脚本。
- kafl_info.py: 获取目标程序信息脚本。
- kafl_user_prepare.py: 用户准备脚本,用于打包目标程序。
2. 项目启动文件介绍
RedQueen 项目的启动文件主要集中在 kAFL-Fuzzer
目录下,其中最重要的启动文件是 kafl_fuzz.py
。
kafl_fuzz.py
kafl_fuzz.py
是 RedQueen 项目的主要启动文件,用于启动模糊测试过程。该脚本通过调用虚拟机 introspection 技术,观察目标程序的函数调用和比较指令,生成特定的输入突变,从而进行高效的模糊测试。
使用方法
python kafl_fuzz.py <kernel> <initramfs> <target> <time_limit> <workdir> -ip0 <address_range> -t <timeout> -hammer_jmp_tables -n -D -r -l -v -p1
- kernel: 内核文件路径。
- initramfs: 初始化 RAM 文件系统路径。
- target: 目标程序路径。
- time_limit: 时间限制。
- workdir: 工作目录路径。
- -ip0: 目标程序的地址范围。
- -t: 超时时间。
- -hammer_jmp_tables: 启用跳转表模糊测试。
- -n: 禁用网络。
- -D: 启用调试模式。
- -r: 启用覆盖率记录。
- -l: 启用日志记录。
- -v: 启用详细输出。
- -p1: 启用多进程模式。
3. 项目配置文件介绍
RedQueen 项目的配置文件主要通过命令行参数进行配置,没有独立的配置文件。主要的配置项包括:
- 内核文件路径 (
kernel
): 指定使用的内核文件路径。 - 初始化 RAM 文件系统路径 (
initramfs
): 指定使用的初始化 RAM 文件系统路径。 - 目标程序路径 (
target
): 指定要进行模糊测试的目标程序路径。 - 时间限制 (
time_limit
): 设置模糊测试的时间限制。 - 工作目录路径 (
workdir
): 指定工作目录路径,用于存储测试结果和其他临时文件。 - 地址范围 (
-ip0
): 指定目标程序的地址范围,用于模糊测试。 - 超时时间 (
-t
): 设置模糊测试的超时时间。 - 其他选项: 如
-hammer_jmp_tables
、-n
、-D
、-r
、-l
、-v
、-p1
等,用于启用不同的功能和模式。
通过这些配置项,用户可以根据具体需求灵活配置 RedQueen 项目的模糊测试过程。