Skip to content

Latest commit

 

History

History
53 lines (47 loc) · 1.21 KB

README.md

File metadata and controls

53 lines (47 loc) · 1.21 KB

InsTrim

The paper: InsTrim: Lightweight Instrumentation for Coverage-guided Fuzzing

Build

Prerequisite

  • llvm-8.0-dev
  • clang-8.0
  • cmake >= 3.2

Make

git clone https://github.com/csienslab/instrim.git
cd instrim
cmake .
make

Patch and build AFL Fuzzer

Run build_afl.sh or

wget http://lcamtuf.coredump.cx/afl/releases/afl-2.52b.tgz
tar -xvf afl-2.52b.tgz
cd afl-2.52b
patch -p1 < ../instrim/afl-fuzzer.patch
make
cd llvm_mode
make

Usage

Setup the environment

export INSTRIM_LIB=[absolute path of instrim/libLLVMInsTrim.so]

Instrument the target program

With Instrim

MARKSET=1 afl-2.52b/afl-clang-fast [compilation options, your target ...]

With Instrim-Approx

MARKSET=1 LOOPHEAD=1 afl-2.52b/afl-clang-fast [compilation options, your target ...]

Skip single block functions

The following is recommendable for C/C++ targets that are not using vtables or similar techniques:

MARKSET=1 SKIPSINGLEBLOCK=1 afl-2.52b/afl-clang-fast [compilation options, your target ...]

Finally

Then you can use AFL with LLVM mode to fuzz those instrumented binaries.