Skip to content

sevenseasofbri/EmuFuzz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

EmuFuzz

Project for CS6223 by Vishruti Ranjan (@sevenseasofbri) and Mausam Piyush Vora (@mausamvo)

EmuFuzz is a structure-aware fuzzer for CPU emulators, specifically for the ARM32 ISA. It uses LibFuzzer as its core fuzzing engine and custom structure-aware mutations.

Setup

Compiling EmuFuzz

  • Navigate to unicorn/tests/fuzz on your device
  • Put the mutator_arm32.c file and arm_seeds folder there
  • Run:
clang -fsanitize=address,fuzzer mutator_arm32.c ../../build/libunicorn.a -I../../include -o mutator_arm32 -lcapstone -lkeystone -DCUSTOM_MUTATOR
  • Ensure clang, capstone and keystone are installed in default locations on your computer. Else you will have to modify the above command depending on the installation location.

Running EmuFuzz

  • Create a folder arm_corpus/ in unicorn/tests/fuzz to store the new corpus files from the fuzzing run
  • On MacOS you can simply run the fuzzer with seeds using the following command:
./mutator_arm32 arm_corpus/ arm_seeds/
  • On Ubuntu, run the fuzzer like this:
./mutator_arm32 arm_corpus/ arm_seeds/ -detect_leaks=0
  • This fuzzer has not been tested on Windows-based systems.

About

EmuFuzz is a structure-aware fuzzer for CPU emulators, specifically for the ARM32 ISA.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages