一、简介
honggfuzz项目网站https://github.com/google/honggfuzz
二、安装
安装环境: Ubuntu 16.04 64-bits (虚拟机)
2.1 安装依赖:
需求:Linux - The BFD library (libbfd-dev) and libunwind (libunwind-dev/libunwind8-dev), clang-4.0 or higher for software-based coverage modes
sudo apt-get install libbfd-dev libunwind
安装gcc (版本要> 7.0)
对于ubuntu 16.04,最简单的方式为:
sudo add-apt-repository ppa:jonathonf/gcc-7.1
sudo apt-get update
sudo apt-get install gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70
2.2 安装Honggfuzz
sudo git clone https://github.com/google/honggfuzz.git
cd honggfuzz
make
三、hongfuzz的使用
3.1 对程序进行源码插桩编译
export CC=/path/to/honggfuzz/hfuzz-cc/hfuzz-gcc CXX=/path/to/honggfuzz/hfuzz-cc/hfuzz-g++
honggfuzz/hfuzz-cc目录下提供了编译器的wrapper,其实也可以设置CC, CXX为hfuzz-cc,因为其他的warapper都链接到hfuzz-cc

3.2 用honggfuzz进行fuzz
详细用法见USAGE
假设已用hfuzz-cc插桩编译了软件exiv2, 并make install 到/usr/local/bin中。
./honggfuzz -f input_dir -P -z -- /usr/local/bin/exiv2 -pv __FILE__
-f 指向初始输入的文件夹
-P 表示persistent模式
-z 表示采用插桩模式,及使用了hfuzz-cc 对源码进行编译时插桩,并根据覆盖率对fuzz过程进行反馈、
/usr/local/bin/exiv2:被测二进制程序的路径
-pv: exiv2的运行参数
__FILE__: 相当于AFL中的@@, 在实际的运行中会被input_dir中的输入所替换。

网友评论