项目作者: GJDuck

项目描述 :
AFL binary instrumentation
高级语言: C++
项目地址: git://github.com/GJDuck/e9afl.git
创建时间: 2020-09-13T03:29:28Z
项目社区:https://github.com/GJDuck/e9afl

开源协议:GNU General Public License v3.0

下载


E9AFL —- Binary AFL

E9AFL inserts American Fuzzy Lop
(AFL) instrumentation into x86_64 Linux binaries.
This allows binaries to be fuzzed without the need for recompilation.

E9AFL uses E9Patch to insert the
AFL instrumentation via static binary rewriting.

Download

Pre-built packages for E9AFL can be downloaded here:

Building

To build E9AFL, simply run the build.sh script:

  1. $ ./build.sh

To build the Debian package, simply run the install.sh script:

  1. $ ./install.sh

Usage

First, install afl-fuzz:

  1. $ sudo apt-get install afl

To use E9AFL, simply run the command:

  1. $ ./e9afl /path/to/binary

This will generate an AFL-instrumented binary.afl which can be
used with afl-fuzz.

For more information on tool usage, see the man page:

  1. $ man -l doc/e9afl.l

Example

To fuzz the binutils readelf program:

  1. $ ./e9afl readelf
  2. $ mkdir -p input
  3. $ mkdir -p output
  4. $ head -n 1 `which ls` > input/exe
  5. $ afl-fuzz -m none -i input/ -o output/ -- ./readelf.afl -a @@

If all goes well the output should look something like this:


AFL example

Detecting Memory Errors with RedFat

E9AFL can be combined with RedFat for
enhanced memory error detection during fuzzing.
RedFat detects memory errors (bounds overflows and use-after-free) that would
not otherwise crash the program.

To enable, first install RedFat v0.3.0:

Next, pass the --redfat option into E9AFL:

  1. $ ./e9afl --redfat readelf

This will instrument the binary with both AFL and RedFat instrumentation.

To use, preload the libredfat.so runtime library into AFL:

  1. $ AFL_PRELOAD=/usr/share/redfat/libredfat.so afl-fuzz -m none -i input/ -o output/ -- ./readelf.afl -a @@

Troubleshooting

Some instrumented binaries may crash during AFL initialization:

  1. PROGRAM ABORT : Fork server crashed ...

This is often caused by an insufficient memory limit.
See AFL’s -m option for more information.

Further Reading

Bugs

Please report bugs here.

License

GLPv3