A fuzzer.
This is an experiment and doesn't do much yet. Interesting things are coming!
In the meantime, use AFL if you want to do real fuzzing.
Feature | Fizil | AFL |
---|---|---|
Runs on Windows | Yep! | No, but there's a fork |
Runs on Unix | Probably not | Yep! |
Fast | Not so much | Yep! |
Process models | In/Out of process | Out of process, fork server |
Instrumentation guided | Soon? | Yep! |
Automatic instrumentation | .NET assemblies | Clang, GCC, Python |
Rich suite of fuzzing strategies | Getting there! | Yes! |
Automatically disables crash reporting | Yep! | Nope |
Rich tooling | No | Yes |
Proven track record | No | Yes |
Stable | No way | Yes |
License | Apache 2.0 | Apache 2.0 |
- Clone repo,
cd
into root (solution) directory - Restore packages (only needed first time)
./.paket/paket.bootstrapper.exe
./.paket/paket.exe install --redirects
- Build (in VS or from the command line just type
msbuild
if it's in your path) - Init demo project (only needed first time). Use
--init
. Two ways you can do this: - In VS, right click Fizil project, Properties, Debug, add
--init
to Command line arguments - From command line, change to project folder and then
Fizil\bin\Debug\Fizil.exe --init
. Copy appropriate files intosystem-under-test
andexamples
folders - Instrument:
- In VS, right click Fizil project, Properties, Debug, add
--instrument
to Command line arguments - From command line, change to project folder and then
Fizil\bin\Debug\Fizil.exe --instrument
- Run from VS or command line.
- In VS, press F5
- From command line, change to project folder and then
Fizil\bin\Debug\Fizil.exe
This project is heavily inspired by AFL and QuickCheck. It probably wouldn't have been possible for me to write at all without the AFL technical whitepaper and source code comments.
Shout-out to the folks at Microsoft who wrote and maintain peverify and ildasm.
Thank you the authors of and contributors to the fine open source libraries listed below.
Fizil is released under the Apache license 2.0. See license.txt
Fizil depends on:
- Cecil under the terms of the MIT/X11 license
- FSharp.Collections.ParallelSeq under terms of the Apache license 2.0
- FSharp.Configuration under terms of the Apache License
- FsUnit under terms of the MIT license
- Data from FuzzDB under terms of CC-BY
- Data from JSONTestSute under terms of the MIT license
- NUnit under terms of the MIT license
- STJSON under terms of the MIT license