Управляемый фаззинг-планировщик потоков для 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
В «x64 Native Tools Command Prompt for VS 2019/2022»:
cd src\targets
nmake /F Makefile.msvcВ build/ появятся server.exe, service.exe, worker_app.exe.
Тулчейн:
- 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
makepython -m pip install -r requirements.txtfrida нужна только при работе с реальными 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-runresults/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 | накладные расходы фаззера, % замедления относительно нативного запуска |