-
-
Notifications
You must be signed in to change notification settings - Fork 336
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Documentation: Provide a flowchart to guide users in choosing which features to use for their fuzzers #833
Comments
Great idea. I'll start with some things we should discuss: Windows/Linux/MacOS/kernel/no_std? On top, advanced topics Then, which inputs does the target take? Is the target leaking memory? > Restarting |
|
Instead of a flowchart, I'd recommend a sequence of menus. Reason being: many of these choices are independent. For example, suppose you're fuzzing multiple different versions of the same binary in different contexts (windows vs linux); you likely want the same fuzzer behaviour, just different platforms. Having a flowchart would either need a) multiple independent flowcharts, which may not be reasonable if some options are not available for particular platforms (e.g., fork on windows) or b) repeated sections. Instead, it would probably make more sense to have an interactive menu system, with explanations for why certain options are not available based on previous selections. This could be implemented as a cargo generate template with a bit of scripting work, or as a standalone tool to generate full libafl crates. |
Besides having a guide on what features to use when, it would also be VERY useful on knowing how to develop a fuzzer (from less features to more). For example, if I see a qemu-systemmode fuzzer that spawns automatically many instances, uses many features, and works on a strange system its hard to even get a minimal example working to start testing on another target, because I have to substract everything away and often the example components are entangled. I think that would go hand in hand with the initial suggestion. |
LibAFL is starting to become very feature-full, and will probably continue to grow in this regard.
It would be extremely useful to have a flowchart or decision tree which helps guide users in choosing which features to use for their fuzzer, based on their requirements. This should include major runtime modes (such as frida/qemu/nyx etc.), as well as other library features (schedulers, stages, observers, feedbacks, launcher, etc.).
Ideally, the decision tree should also point out which example fuzzer demonstrates each feature.
The text was updated successfully, but these errors were encountered: