qiling
qiling copied to clipboard
Understanding Qiling fuzzing
Hi,
I'm trying to understand at a high level how Qiling fuzzes with AFL++ and unicorn. The fuzzing examples and documentation don't fully explain it. So here's a few questions:
- When I set the hook that starts the fuzzing (
ql.hook_address(start_afl, target_func_addr, thenql.run()) does this do the following?- emulates until
target_func_addris hit - starts the fuzzing engine which generates the inputs
- fuzzer/Qiling then only calls
target_func_addrand doesn't restart the binary from the beginning for each fuzz? - If the binary isn't restarted for each fuzz then what is Qiling using in the register values each time
target_func_addris called? - What happens with the emulators memory, do heap objects persist or are they cleared for each fuzz?
- emulates until
Any sort of diagram / order of events explaining how the fuzzing works would be great!
Thanks for reading and thanks for the excellent project