REA: полный обзор и практический гайд по реверс-инжинирингу приложений через MCP для AI-агентов
Каждый разработчик сталкивался с ситуацией: в стороннем приложении или сервисе реализована интересная фича — сложный алгоритм расчёта, нестандартная интеграция или внутренняя механика синхронизации. Исходного кода в открытом доступе нет, а воссоздать логику с нуля в своём проекте методом слепого подбора долго и трудоёмко. Ручной реверс-инжиниринг через дизассемблеры и отладчики требует высокой квалификации и отнимает часы на рутинный разбор ассемблерных листингов и вызовов функций.
Проект REA (Reverse Engineer Anything) автоматизирует этот процесс. Это открытый инструмент и MCP-сервер, который подключает кодинг-агентов (Claude Code, Cursor, Codex, OpenClaw) напрямую к движкам декомпиляции и статического анализа. Разработчик формулирует задачу на обычном языке, а агент самостоятельно исследует бинарник или Electron-приложение, находит нужную логику, собирает доказательную базу и воспроизводит чистую реализацию под стек проекта.
Какую проблему решает REA
До появления REA попытка использовать LLM для анализа закрытого софта упиралась в два ограничения:
- Отсутствие доступа к инструментам: модель не умеет сама открывать исполняемые файлы, декомпилировать функции или читать упакованные ресурсы (ASAR, APK, PE, ELF). Разработчику приходилось вручную выгружать псевдокод из Ghidra или IDA и копировать огромные портянки текста в окно контекста.
- Галлюцинации и додуманная логика: без строгой доказательной базы LLM часто додумывает сигнатуры методов, алгоритмы шифрования и форматы сериализации данных, выдавая правдоподобный, но неработающий код.
REA решает обе проблемы: инструмент выступает единым протокольным слоем (Model Context Protocol), через который агент запрашивает конкретные факты — структуру модулей, граф вызовов, псевдокод функции по адресу, строковые константы и шину IPC. При этом каждый вывод сопровождается точными ссылками на декомпилированный код.
Поддерживаемые форматы и цели анализа
Инструмент покрывает практически все уровни современного софта — от высокоуровневых скриптов до нативного машинного кода:
| Тип цели | Что извлекает REA | Используемый бэкенд |
|---|---|---|
| Нативные бинарники (ELF, PE, Mach-O) | Псевдокод, функции, ассемблер, строковые таблицы, граф вызовов, перекрёстные ссылки (xrefs). | Ghidra, Hopper, IDA Pro |
| JavaScript & Electron | Структура модулей, деобфускация, роуты, source maps, границы IPC (preload ↔ main). | Встроенный Node.js AST-парсер |
| .NET сборки (C#, VB.NET) | Метаданные сборок, CIL-байткод, объявленные нативные зависимости, сигнатуры типов. | Встроенный статический парсер |
| Android-приложения (APK) | Декомпилированные классы и методы, манифест, строковые таблицы, ресурсы. | Headless JADX, Apktool |
| Базы данных SQLite | Схемы таблиц, индексы, триггеры, связи, дампы строк без блокировки файла. | Нативный SQLite движок |
| Сетевые дампы (PCAP, HAR, SAZ) | HTTP-запросы/ответы, TLS SNI, открытые payload, сопоставление с точками в коде. | TShark, встроенный анализатор |
| WebAssembly & Bytecode | Декодированный WAT-код, импорты/экспорты, EVM-байткод с селекторами вызовов. | WABT, EVM disassembler |
Архитектура: как устроен процесс исследования
В основе REA лежит трёхэтапный цикл взаимодействия кодинг-агента и локального окружения:
- Постановка задачи: разработчик в чате с агентом (например, в Claude Code) задаёт цель:
Understand how search works in the Notes app, show me the evidence, and build a similar feature for my project. - Итеративное исследование через MCP: агент вызывает специализированные инструменты REA:
- Инспектирует манифест и точку входа приложения;
- Находит модули, отвечающие за целевую логику;
- Запрашивает декомпиляцию конкретных функций и проверяет перекрёстные ссылки;
- Формирует структурированный отчёт с доказательствами (Evidence Report).
- Синтез и тестирование: на основе извлечённого алгоритма агент пишет чистый код на языке вашего проекта (TypeScript, Python, Go) и сразу покрывает его тестами.
Важное преимущество по безопасности: весь анализ выполняется строго локально на рабочей машине разработчика. Исходные бинарники, дампы памяти и закрытые файлы приложения не отправляются на сторонние серверы REA.
Быстрый старт и интеграция
Установка и регистрация REA в окружении агента выполняется в одну команду через npm:
npx rea-agents setup
Утилита интерактивно определит установленные редакторы и CLI-агенты (Claude Code, Cursor, Codex, OpenClaw, Gemini CLI), пропишет конфигурацию MCP-сервера в соответствующие конфиг-файлы и добавит готовые инструкции для работы с реверс-инжинирингом.
Для автономной работы через терминал доступен глобальный CLI-пакет:
# Глобальная установка CLI
npm install --global rea-agents
# Быстрый анализ Electron-приложения или JS-бандла
rea analyze-javascript-application /path/to/extracted/app --json
Реальные примеры использования
В документации проекта приведены наглядные кейсы, показывающие точность работы инструмента:
- Реконструкция аудио-панорамы (DX-Ball): агент через REA исследовал нативный бинарник игры, восстановил математическую формулу расчёта стерео-панорамы звука из неполного псевдокода, сгенерировал эквивалентный C-код и успешно прошёл 3 205 оригинальных тестов на совпадение логики байт в байт.
- Анализ Electron IPC в Notion: агент отследил цепочку передачи данных из буфера обмена через изоляцию контекста (preload bridge) в главный процесс приложения, разобрав внутренний формат rich-text буфера без доступа к исходникам.
Итоги
REA переводит реверс-инжиниринг из узкоспециализированной рутины в стандартный рабочий навык любого AI-агента. Если вам нужно повторить закрытый протокол, восстановить потерянную логику легаси-модуля или разобраться во внутренних механизмах популярного инструмента — связка Claude Code или Cursor с REA даёт готовую доказательную базу и рабочий код за считанные минуты.