Hopper 开源项目使用教程

Hopper 开源项目使用教程

Hopper Hopper is a tool for generating fuzzing test cases for libraries automatically using interpretative fuzzing. Hopper 项目地址: https://gitcode.com/gh_mirrors/ho/Hopper

1. 项目介绍

Hopper 是一个用于自动生成库模糊测试用例的工具,通过解释性模糊测试将库模糊测试问题转化为解释器模糊测试问题,从而能够探索大量 API 使用情况。Hopper 的主要特点包括:

  • 无需任何模糊驱动程序的解释性 API 调用
  • 类型感知的参数变异
  • 自动学习 API 间的约束条件
  • 支持二进制代码插桩

2. 项目快速启动

2.1 环境准备

  • Linux-amd64 (测试环境:Ubuntu 20.04 和 Debian Buster)
  • Rust 稳定版 (>= 1.60)
  • Clang (>= 5.0)

2.2 安装 Hopper

首先,克隆 Hopper 项目到本地:

git clone https://github.com/FuzzAnything/Hopper.git
cd Hopper

然后,运行构建脚本:

./build.sh

构建完成后,Hopper 的可执行文件将位于项目的 install 目录中。你可以将该目录添加到系统的 PATH 变量中,以便在任何地方使用 Hopper。

2.3 使用 Docker 构建

如果你更喜欢使用 Docker 来构建和运行 Hopper,可以使用以下命令:

docker build -t hopper .
docker run --name hopper_dev --privileged -v /path-to-lib:/fuzz -it --rm hopper /bin/bash

2.4 编译库

cJSON 库为例,使用 Hopper 进行编译:

hopper compile --header /cJSON.h --library /libcjson.so --output output

编译完成后,你可以在 output 目录中找到生成的文件。

3. 应用案例和最佳实践

3.1 模糊测试 cJSON 库

假设你已经编译了 cJSON 库,可以使用以下命令启动模糊测试:

hopper fuzz output --func-pattern cJSON_*

3.2 自定义函数模式

你可以通过 --func-pattern 参数来指定要测试的函数。例如,仅测试 cJSON_parse 函数:

hopper fuzz output --func-pattern @cJSON_parse

3.3 使用自定义规则

你还可以通过 --custom-rules 参数来定义自定义规则文件,以更精细地控制模糊测试的行为。

hopper fuzz output --custom-rules path-to-file

4. 典型生态项目

Hopper 可以与以下开源项目结合使用,以增强模糊测试的效果:

  • AFL (American Fuzzy Lop): 用于生成和优化模糊测试用例。
  • LLVM: 用于源代码级别的插桩和优化。
  • E9Patch: 用于二进制代码插桩。

通过结合这些工具,Hopper 可以更全面地覆盖库的 API 使用情况,发现潜在的安全漏洞。

Hopper Hopper is a tool for generating fuzzing test cases for libraries automatically using interpretative fuzzing. Hopper 项目地址: https://gitcode.com/gh_mirrors/ho/Hopper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶名战Blanche

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值