Code Monkey home page Code Monkey logo

fizil's Introduction

Fizil

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

Getting Started

  1. Clone repo, cd into root (solution) directory
  2. Restore packages (only needed first time)
  3. ./.paket/paket.bootstrapper.exe
  4. ./.paket/paket.exe install --redirects
  5. Build (in VS or from the command line just type msbuild if it's in your path)
  6. Init demo project (only needed first time). Use --init. Two ways you can do this:
  7. In VS, right click Fizil project, Properties, Debug, add --init to Command line arguments
  8. From command line, change to project folder and then Fizil\bin\Debug\Fizil.exe --init. Copy appropriate files into system-under-test and examples folders
  9. Instrument:
  10. In VS, right click Fizil project, Properties, Debug, add --instrument to Command line arguments
  11. From command line, change to project folder and then Fizil\bin\Debug\Fizil.exe --instrument
  12. Run from VS or command line.
  13. In VS, press F5
  14. From command line, change to project folder and thenFizil\bin\Debug\Fizil.exe

Gratitude

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.

Open Source License Information

Fizil is released under the Apache license 2.0. See license.txt

Fizil depends on:

fizil's People

Contributors

craigstuntz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

yukibonji asll666

fizil's Issues

Write an out of process server

Out of process fuzzing is slow because each exec requires process and .NET framework startup.

In process fuzzing is slow because no process isolation == can't run execs concurrently.

Best of both worlds would be something like AFL's fork server. But Windows doesn't fork.

I propose:

  1. Separate execution code from rest of fuzzer.
  2. Write a new out of process server which can be invoked by fuzzer and will run the exec in process.
  3. Fuzzer launches as many of these as there are CPU cores, and hands them new test cases as needed via IPC.

Add chaos mode

Similar to AFL, after deterministic fuzzing is complete, splice and slice new paths and repeat.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.