Skip to main content

PRRevers

AI-ассистированный тулз для гейм-девов: извлекает механики, ассеты и форматы данных из Windows и Android игр, чтобы учиться у них и вдохновляться на собственные проекты.

CI Python License Code style: ruff

PRRevers — не декомпилятор, не дизассемблер и не замена тулзам вроде Ghidra, IDA, AssetRipper или Il2CppDumper. Это оркестратор: он связывает эти тулзы вместе, определяет движок, извлекает код/ассеты/данные и использует LLM-агента, чтобы объяснить механики и сгенерировать дизайн-доки, пригодные для использования в вашей собственной игре.

Этика и легальность. PRRevers предназначен исключительно для исследований и обучения. Анализируйте только те игры, которыми вы законно владеете или на которые у вас есть явное разрешение на реверс-инжиниринг. Не распространяйте извлечённый код или ассеты. Прочитайте docs/ETHICS.ru.md перед использованием.

English version: README.en.md


Режимы работы

PRRevers предоставляет шесть CLI-режимов, каждый как отдельная подкоманду:

Команда Что делает Когда использовать
prrevers inspect <file> Разовый прогон: детект движка → экстракция → декомпиляция → анализ → дизайн-док Быстрый обзор одной игры
prrevers session <file> Интерактивный REPL: детект + экстракция один раз, дальше задаёте вопросы Глубокое изучение игры
prrevers compare <a> <b> Side-by-side сравнение двух игр: таблица механик, diff дизайн-доков, отчёт compare/<a>-vs-<b>.md Выбор между стратегиями реализации
prrevers trace <file> Динамика: аттач к запущенной игре (Frida), хуки из статики, трейс → дизайн-док Наблюдение механик в рантайме
prrevers mcp serve MCP-сервер: инструменты PRRevers для Claude Code / Cursor LLM-агент вместо CLI
prrevers catalog <dir> Batch-детект движка для каждого файла в директории, таблица Кураторская библиотека референсов

Утилиты: prrevers tools install/list (установка внешних тулзов в user data dir и статус), prrevers version.

Полное описание — в docs/architecture.ru.md § Режимы работы.

Зачем это нужно?

Реверс-инжиниринг игры, чтобы у неё поучиться — это мультитулзовая, многодневная рутина:

  1. Определить движок (Unity Mono / IL2CPP / Unreal / Godot / кастомный).
  2. Распаковать контейнер (APK / PAK / PCK / OBB).
  3. Запустить правильный экстрактор под правильный формат.
  4. Открыть результат в Ghidra / dnSpy / UModel.
  5. Смотреть на тысячи классов и функций, чтобы найти одну механику, которая вас интересует.

PRRevers автоматизирует шаги 1–3 и добавляет LLM-агента поверх 4–5, который может отвечать на вопросы вроде «как работает инвентарь в этой игре?» и генерировать дизайн-док.

Архитектура

Пайплайн состоит из 4 этапов плюс слой оракулов, который независимо проверяет каждый этап:

[файл] → Детекторы → Экстракторы → Анализаторы (LLM) → Синтезаторы → [ваш проект]
                                            ↑
                                       Оракулы (проверяют каждый этап)

Ключевые архитектурные решения:

  • Плагин-система движков через протокол EngineAdapter + entry_points. Добавить новый движок теперь можно без правки ядра.
  • Типизированная модель Citation вместо list[str] в evidence — верифицируется CitationOracle.
  • Протокол LLMBackend — любой класс, реализующий протокол, можно подключить.
  • Content-addressed кэш — повторный запуск на том же входе почти мгновенный.
  • Сессии — интерактивный REPL с сохраняемой историей Q&A.
  • Stage-level оракулы — DetectionOracle (согласованность вердикта), ExtractionOracle (заявленные файлы против реальной ФС) и RoundTripOracle (побайтовая сверка с оригинальным архивом + SHA256-integrity) проверяют этапы сразу после выполнения.
  • Pure-Python экстракторы — stdlib zipfile/shutil/json+struct покрывают ZIP-контейнеры, Unity-layout и Electron app.asar без установки apktool; первая обёртка над внешним тулзом — ILSpy (prrevers tools install ilspy) — превращает Mono-сборки в читаемый C#.

Полное обоснование архитектуры: docs/architecture.ru.md.

Документация

Документационный сайт (mkdocs-material): архитектура, роадмап, внешние тулзы, этика, кейсы — с навигацией и поиском.

uv sync --extra docs   # или: pip install -e ".[docs]"
mkdocs serve           # localhost:8000
mkdocs build --strict  # проверка: битые ссылки ломают сборку (и CI)

CI собирает сайт в strict-режиме на каждый push.

Статус

