Summary
You can view the completed source for the fuzzer here.
In this exercise, we learned:
- About creating rust library and binary crates
- How to add dependencies
- What LibAFL_Targets does
- How to choose and create a good fuzz target
- About Rust memory and ownership semantics
- How to unsafely allocate memory
- How to implement a simple decoder
- How to unit test a rust function
- How to instrument a library with SanitizerCoverage
- How to link a fuzzer with a static library
- How to set a new global allocator
- How to create a fuzzer using LibAFL including all its components
- Observers
- Feedbacks
- Fuzzers
- Monitors
- Mutators
- Schedulers
- Stages
- Executors
- ...
- How to parse command line arguments
- How to find crashing inputs using a fuzzer and fix the bugs that cause them