Ты когда-нибудь пробовал открыть исполняемый .exe файл в шестнадцатеричном редакторе или дизассемблере? Если да, то наверняка помнишь это ощущение бесконечного полотна инструкций ассемблера: регистры eax, прыжки jmp, адреса памяти и полное отсутствие человеческих имён функций. Исторически обратная разработка (реверс-инжиниринг) была закрытой кастой для избранных инженеров, готовых неделями вручную распутывать графы вызовов ради понимания одного закрытого протокола.
Однако осенью 2026 года в этой сфере произошёл тектонический взрыв. Открытый репозиторий Reverse Engineer Anything (morluto/rea) собрал фантастические 100 тысяч звёзд на GitHub всего за несколько суток после публикации. Обозреватель Нейт Херк (Nate Herk) и исследователь Саймон Уиллисон обратили внимание на фундаментальный сдвиг: нейросети больше не просто «подсказывают синтаксис», они начали массово декомпилировать закрытые программы и классические игры, возвращая им читаемый исходный код на C, Rust или TypeScript.
Мы уже подробно исследовали, как связка агентов с дизассемблером Ghidra автоматизирует восстановление логики, но сейчас этот метод стал доступен абсолютно любому разработчику через протокол Model Context Protocol (MCP).
Давай разберёмся, как устроена эта магия и почему она одновременно восхищает энтузиастов и пугает вендоров коммерческого софта.
Архитектурный мост: почему агент не галлюцинирует ассемблером
Главная ошибка наивных попыток скормить скомпилированный бинарник нейросети — попытка отправить гигабайтный дамп прямо в промпт. Контекстное окно мгновенно захлёбывается шумом, а модель начинает уверенно выдумывать алгоритмы, которых в файле никогда не было.
Создатели REA пошли по строгому инженерному пути:
- Инструментальный слой: агент работает не с сырыми байтами, а управляет консольным интерфейсом профессионального дизассемблера (NSA Ghidra в headless-режиме, Hopper или radare2).
- Семантическая разметка уверенности: при анализе каждой ассемблерной ветки модель помечает утверждения строгими маркерами:
seen— факт железно подтверждён инструкциями процессора и таблицей символов;inferred— логический вывод на основе констант и последовательности системных вызовов;unknown— пробел в понимании, требующий изолированного динамического теста.
- Чистая комната (Clean-Room Implementation): поняв логику сетевого пакета или математической функции, агент помогает написать новую, полностью независимую реализацию на современном языке без прямого копирования чужих инструкций.
Как подключить и запустить REA
Инструмент распространяется в виде открытого npm-пакета rea-agents и легко подключается к клиентским средам через стандартный конфигурационный файл MCP-серверов:
# Установка CLI-пакета обратной разработки
npm install -g rea-agents
# Конфигурация подключения к MCP-клиенту в claude_desktop_config.json
cat <<EOF > ~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"rea": {
"command": "npx",
"args": ["-y", "rea-agents", "--headless", "--disassembler=ghidra"]
}
}
}
EOF
После перезапуска среды агент получает набор специализированных инструментов: он умеет запрашивать граф потока управления (CFG), находить кросс-ссылки на строки и исследовать структуры в памяти.
А вот пример автоматизированного разбора скомпилированной функции через командную строку:
# Автономная декомпиляция сетевого обработчика устаревшей программы в чистый код на Rust
rea-agent analyze --binary ./legacy_service.exe \
--function "HandleClientHandshake" \
--target-lang rust \
--output-dir ./decoded_sources/
Модель аккуратно проходит по ассемблерным инструкциям cmp и je, распознаёт за ними проверку магических байтов заголовка и выстраивает аккуратный match-блок на Rust с типизированными структурами данных.
Не пытайтесь скормить утилите команду «декомпилируй всю программу целиком». Начните с конкретной критической функции или поиска текстовых строк ошибок (error strings). Обнаружив точку входа, агент сам потянет за цепочку связанных вызовов.
Декомпиляция проприетарного коммерческого ПО без согласия правообладателя нарушает условия пользовательских соглашений (EULA) в большинстве стран. Используйте реверс-инжиниринг исключительно для аудита безопасности собственных продуктов, исследования форматов совместимости и сохранения исторического цифрового наследия.
Вторая жизнь старых игр и закат традиционной защиты
Саймон Уиллисон справедливо подметил, что главный триумф этой технологии прямо сейчас происходит в мире ретро-гейминга (Game Preservation). Инди-разработчики и энтузиасты массово восстанавливают исходники классических игр 90-х и 2000-х годов, серверы которых давно отключены, а студии-создатели закрылись. С помощью REA старые бинарники за считанные часы компилируются в WebAssembly, оживая прямо в окне современного браузера с поддержкой геймпадов и высокого разрешения.
Но для создателей закрытого софта это тревожный звонок. Традиционная обфускация кода и упаковка бинарников больше не являются надёжным барьером: языковые модели видят математическую логику алгоритма сквозь любые перестановки инструкций. Мы вступаем в эпоху, когда скрыть архитектуру в скомпилированном коде становится практически невозможно.
