Skip to content

SENATOROVAI/Fuzzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Concurrency Fuzzing Scheduler

Управляемый фаззинг-планировщик потоков для PE-бинарей под Windows. Ищет многопоточные дефекты — гонки данных, deadlock'и, нарушения атомарности и livelock'и — в исполняемых файлах без исходного кода.

Архитектура: гибридная.

  • Frida-агент (src/agent/agent.js) живёт в адресном пространстве цели и хукает Win32 API синхронизации (CreateThread, WaitForSingleObject, EnterCriticalSection, CreateMutex, SetEvent и т. д.). На каждом хуке отправляет событие наружу и опционально паркует поток.
  • Контроллер на Python (src/controller/) принимает события, ведёт пул расписаний, мутирует их (swap, insert, delete, replace, crossover, lock-inversion, hold-extension, dependency-cut), детектирует дефекты по трассе и считает метрики Nbugs, Tfirst, Cinter, Rrep, Operf.
  • Тестовые цели (src/targets/) — три синтетических многопоточных программы на C под Windows с подсаженными ошибками синхронизации.

Структура

src/
  targets/
    server.c            data race + deadlock + atomicity + livelock
    service.c           data race + deadlock + atomicity
    worker_app.c        data race + deadlock + atomicity
    Makefile            MinGW-w64 (cross-build PE)
    Makefile.msvc       nmake для x64 Native Tools Command Prompt
  agent/
    agent.js            Frida agent: хуки Win32 sync API
  controller/
    controller.py       пайплайн: spawn → attach → schedule → metrics
    scheduler.py        генератор и мутации расписаний потоков
    detector.py         эвристический детектор по трассе
    metrics.py          SessionMetrics: Nbugs, Tfirst, Cinter, Rrep, Operf
  experiment.py         прогон 3 бинарей × 2 режима + report.md
requirements.txt

Сборка тестовых бинарей

MSVC (Windows, рекомендовано)

В «x64 Native Tools Command Prompt for VS 2019/2022»:

cd src\targets
nmake /F Makefile.msvc

В build/ появятся server.exe, service.exe, worker_app.exe.

MinGW-w64 (Windows / Linux / macOS — кросс-сборка)

Тулчейн:

  • macOS: brew install mingw-w64
  • Debian/Ubuntu: sudo apt install gcc-mingw-w64
  • Windows: MSYS2 → pacman -S mingw-w64-x86_64-gcc

Сборка:

cd src/targets
make

Зависимости контроллера

python -m pip install -r requirements.txt

frida нужна только при работе с реальными PE на Windows. Если её нет, контроллер автоматически переходит в синтетический режим (--transport synthetic) — он воспроизводит ту же логику без инструментации и используется для дев-машин и CI.

Запуск

Полный эксперимент

# Windows + Frida (полноценный прогон):
python src/experiment.py --duration 60 --transport frida --target-dir build

# Любой хост, синтетический транспорт (быстрая проверка):
python src/experiment.py --duration 8 --transport synthetic

После прогона:

  • results/<target>_<mode>.json — сырые метрики per-run
  • results/summary.json — агрегаты
  • results/report.md — markdown-отчёт со сводными таблицами

Одиночный прогон

python -m src.controller.controller build/server.exe \
       --mode managed --duration 60 \
       --out results/server_managed.json
Флаг Значения Назначение
--mode managed | standard управляемый планировщик или базовый стохастический фаззинг
--transport frida | synthetic | auto реальный Frida или симуляция трассы
--duration секунды длительность сессии
--seed int RNG для воспроизводимости

Метрики

Обозначение Описание
Nbugs количество уникальных многопоточных дефектов
Tfirst время до первого найденного дефекта
Ntypes число различных типов дефектов
Cinter покрытие интерливингов (уникальные последовательности переключений)
Rrep доля дефектов, воспроизводимых при повторном запуске с тем же seed
Operf накладные расходы фаззера, % замедления относительно нативного запуска

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors