Skip to content

Latest commit

 

History

History
40 lines (26 loc) · 2.16 KB

README.md

File metadata and controls

40 lines (26 loc) · 2.16 KB

Symbolic Fuzzer

A symbolic fuzzer that can generate input values symbolically with the following assumptions:

  • No recursion
  • All variables are annotated with the type information
  • The only container used in programs are list of integers with a maximum size of 10

The key idea is as follows: We traverse through the control flow graph from the entry point, and generate all possible paths to a given depth. Then we collect constraints that we encountered along the path, and generate inputs that will traverse the program up to that point.

This tool can:

  • Generate and print the path constraints in the program.
  • trace each constraint to the part of code that created the constraint.
  • Generate the corresponding unsat core and the statements related to an unsatisfiable path.

We used the symbolic fuzzer that is available at The fuzzing book as the basis of our tool.

Getting Started

  • git clone https://github.com/realsarm/my-symbolic-fuzzer.git
  • cd .\my-symbolic-fuzzer
  • python -m venv myvenv
  • .\myvenv\Scripts\activate.bat
  • pip install -r requirements.txt

Prerequisites

To render the generated DOT source code, you also need to install Graphviz(installation procedure for Windows)

Installing

Potential Future Extensions

  • Function call to self-contained void methods.