REA (Reverse Engineer Anything) — открытый инструмент, который подключает к coding-агенту средства реверс-инжиниринга. Агент изучает готовую программу без исходного кода и объясняет, как устроена нужная функция. В ответе он показывает фрагменты кода, на которых построен вывод. Руководство поможет подключить REA к Codex или другому агенту, выбрать сценарий и проверить результат.

💡
Термины. Реверс-инжиниринг (reverse engineering) — изучение программы по ней самой: по файлам, машинным инструкциям, загруженным скриптам и сетевым запросам. MCP (Model Context Protocol) — стандарт, по которому агент вызывает внешние инструменты. Подробнее — в справочнике по MCP.
⚠️
Руководство собрано по официальному репозиторию, сайту и странице npm на 11 октября 2026 года. Команды взяты из документации проекта. Сами мы их не запускали.

Как устроен REA

REA распространяется как npm-пакет rea-agents под лицензией MIT. В него входят MCP-сервер для агента и командная строка (CLI) с теми же сценариями. На 11 октября 2026 года в npm опубликована версия 6.3.0.

flowchart LR
  A["Вопрос агенту"] --> B["REA исследует цель"]
  B --> C["Код, связи и неизвестные места"]
  C --> D["Агент объясняет, пишет и тестирует реализацию"]

Анализ выполняется на вашем компьютере. Однако результаты, включая фрагменты кода, получает агент, а значит, и его модель. Для них действует политика данных поставщика модели.

Что можно исследовать

ЦельЧто вернёт REAЧто нужно дополнительно
JavaScript- и Electron-приложения: папка или архив .asarМодули, импорты, маршруты, IPC, source mapsТолько Node.js и npm
Страницы в браузереСтруктура, скрипты, сетевые запросы за время наблюденияБраузер семейства Chrome с портом отладки
Нативные программы и библиотекиПсевдокод, ассемблер, строки, символы, вызовыHopper, Ghidra или IDA
Сборки .NETМетаданные, инструкции CIL, зависимостиНичего: только статический анализ
Android APKМанифест, классы, декомпилированные методыJADX и полный JDK
ПрошивкиОбласти образа и извлечённые файлыBinwalk или Unblob на Linux

Кроме того, поддерживаются записи сетевого трафика HAR, байткод EVM, записанные сбои Linux-процессов и захват поведения процессов. Полная таблица есть в README.

Статический анализ JavaScript и .NET читает файлы и не запускает приложение. Захват во время работы (runtime) запускает цель или взаимодействует с ней с вашими правами пользователя.

Требования

  • Node.js 22.x начиная с 22.19, 24.x начиная с 24.11 или 26+, а также npm. Версии 23, 25 и предварительные сборки не поддерживаются.
  • Агент с поддержкой локальных MCP-серверов. Мастер настройки сам подключает Codex, Claude Code, Claude Desktop, Cursor, Gemini CLI, Windsurf, VS Code, GitHub Copilot CLI, Grok Build, OpenCode, Qwen Code и ещё несколько клиентов. Grok Bot подключается вручную из его чата.
  • Для нативных программ нужен один движок анализа:
    • Ghidra 12.1.x и 64-битный JDK 21+ на Linux или macOS; на Windows поддержка экспериментальная;
    • Hopper на macOS или Linux. Это коммерческая программа с демо-режимом; мастер может установить её после отдельного подтверждения;
    • IDA: проверенные конфигурации работают на Windows через уже настроенную MCP-регистрацию IDA.

Подключение к Codex

  1. Проверьте версию Node.js:
node --version
  1. Посмотрите план изменений без записи, это проверочный запуск:
npx rea-agents@latest setup --client codex --dry-run
  1. Запустите настройку, выберите агентов и подтвердите план:
npx rea-agents@latest setup

Мастер добавит MCP-сервер REA и навык (skill) reverse-engineer-anything, а перед изменениями сохранит резервную копию конфигурации. Если существующий конфиг повреждён, мастер ничего не запишет.

  1. Перезапустите агента.

Настройку можно поручить и самому агенту.

Промпт:

Установи REA и подключи его к этому coding-агенту командой npx rea-agents@latest setup. Сначала покажи мне план изменений на согласование, после подтверждения выполни его и проверь установку.
💡
Для постоянной команды rea установите пакет глобально: npm install --global rea-agents. Без --global команда не появится в PATH.
⚖️
Установка через skills.sh (npx skills add morluto/rea --skill reverse-engineer-anything) даёт агенту только инструкции. Сами инструменты подключает команда setup.

Проверка подключения

Проверьте регистрацию REA в агенте. Вместо codex подставьте свой клиент, например claude_code или cursor:

npx -y rea-agents@latest doctor --client codex --json

doctor ничего не меняет. Он проверяет файлы и зависимости, но не живое подключение. Если регистрация в порядке, а инструментов в агенте нет, перезапустите агента и посмотрите ошибку его MCP-подключения.

Минимальный рабочий сценарий — учебное Electron-приложение Notes с сайта REA.

Промпт:

