Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
rats-re — Реконструирует устаревшие Windows-бинарные файлы в исходный код C, объединяя экспорт декомпилятора Ghidra с локальными LLM, создавая кандидатов, прошедших проверку компиляцией, и отчёты на основе схожести. | Kitploit
Инструменты/GitHubGitHub/neuromancer/rats-re
Обратная инженерияАнализ Бинарных ФайловМашинное ОбучениеОбратная Разработка с Помощью ИИ
GitHubneuromancer/rats-re

rats-re

Реконструирует устаревшие Windows-бинарные файлы в исходный код C, объединяя экспорт декомпилятора Ghidra с локальными LLM, создавая кандидатов, прошедших проверку компиляцией, и отчёты на основе схожести.

Репозиторий
2282 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Rats! восстановление исходного кода с помощью локальных LLM

Этот репозиторий — незавершённая реконструкция исходного кода RATS.EXE, оригинальной Windows-версии игры Rats! (1994) Шона О'Коннора. Проект собирает Win32-исполняемый файл с помощью Microsoft Visual C++ 4.1 под wibo и может быть протестирован в DREAMM.

Эксперимент исследует, насколько далеко локальные LLM могут продвинуть реконструкцию исходного кода на небольшой, но реалистичной кодовой базе, а не на игрушечном примере. Точность совпадения остаётся неравномерной, что здесь полезно: цель — показать реалистичную картину процесса и его текущих ограничений, а не прятать сложные функции.

Реконструкция функций ограничена локальными LLM. Codex и Claude используются для настройки репозитория и оркестрации бенчмарков, но им не разрешено писать или редактировать реконструируемый исходный код.

Если не указано иное, во всех экспериментах использовалась Qwen3.8 27B BF16 на MacBook Pro 2024 года с Apple M4 Max (16-ядерный CPU, 40-ядерный GPU) и 128 ГБ памяти. Подход работает — неидеально, но с пользой: на реконструкцию 36 сохранённых функций ушло в среднем 2m 32.1s на каждую (время по журналу).

Установка

Клонируйте с подмодулями или инициализируйте их после клонирования:

git submodule update --init --recursive

Оригинальный исполняемый файл не включён. Скачайте бесплатную Windows-версию с официальной страницы Rats! и поместите её RATS.EXE в корень репозитория, чтобы использовать цели original-executable и binary-comparison.

Часто используемые команды

make                 # build out/RATS_RE.EXE, .map, .obj, and .asm
make toolchain       # download, extract, and verify Microsoft Visual C++ 4.1
make run             # launch the rebuilt executable in DREAMM
make run-original    # launch the preserved original RATS.EXE
make test            # bounded DREAMM smoke test of the rebuilt executable
make test-original   # bounded DREAMM smoke test of the original executable
make debug           # start the rebuilt executable in DREAMM's debugger
make report          # report similarity for every reconstructed function
make compare-func FUNC=SaveHighScores ADDR=00409092

Архив MSVC 4.1 с фиксированной контрольной суммой, необходимые библиотеки MSVC 4.1, совместимая с wibo msvcrt40.dll и DREAMM 4.0x21 загружаются по требованию. Они остаются игнорируемыми локальными зависимостями сборки и не фиксируются в репозитории.

Рабочий процесс реконструкции

Включённый в репозиторий каталог ghidra/ содержит экспорт ассемблера и декомпилятора для всех 177 внутренних функций. Ассемблер является эталоном для сравнения; декомпилированный C — лишь семантическая затравка.

Установите binary-recons один раз, затем запускайте его из корня репозитория:

python3 -m pip install -e /path/to/binary-recons
binary-recons --next-function           # reconstruct the next safe missing target
binary-recons --address 0x409092        # reconstruct or improve a specific target

Инструмент автоматически находит Qwen в стандартном кэше Hugging Face; BINARY_RECONS_MODEL_PATH может переопределить его. binary-recons.toml удерживает автоматический выбор в пределах диапазонов игрового кода, запускает и останавливает llama.cpp, а также определяет транзакционные файлы и команду binary-comp. Каждый ограниченный запуск засевает одну функцию из Ghidra, запрашивает у Qwen точечные исправления компиляции или расхождений в ассемблере и сохраняет лучшего безопасно компилирующегося кандидата. Используйте --target-score 95 для более глубокого прохода или --dry-run-prompt, чтобы просмотреть промпт без загрузки Qwen.

