0x1F9F1/pattern-bench

★ 35Forks 7C++GitHub ↗Compare

README

pattern-bench

Build status

A randomized benchmark for pattern scanners. Also good at finding bugs.

Build

cmake -S . -B build
cmake --build build --config Release

Benchmark Modes

Use --loglevel 1 for progress reporting.

1) Single Run (default mode)

Random synthetic data (default behavior):

out\Release\bin\pattern-bench.exe --suite single --data_mode random --tests 64 --full true --loglevel 1

Single realistic corpus in single mode:

out\Release\bin\pattern-bench.exe --suite single --data_mode synthetic_realistic --corpus mixed --tests 64 --full true --loglevel 1

2) Realistic Suite

Runs synthetic realistic corpora and prints per-corpus results + aggregate leaderboard.

All corpora:

out\Release\bin\pattern-bench.exe --suite realistic --corpus all --tests 8 --full true --loglevel 1

One corpus only:

out\Release\bin\pattern-bench.exe --suite realistic --corpus code --tests 8 --full true --loglevel 1

Available corpora:

  • mixed
  • code
  • structured
  • text
  • padding
  • entropy

3) Pathological Suite

Runs all pathological/degen stress cases and prints aggregate leaderboard:

out\Release\bin\pattern-bench.exe --suite pathological --tests 8 --full true --loglevel 1

4) Combined Suite

Runs everything in one pass:

  • random baseline
  • realistic suite (all corpora)
  • pathological suite (all cases)
out\Release\bin\pattern-bench.exe --suite combined --tests 8 --full true --loglevel 1

Useful Options

Filter to one scanner:

out\Release\bin\pattern-bench.exe --suite combined --filter "x64dbg" --tests 8 --full true --loglevel 1

Lock seed for reproducibility:

out\Release\bin\pattern-bench.exe --suite realistic --corpus all --seed 0x88BEA0B2 --tests 8 --full true --loglevel 1

Run only one generated test index:

out\Release\bin\pattern-bench.exe --suite single --test 0 --tests 1 --full true --loglevel 4

Change region size (bytes):

out\Release\bin\pattern-bench.exe --suite realistic --corpus all --size 33554432 --tests 8 --full true --loglevel 1

Smoke Tests

Smoke-only check:

out\Release\bin\pattern-bench.exe --smoke_only true

Skip smoke checks:

out\Release\bin\pattern-bench.exe --skip_smoke

File Benchmark

Benchmark against a real binary file (--file supports --suite single only):

out\Release\bin\pattern-bench.exe --suite single --file "C:\path\to\binary.exe" --tests 64 --full true --loglevel 1

Failure Logs

Failure details are always logged to unique files under:

failure_logs/

Each run creates a timestamped JSONL session file, plus per-failure binary dumps when mismatches happen.

Contributors

0x1F9F1mrexodiap0lymeric

Issues