使用Afl-fuzz (American Fuzzy Lop) 进行fuzzing测试(四)——直接对二进制进行fuzzing

本文介绍了如何使用AFL-fuzz的QEMU模式对无法使用afl-gcc编译的黑盒、闭源二进制程序进行模糊测试。通过QEMU的user emulation模式,即使存在性能开销,仍能实现对目标程序的压力测试。文章涵盖了环境搭建、使用方法、注意事项以及静态重写等替代方案。
摘要由CSDN通过智能技术生成

本文不完全译自:afl-2.49b/qemu_mode/README.qemu
转载请注明出处。

1. 引言

本目录下的代码可以利用QEMU 的“user emulation”模式帮助建立独立特征,并允许调用者获得黑盒、闭源的二进制程序的插桩输出。这一机制能支持afl-fuzz用于无法使用afl-gcc编译的目标程序的压力测试(stress-test)。

通常情况下,使用这种方式对程序性能开销会有2-5x的性能下降,即使是这样,仍然比DynamoRIO和PIN等工具要好。

思路和大部分代码实现都来源于Andres Griffiths。

2.如何使用

这一特性是在实现QEMU 2.3.0上实现的一个相当简单的path的基础上完成的。最简单的方式是运行./build_qumu_support.sh脚本建造(build)环境。这一脚本会自动下载、配置(configure)以及编译好QEMU二进制。

QEMU是一个非常大的项目,所以这一个过程会比较耗费时间,另外可能还需要解决依赖项问题,典型的如lib和glib2-devel等。

一旦二进制编译完成,就可以通过在命令行中添加-Q参数的方式调用afl-fuzz和所有相关工具使用QEMU工具。

需要注意的是,QEMU需要设置充足的内存限制(memory limit)才能运行;200MB是个比较好的初始设置,但对复杂程序,需要把这一值设置成更大才行。当指定-Q参数时,默认-m限制将会自动增加到200 MB。

原则上来说,如果在调用./build_qemu_support.sh之前设置CPU_TARGET,则应该建立运行非本地二进制(可以尝试 CPU_TARGET

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值