Результаты замеров запусков локальных моделей записаны в docs/MODEL_RESULTS.md.

Результаты моделей: 36 сохранённых функций и 3 отложенных адреса

Большинство сохранённых кандидатов было сгенерировано с помощью Qwen3.8 27B GGUF от Unsloth в BF16 (Qwen3.8-27B-BF16, обслуживалась как qwen3.8-27b-bf16) через llama.cpp с контекстом в 32 768 токенов и пресетом модели qwen. Текущий рабочий процесс использует декомпиляцию Ghidra как механическую затравку, запрашивает у Qwen только осмысленный контракт и ограниченные правки исходного кода, следует за валидными правками как траекторией восстановления и сохраняет лучший результат по замерам binary-comp. Gemma 4 31B IT BF16 также тестировалась в бенчмарке, но ни один из её кандидатов не сохранён в дереве исходников.

Показатели ниже были пересчитаны по текущему дереву исходников с помощью MSVC 4.1 и binary-comp 16 августа 2026 г. Записанное время включает запуск управляемого сервера, генерацию или восстановление, сборку и сравнение для сохранённого кандидата. Оно не включает неудачные исследовательские запуски и циклы правок, выполненные после того, как возобновляемый кандидат уже был получен; они остаются доступными в журналах запусков.

АдресФункцияТекущее сходствоЗаписанное время
0x0040215CIsLevelIndexInRange65.31%3m 06.4s
0x00402205ShowLevelComplete93.96%5m 26.1s
0x0040250CSubmitHighScore97.37%1m 49.7s
0x004026D0RenderScoreboard95.40%2m 30.9s
0x00402BF3AddLevelToTable73.85%4m 04.6s
0x00402DC6UpdateGameDisplay78.18%1m 36.4s
0x00402EE7GetLevelDisplayInfo71.70%2m 15.9s
0x00402FD5GetLevelIndex87.27%5m 48.3s
0x00403430IsBombAtLevel80.62%27.3 s
0x00403607PlaceLevel80.00%2m 32.6s
0x00404764DrawLevelIndicator97.33%1m 35.6s
0x0040499FRenderCornerGlyph69.83%1m 50.9s
0x00404D6EDrawBitmapPair98.67%1m 04.6s
0x00404E3BRenderBitmapToWindow94.74%26.4 s
0x00404ECEDrawBitmapToWindow95.59%59.3 s
0x00404F8BDrawScore96.20%1m 32.4s
0x0040507FDrawScorePanel97.97%2m 45.0s
0x0040525DDrawScoreDigits94.20%2m 13.7s
0x00405343RenderScoreOverlay77.78%1m 28.1s
0x0040546BDrawFrameBorder84.93%37.0 s
0x0040552EExplodeBomb64.71%1m 50.9s
0x0040560ERenderExplosionWave85.07%5m 40.0s
0x0040591ADrawBombExplosion89.31%1m 45.8s
0x00405AF5DrawPausedOverlay96.21%1m 05.1s
0x00405C52HighScoreDialogProc79.82%41.5 s
0x00405DB8ScorePanelDialogProc50.34%1m 53.1s
0x00405F72DemoVersionDialogProc46.31%4m 18.5s
0x004061D3OrderDialogProc53.16%10m 46.5s
0x00408854DrawStartButton70.80%1m 35.6s
0x00408A51UpdateMainMenuState97.56%28.9 s
0x00408AD3InitializeGameLevel83.72%5m 35.7s
0x00408E6ALoadLevelData77.50%52.5 s
0x00408F02LoadHighScores79.61%1m 15.0s
0x00409092SaveHighScores94.12%1m 25.9s
0x0040910CLoadLevelBitmaps98.93%7m 08.4s
0x00409DB6IsRatsHelpFile91.67%41.5 s

Попытки реконструкции для следующих адресов были исчерпаны без сохранения реализации исходного кода. Затраченное время указано суммарно по всем записанным попыткам.

Скачать инструмент