Share your thoughts, 1 month free Claude Pro on usSee more
WorkDL logo mark

PeAR: A Static Binary Rewriting Framework for Binary-Only Fuzzing

About

Binary-only fuzzing is a key technique for finding bugs in close-source software. Without access to source code, the fuzzer must rely on static or dynamic binary instrumentation for coverage guidance. In practice, most fuzzers favor dynamic binary instrumentation (DBI), accepting runtime overhead to avoid the perceived accuracy and soundness challenges associated with static binary instrumentation (SBI). We show that these concerns are unwarranted, and that accurate, scalable~SBI is achievable using off-the-shelf frameworks. Building on these frameworks, we develop PeAR, an extensible binary-only fuzzing framework. We demonstrate PeAR's versatility by implementing several modern fuzzer features -- including, deferred initialization, persistent mode, and shared-memory fuzzing. We evaluate PeAR over 4.25 CPU-yrs of fuzzing on the FUZZBENCH benchmark and find that PeAR: (i) successfully instruments 88% of FUZZBENCH targets, comparable to the best SBI-based fuzzers; (ii) achieves a median throughput improvement of 4x when using persistent mode and shared memory fuzzing; and (iii) attains coverage comparable to compiler-based instrumentation. Our results show that SBI is a practical and effective technique for binary-only fuzzing, and that modern binary rewriting frameworks can apply complex instrumentation with high granularity and negligible performance compromise.

Alvin Charles, Adrian Herrera, Peter Oslington, Alwen Tiu• 2026

Related benchmarks

TaskDatasetResultRank
FuzzingFuzzBench vorbis
Normalized Final Edge Coverage99
9
FuzzingFuzzBench curl
Normalized Median Final Edge Coverage98
8
FuzzingFuzzBench freetype2
Normalized Edge Coverage0.73
8
FuzzingFuzzBench harfbuzz
Normalized Median Final Edge Coverage98
8
FuzzingFuzzBench libxml2
Normalized Edge Coverage (Median)97
8
FuzzingFuzzBench mbedtls
Normalized Median Final Edge Coverage100
8
FuzzingFuzzBench openh264
Normalized Median Final Edge Coverage1
8
FuzzingFuzzBench lcms
Normalized Median Final Edge Coverage60
8
FuzzingFuzzBench libjpeg-turbo
Normalized Median Final Edge Coverage100
8
FuzzingFuzzBench libpcap
Median Final Edge Coverage1
8
Showing 10 of 20 rows

Other info

Follow for update