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:
_start implementation (crt1.o), the hook may not run..data of argvfuzz.so. If the target binary expects argv to be living on the stack, things may go wrong.