AFL Instrumentation on binaries via binary patching!
Requires Dispatch to work.
Once you have that it should be a simple matter of:
python patch.py <input_binary> <output_binary>
However, there are a few major caveats right now:
-
We need a handful of libc functions for AFL's instrumentation to work. Right now, we patch in a handful of them, but a few are more complicated and need to be implemented. They are:
getenv
-
This only works on x86_64 Linux ELFs right now, but the switch to other platforms and architectures is mostly a matter of having instrumentation available for the platforms.
-
The way we instrument totally breaks under grsec/PaX, so you can't use it on systems with those protections enabled.