Skip to content

Latest commit

 

History

History
49 lines (40 loc) · 1.13 KB

File metadata and controls

49 lines (40 loc) · 1.13 KB

PDGF

PDGF is a Predecessor-aware Directed Greybox Fuzzing tool. It can maintain a target-reachable code area (predecessors) and conduct regional fuzzing within this area.

The instrumentation process relies on the SVF.

The fuzzing process is based on the AFL

Docker

We recommend using docker:

docker pull seussl/pdgf:latest

Run PDGF

  1. Compile with GLLVM
export CC=~/gllvm/gclang
export CXX=~/gllvm/gclang++
  1. Generate Bytecode
~/gllvm/get-bc program	# Replace with actual program
  1. Static Analysis Procedure

3.1 Define Target Points

echo $'fileName:Line' > targets  # Replace with actual file/line info

3.2 Run Static Analysis

~/pdgf/instrument/bin/cbi --targets=targets program.bc

3.3 Record Precondition Metrics

Note: Capture the reported precondition region count for subsequent steps

  1. Generate Instrumented Binary
~/pdgf/fuzz/afl-clang-fast program.bc -o program.ci
  1. Fuzzing Execution
~/pdgf/fuzz/afl-fuzz -i in/ -o out -e 10693 ./program.ci @@

Critical Parameters: -e: Precondition edge count (from Step 3.3)