main — закрыты v0.1.0 (Unity Mono + web-игры end-to-end), v0.2.0 (IL2CPP: Il2CppDumper + Ghidra headless), v0.3.0 (LLM-анализатор: Ollama / OpenAI / Anthropic / GigaChat / LiteLLM, цитаты file:line), v0.4.0 (REPL-сессии + MCP-сервер), v0.5.0 (Unity-ассеты: AssetRipper → UnityPy fallback + манифест + AssetRoundTripOracle), v0.6.0 (синтез для game-dev: clean-room скелеты Unity C# / Godot GDScript + переводчик шейдеров HLSL→GLSL→AGSL + импортёр уровней (схема v1 → .tscn / C#, LevelRoundTripOracle)), v0.7.0 (Unreal и нативные движки: UnrealPakExtractor + UModelExtractor + GhidraNativeExtractor для кастомных C++ движков + фингерпринтинг кастомных движков — Ren'Py/Cocos2d-x/MonoGame/LÖVE/RGSS/Clickteam → нативная Ghidra-дорога), v0.8.0 (динамический анализ: prrevers trace — аттач к живому процессу через Frida (опциональный extras [frida]), хуки по адресам из собственной статики (дамп Il2CppDumper / Ghidra-манифест), подсистемы inventory/combat/save_load, JSONL-трейс + TraceOracle + trace-to-doc дизайн-док из событий [ts Метод]; без живой игры — честный отказ, трейсы не выдумываются). Экстракция без внешних тулзов: ZIP-контейнеры (APK / OBB / raw ZIP), Windows-установки Unity (Mono / IL2CPP layout), Electron app.asar; декомпиляция Assembly-CSharp.dll → C# через ILSpy (prrevers tools install ilspy; без тулза — честный warning, не тихая деградация); распаковка Unreal .pak — тулзом из установки движка ($UNREAL_PAK), экспорт ассетов — UModel (gildor.org, вручную). Детекция движков реальная (Unity Mono/IL2CPP, Unreal, Godot, GameMaker, Web — Cordova/Capacitor/Electron, известные кастомные — фингерпринтингом строковых маркеров). Анализ — реален при подключённом LLM-бэкенде; синтез — дизайн-доки + clean-room скелеты под целевой движок (Unity C# / Godot GDScript, --target-engine) + переводы шейдеров + импорт уровней, v0.9.0 (compare mode: две игры через один пайплайн — сравнительная таблица механик, diff дизайн-доков по секциям, ComparisonOracle), v1.0.0 (стабильный API: заморожены top-level экспорты, CLI-команды и имена MCP-инструментов; цикл депрекации; PyPI-релиз-инженерия — pip install prrevers после проставленного владельцем тега; документационный сайт mkdocs; первый опубликованный end-to-end кейс «Gold Rush» — своя Electron-игра, docs/cases/web-gold-rush.md). См. docs/ROADMAP.ru.md и CHANGELOG.md.

Установка

# из PyPI (начиная с v1.0.0)
pip install prrevers

# опциональные возможности — extras (см. ниже)
pip install "prrevers[mcp]"   # MCP-сервер для Claude Code / Cursor
pip install "prrevers[assets]" # pure-Python fallback Unity-ассетов
pip install "prrevers[frida]" # динамический анализ (живой процесс игры)

# из репозитория (разработка)
git clone https://github.com/Pradushkoai/PRRevers.git
cd PRRevers
pip install -e ".[dev]"
pre-commit install

# опционально: pure-Python fallback экстракции Unity-ассетов
# (AssetRipper остаётся внешним тулзом — см. таблицу ниже)
pip install -e ".[assets]"

# опционально: динамический анализ (v0.8.0) — аттач к живой игре
# через Frida: локально Windows/macOS/Linux или Android по USB
pip install -e ".[frida]"

Внешние тулзы, которые оркестрирует PRRevers (см. docs/external-tools.ru.md; prrevers tools install <name> ставит их в user data dir автоматически):

Тулз Назначение Требуется для
ILSpy (ilspycmd) Декомпиляция .NET / Unity Mono в C# Unity Mono-игры (prrevers tools install ilspy)
apktool Распаковка APK Android-игры (смелали/ресурсы)
Il2CppDumper Дамп метадаты Unity IL2CPP Unity IL2CPP-игры
AssetRipper Экспорт Unity-ассетов Unity-ассеты
Ghidra (headless) Анализ нативного кода Кастомные движки / IL2CPP
jadx DEX → Java не-Unity Android-игры

Быстрый старт

prrevers inspect path/to/game.apk
prrevers inspect path/to/game.exe --engine auto
prrevers session path/to/game.apk --name mygame
prrevers catalog /path/to/games/folder

# опционально: C# из Assembly-CSharp.dll (нужен .NET SDK)
prrevers tools install ilspy

# динамический анализ (v0.8.0): игра должна быть ЗАПУЩЕНА
pip install -e ".[frida]"
prrevers trace path/to/game.apk --list-processes   # найти pid/name игры
prrevers trace path/to/game.apk --pid 4242 --duration 120 \
    --subsystem inventory --subsystem combat
# → трейс prrevers-out/traces/*.jsonl + дизайн-док
# prrevers-out/synthesized/*-trace.md (с LLM — анализ механик по событиям,
# без LLM — честный stub из таблицы частот)

Контрибьюшн

Контрибьюшны приветствуются. Сначала прочитайте CONTRIBUTING.md. Участвуя, вы соглашаетесь следовать Code of Conduct.

Лицензия

MIT © Pradushkoai

Metadata

Release files for prrevers 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prrevers 1.2.0
File Size Uploaded Provenance Actions
prrevers-1.2.0.tar.gz 483.3 kB Without provenance Details for prrevers-1.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for prrevers 1.2.0
File Interpreter ABI Platform Actions
prrevers-1.2.0-py3-none-any.whl Python 3 none any Details for prrevers-1.2.0-py3-none-any.whl

Total release size: 766.9 kB

Release files / prrevers-1.2.0.tar.gz

Download URL prrevers-1.2.0.tar.gz
Size 483.3 kB
Tags Source
SHA-256 checksum
How to use checksums
cd31286b89c6a08c367629ddef8098fe2741558c02d1da0d909fbf18c15e9a0a
BLAKE2b-256 checksum
How to use checksums
2d97b15a3624277be693ac647ecde294c8e8e416ad7e2148c0016a72a516cbf8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / prrevers-1.2.0-py3-none-any.whl

Download URL prrevers-1.2.0-py3-none-any.whl
Size 283.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
14119e2fee6ea85fe5fde367be8de150a93ddc0b8949f1fe9be24fe34321f782
BLAKE2b-256 checksum
How to use checksums
e91063d6545caaac3b644d6d42f256ea64a58684b13d63e3efb96bc793b648e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for prrevers 1.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page