> Just a tidbit to clarify things....
> 1. The CONFIG is sent to the binary*_every time_* it boots up. Once the
> binary receives the CONFIG, I can do its thing and we could even shut
> off the program that sends the configs. It could also be transmitted by
> saving the data in a file or variable and sending it over UDP to our
> target ( cat config_file > /dev/udp/IP_ADDR/PORT).
so on any event that resets or has to reset the target the config has to
be pushed again.
the question is then in what occasions you have to resend the config.
if thats only for a crash then use the afl-fuzz -I command line option
to initiate a restart and push of the config.
if that is also required for timeouts, then you have to patch afl-fuzz
to act also on that for the -I option.
For how to send the config when the target is started I am not sure what
the best way is. mabyw another hack for afl-fuzz -I to run this commmand
before calibration starts.
> 2. As far as getpeername()... my test binary does not use it and I'm
> almost 100% positive that the target binary doesn't either.
that was just an example. the target might use some socket functions on
the accept filedescriptor which will fail as it is not a socket if you
use preeny. follow that with strace, and hook them too in the ld_preload
lib.
> 2. How could I go about sending the config data and then create a
> snapshot of the memory/registers/IP at that time? I'm not sure Qemu's
> Persistent Mode is right for this but it's where we were looking.
in afl++'s user qemu_mode only the registers can be snapshotted and
restored, nothing else.
> For the NETWORKING
> 1. I'm going to look into Preeny in just a moment. If desock can shift
> from network to stdin inputs (which is how it appears at a cursory
> glance), it could be another option as well for general use, especially
> outside of my thesis.
> 2. For my testing, I can use it since I'm using Ubuntu 18, but I'm not
> sure if the target binary would benefit from Preeny (older embedded ARM
> system and might have incompatibility issues). I saw ARM mentioned in
> comments in the MAKEFILE but since I'm not directly working on the
> embedded system, I can't verify this. This is why advisor mentioned
> modifying AFL++ (he did for the other system) to send over tcp/udp
> instead of stdin/file. I wouldn't actually have to do this modification
> for my thesis, merely discuss it.
well you will have to cross compile preeny to arm to make this work.
Regards,
Marc