MCPcopy Create free account
hub / github.com/GJDuck/e9afl

github.com/GJDuck/e9afl @v0.9.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.9.0 ↗ · + Follow
38 symbols 70 edges 3 files 24 documented · 63% updated 18mo agov0.9.0 · 2023-01-30★ 311

Browse by type

Functions 28 Types & classes 10
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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:

    $ ./build.sh

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

    $ ./install.sh

Usage

First, install afl-fuzz:

    $ sudo apt-get install afl

To use E9AFL, simply run the command:

    $ ./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:

    $ man -l doc/e9afl.l

Example

To fuzz the binutils readelf program:

    $ ./e9afl readelf
    $ mkdir -p input
    $ mkdir -p output
    $ head -n 1 `which ls` > input/exe
    $ 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:

    $ ./e9afl --redfat readelf

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

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

    $ 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:

    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

Core symbols most depended-on inside this repo

Shape

Function 28
Class 5
Enum 5

Languages

C++82%
C18%

Modules by API surface

e9AFLPlugin.cpp19 symbols
e9afl.cpp12 symbols
afl-rt.c7 symbols

For agents

$ claude mcp add e9afl \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page