REA (Reverse Engineer Anything) — открытый инструмент, который подключает к coding-агенту средства реверс-инжиниринга. Агент изучает готовую программу без исходного кода и объясняет, как устроена нужная функция. В ответе он показывает фрагменты кода, на которых построен вывод. Руководство поможет подключить REA к Codex или другому агенту, выбрать сценарий и проверить результат.
reverse engineering) — изучение программы по ней самой: по файлам, машинным инструкциям, загруженным скриптам и сетевым запросам. MCP (Model Context Protocol) — стандарт, по которому агент вызывает внешние инструменты. Подробнее — в справочнике по MCP.Как устроен 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
- Проверьте версию Node.js:
node --version- Посмотрите план изменений без записи, это проверочный запуск:
npx rea-agents@latest setup --client codex --dry-run- Запустите настройку, выберите агентов и подтвердите план:
npx rea-agents@latest setupМастер добавит MCP-сервер REA и навык (skill) reverse-engineer-anything, а перед изменениями сохранит резервную копию конфигурации. Если существующий конфиг повреждён, мастер ничего не запишет.
- Перезапустите агента.
Настройку можно поручить и самому агенту.
Промпт:
Установи REA и подключи его к этому coding-агенту командой npx rea-agents@latest setup. Сначала покажи мне план изменений на согласование, после подтверждения выполни его и проверь установку.rea установите пакет глобально: npm install --global rea-agents. Без --global команда не появится в PATH.npx skills add morluto/rea --skill reverse-engineer-anything) даёт агенту только инструкции. Сами инструменты подключает команда setup.Проверка подключения
Проверьте регистрацию REA в агенте. Вместо codex подставьте свой клиент, например claude_code или cursor:
npx -y rea-agents@latest doctor --client codex --jsondoctor ничего не меняет. Он проверяет файлы и зависимости, но не живое подключение. Если регистрация в порядке, а инструментов в агенте нет, перезапустите агента и посмотрите ошибку его 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 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"]
}
}
}Ссылки
- Сайт REA · Настройка · Руководства · FAQ
- Репозиторий GitHub · Установка и диагностика
- Пакет rea-agents в npm · Сообщество в Discord
Следующий шаг
MCP и безопасность — prompt injection, tool poisoning и как защититься
REA полезен, когда нужно понять чужое решение и перенести его в свой продукт или восстановить логику старой системы. С такими задачами чаще всего приходят команды продукта и разработки.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov


