用AFL编译开源软件

写在开头,附上参考链接

如何使用AFL进行一次完整的fuzz过程

接上一篇我对AFL的入门实践 AFL的入门学习


实验环境

ubuntu 16.04(虚拟机) 内存分配4gb

afl 2.52b

以 bento4 为例

Bento4 is a C++ class library and tools designed to read and write ISO-MP4 files.

  • 下载
    1
    sudo git clone https://github.com/axiomatic-systems/Bento4
  • 解压
    1
    sudo unzip Bento4-master.zip
  • 新建一个文件夹,并选择编译器

这里虚拟机记得赋予权限sudo,服务器上为root可能不需要

  • gcc/g++重新编译目标程序的方法是:

CC=/path/to/afl/afl-gcc ./configure

  • 对于一个C++程序,要设置:

CXX=/path/to/afl/afl-g++

afl-clang和afl-clang++的使用方法类似

1
2
3
sudo mkdir build
cd build
sudo cmake DCMAKE_CXX_COMPILER=afl-g++ ..

如出现下图则说明编译成功
编译开源软件1

  • make编译

显示下图则说明编译成功,等待片刻即可进行下一步操作
编译开源软件2

编译开源软件3
此时输入file **即可发现生成的为elf文件

  • 进行fuzz
    1
    sudo afl-fuzz -i /your/tesecase -o /your/fuzz_out_file ./elf_file @@ /dev/null
    • 这里的测试文件(input)后面不要加路径”/“,输出文件可自动生成
    • 可以加参数 -m 的数字即代表使用多少内存来运行

编译开源软件4

这个时间比较漫长,耐心等待即可(一个空的样例基本需要半个小时)。最好在服务器上跑。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!