关于AFL fuzz
AFL fuzz是一个模糊测试工具,它封装了一个GCC/CLang编译器,用于对被测代码重新编译的过程中进行插桩。插桩完毕后,AFL fuzz就可以给其编译过的代码输入不同的参数参数,跟踪被测代码的执行路径,并判定对输入的变异能否触发新的已知或未知执行路径。
某些情况下,你可能不想重新编译被测代码,或者根本没有被测程序的源代码,因此无法用编译的方式插桩。针对这种情况,AFL fuzz提供了QEMU模式,QEMU即“user emulation”的缩写,相当于是黑盒测试,主要用于压力测试(被测系统性能将下降2~5倍,但相比如DynamoRIO、PIN这些工具,QEMU的性能还算不算了)。
安装
AFL fuzz的安装非常简单,只需要去官网下载最新版本的源代码,解压缩后依次执行下面的指令:
make
sudo make install
若需要使用QEMU模式,参见下面的步骤:
1、使用./build_qemu_support.sh 脚本进行构建,其会自动下载、配置并编译QEMU的二进制代码,此过程比较耗时,且这一过程中需要解决一些依赖包的问题(必须的依赖包:libtool、glib2-devel)。
2、编译完成后,在afl-fuzz的启动参数中加入“-Q”即可启用QEMU模式。
注意:
1、QEMU模式需要较大内存空间,建议的最低配置为200M,负责项目则需要更多。当在afl-fuzz的启动参数中指定的-Q参数时,afl-fuzz会自动设置-m参数,默认值为200M。