| .. | ||
| argv-fuzz-inl.h | ||
| argvfuzz.c | ||
| Makefile | ||
| README.md | ||
argvfuzz
AFL++ supports fuzzing file inputs or stdin. When source is available,
argv-fuzz-inl.h can be used to change main() to build argv from stdin.
argvfuzz tries to provide the same functionality for binaries. When loaded
using LD_PRELOAD, it will hook the call to __libc_start_main and replace
argv using the same logic of argv-fuzz-inl.h.
A few conditions need to be fulfilled for this mechanism to work correctly:
- As it relies on hooking the loader, it cannot work on static binaries.
- If the target binary does not use the default libc's
_startimplementation (crt1.o), the hook may not run. - The hook will replace argv with pointers to
.dataofargvfuzz.so. If the target binary expects argv to be living on the stack, things may go wrong.