The internal AFL IDs are not guaranteed to be unique
On Jan 16, 2018, at 5:07 PM, Stefan Nagy <sna...@vt.edu> wrote:Michal,The internal AFL IDs are not guaranteed to be uniqueCan you please elaborate on how they might not be unique?Right now my goal is to extract the addresses of each basic block and their coverage for later processing.My problem with using gcov is that this limits me to white-box only.
I believe monitoring the bitmap would be more fruitful; coverage of path A->B would intuitively mean blocks A,B are both covered.My understanding of AFL's bitmap is that each entry corresponds to path hashes, and each value is its updated coverage.If this is correct, how exactly does AFL associate the bitmap path hash with the basic block addresses?Lastly, with afl-showmap, can the tuples outputted be cross referenced with the bitmap? I'm not totally sure I understand what its output is meant to represent.Thank you for your help!Best,-Steve
On Monday, January 15, 2018 at 3:57:02 PM UTC-5, Stefan Nagy wrote:Thank you!
On Wednesday, January 10, 2018 at 2:52:51 PM UTC-5, Michal Zalewski wrote:> I'm wanting to keep track of basic blocks as they are covered during
> fuzzing. My intuition is that this requires inserting some code in the
> handling of the bitmap to de-randomize block IDs. If anyone can share a
> better understanding of how AFL maintains basic block coverage I would be
> appreciative.
The internal AFL IDs are not guaranteed to be unique, etc. You're
probably best off doing this using a completely separate mechanism.
The simplest near-real-time solution I can think of is: check
<out_dir>/queue/ regularly, and when there is a new file, pass it to
the target binary compiled with gcov, capture gcov data, add it to
your list of basic blocks explored in your fuzzing project.
Also check out afl-cov :-)
/mz
--
You received this message because you are subscribed to the Google Groups "afl-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to afl-users+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
/mz
--
You received this message because you are subscribed to the Google Groups "afl-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to afl-users+unsubscribe@googlegroups.com.
/mz
See above; AFL really doesn't care about any meaningful representation
of the underlying code, it just wants to see new values when something
changes with the execution path.
If you're talking about fuzzing closed-source binaries, then it's
computed from block address in the code in qemu_mode/.
afl-2.49b/qemu_mode/qemu-2.3.0/rules.mak:57: recipe for target 'user-exec.o' failed
make[1]: *** [user-exec.o] Error 1
Makefile:173: recipe for target 'subdir-x86_64-linux-user' failed
make: *** [subdir-x86_64-linux-user] Error 2