Download https://rea.tools/examples/notes-example.zip into a new example folder and unpack it. Use REA to find what happens when I click Export notes. Show where notes.csv is written, which fields it contains, and the relevant files and lines.

Признаки успеха:

  • агент описывает цепочку renderer.js → preload.js → main.js;
  • называет сообщение notes:export;
  • сообщает, что notes.csv записывается в папку «Загрузки» с колонками id и title;
  • показывает обработчик из main.js со ссылками на строки.

Вторая проверка — попросить агента предсказать, как форматтер CSV обработает заголовок Hello, "REA", и затем запустить форматтер. Ожидаемый вывод:

id,title
1,"Hello, ""REA"""

Полезные сценарии

Разобрать функцию в Electron-приложении

  • Задача: понять, как устроена функция настольного приложения (экспорт, копирование с форматированием, поиск), чтобы сделать похожую у себя.
  • Исходные данные: распакованная папка приложения или его архив .asar.
  • Действие:

Промпт:

Используй REA, чтобы проанализировать /absolute/path/to/app. Найди, как работает экспорт данных: точки входа, вызовы, сообщения IPC и зависимости. Для каждого вывода укажи файл и строки. Отдельно перечисли связи, которые REA не смог установить.

Без агента то же самое делает CLI:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
  • Результат: цепочка от интерфейса через preload и IPC к главному процессу, с указанием файлов. Разобранный пример — буфер обмена Notion.
  • Ограничение: статический анализ показывает код, но не значения во время работы. Связи, которые не удалось установить, REA помечает как неизвестные.

Посмотреть, что делает страница при клике

  • Задача: понять, какой запрос отправляет страница и как она собирает результат.
  • Исходные данные: Chrome, запущенный с отдельным профилем и портом отладки (пример для Linux):
google-chrome \
  --remote-debugging-port=9222 \
  --user-data-dir=/tmp/rea-notes-browser \
  https://rea.tools/examples/notes-web/
  • Действие: передайте агенту адрес страницы и адрес отладки http://127.0.0.1:9222.

Промпт:

Use REA to inspect this page while I click Export notes. What request does it make, and how is the CSV built?
  • Результат: URL запроса, статус ответа, структура JSON и скрипт, который отправил запрос.
  • Ограничение: в захват попадают только запросы, сделанные за время наблюдения. Для анализа используйте отдельный профиль браузера, а не основной, где открыты ваши аккаунты.

Восстановить логику утилиты без исходников

  • Задача: исходники старой внутренней программы утеряны, а её формулу или правило нужно перенести в новый код.
  • Исходные данные: исполняемый файл, Ghidra 12.1.x и JDK 21.
  • Действие:
export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC
export JAVA_HOME=/absolute/path/to/jdk-21
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest function /absolute/path/to/program main --provider ghidra --json

Промпт:

Используй REA с провайдером Ghidra, чтобы разобрать функцию расчёта в /absolute/path/to/program. Восстанови её логику на Python, составь тестовые входные данные и сравни результаты реализации с поведением оригинала. Покажи ассемблер и псевдокод, на которых основан вывод.
  • Результат: псевдокод, ассемблер и вызовы, а также реализация от агента с тестами. В разборе DX-Ball восстановленная функция прошла 3205 проверок на оригинальном x86-коде и воспроизвела все 63 байта скомпилированной функции.
  • Ограничение: псевдокод — реконструкция движка, а не исходный код. Для больших файлов может понадобиться увеличить REA_GHIDRA_STARTUP_TIMEOUT_MS (по умолчанию 330 000 мс).

Ограничения и безопасность

🔴
REA предназначен для законных исследований. Получить нужные разрешения и соблюдать применимое право должен сам пользователь. Лицензии многих программ запрещают декомпиляцию, поэтому проверьте условия до начала работы.
  • Не запускайте захват во время работы на незнакомых программах вне изолированной среды: цель выполняется с вашими правами.
  • Для конфиденциального кода выбирайте агента, политика данных которого вам подходит.
  • Проект быстро меняется. Регистрация в агенте закреплена за версией, которая выполняла настройку, поэтому обновляйтесь регулярно.
  • Проект не выпускал криптовалют и токенов. Токены с названием REA к нему не относятся.

Обновление, удаление и ручное подключение

rea update                     # обновить CLI, установленный через npm
npx rea-agents@latest setup    # обновить регистрацию в агенте
rea uninstall                  # удалить регистрации и навык REA
rea uninstall --purge-data     # дополнительно удалить кэш и состояние в ~/.rea

Удаление не трогает Hopper, Node.js, файлы с результатами анализа и чужие MCP-серверы.

Если ваш клиент не поддерживает setup, зарегистрируйте сервер вручную. Указывайте точную версию пакета:

{
  "mcpServers": {
    "rea": {
      "command": "npx",
      "args": ["-y", "rea-agents@6.3.0", "mcp"]
    }
  }
}

Ссылки

Следующий шаг

MCP и безопасность — prompt injection, tool poisoning и как защититься

REA полезен, когда нужно понять чужое решение и перенести его в свой продукт или восстановить логику старой системы. С такими задачами чаще всего приходят команды продукта и разработки.

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov