REA Investigated: How AI-Assisted Reverse Engineering Works
Что такое REA—и почему на это обращают внимание?
Вы можете использовать приложение каждый день, не зная, как его функции работают под поверхностью. REA дает AI ассистентам способ исследовать это поведение—даже когда исходный исходный код недоступен.

REA (Reverse Engineer Anything) — это проект с открытым исходным кодом на morluto/rea, который подключает AI агентов к рабочим процессам анализа программного обеспечения. Он предоставляет операции анализа через интерфейс командной строки—типизированные команды терминала—и сервер инструментов для совместимых AI приложений. Агент — это AI приложение, которое может использовать инструменты в многошаговой задаче. REA предоставляет доступ к инструментам анализа, а не к базовой AI модели.
Это различие важно: исследование готового приложения, написание похожей реализации и восстановление его исходного кода — это разные достижения. Полезность REA зависит от собранных доказательств, применяемых проверок и остающихся ответственности. “Anything” — это название проекта, а не гарантия того, что каждый продукт может быть верно воссоздан.
Обратная инженерия: обучение на основе готовой программы
Обратная инженерия означает изучение того, как что-то работает, путем анализа готового результата. Представьте машину без исходных чертежей конструктора: осмотр ее деталей и поведения может помочь в создании нового дизайна, но не даст вам исходные чертежи конструктора. Аналогично, понимание поведения программного обеспечения не восстанавливает исходный код, написанный разработчиками.

Для нативного исполняемого файла, готовой к процессору формы программы, компилятор переводит исходный код в машинные инструкции. Это операции, которые понимает процессор. Компиляция также может оптимизировать программу, переупорядочивая или комбинируя работу при сохранении предполагаемого поведения. Результат — исполняемое программное обеспечение, а не сжатый архив исходного проекта.
Дизассемблирование представляет машинные инструкции в виде читаемого ассемблера. Декомпиляция идет дальше, выводя логику более высокого уровня, похожую на исходный код, называемую псевдокодом. Инструменты, такие как Ghidra, предоставляют оба представления:
1) Forward production path:
Original source
↓
Compile / optimize
↓
Native executable
2) Separate analysis path:
Native executable
↓
Disassembly / decompilation
↓
Assembly / inferred pseudocode
Original names, comments and structure may be missing
↓
Behavior to verify
Случай нативного кода: компиляция создает исполняемый файл; анализ выводит читаемое представление и поведение для проверки. Не гарантируется обратный путь к исходным файлам.
Потеря информации неравномерна. Комментарии и многие имена могут исчезнуть, в то время как текстовые строки, некоторые имена и описательные метаданные остаются. Оптимизация может сделать знакомые структуры исходного кода трудно узнаваемыми. Различные реализации исходного кода также могут создавать похожее поведение машины, поэтому правдоподобная реконструкция не обязательно должна совпадать с исходным выражением программиста.

Не каждое приложение — это нативный машинный код. Упакованный JavaScript может содержать читаемый исходный код или минифицированный код, сокращенный для распространения. Чтение материала, похожего на исходный код, уже присутствующего в пакете, отличается от вывода псевдокода из машинных инструкций. То, что сохраняется, определяет, на какие вопросы может ответить анализ.
Как REA превращает вопрос в цикл доказательств
Исследование DX-Ball проекта началось с практического вопроса: как горизонтальное положение кирпича на экране определяет панорамирование звука, баланс между левым и правым аудио? Первый вид декомпилятора показал вызов, который преобразовал число, но опустил входные данные и расчет за ним. Этого было недостаточно, чтобы объяснить позицию звука.
Вид инструкций выявил отсутствующие входные данные и арифметику. Проверка функции, которая ее вызывала, показала, что входные данные были координатой кирпича на экране. Чтение сохраненных значений предоставило фиксированные числа расчета и параметр, который масштабировал панорамирование.
Результатом было конкретное правило: при обычном масштабе центр экрана соответствует центрированному панорамированию, а позиции по обе стороны смещают баланс влево или вправо. Проект реконструкции мог затем написать это правило на C и сравнить его с исходной функцией.

Четыре роли делают это исследование возможным.
- Вы устанавливаете авторизованный вопрос.
- Агент выбирает дополнительные вопросы и интерпретирует результаты.
- REA предоставляет доступ к инструментам и возвращает доказательства.
- Механизм анализа или парсер проверяет целевой артефакт — файл или пакет, который исследуется.
Встроенные механизмы включают Ghidra, Hopper и IDA.
Соединение использует Model Context Protocol (MCP), стандартный способ для приложений AI получить доступ к внешним инструментам и системам. MCP-сервер REA — это программное обеспечение, предоставляющее эти операции, а не машина, которую вы должны арендовать. Навык предоставляет инструкции по исследованию для агента; сервер предоставляет доступ к самим операциям. Основной обмен выглядит так:
Your feature question
↓
Agent
↕ MCP
REA tool server
↕
Analysis engine / parser
↕
Target software
Запросы направляются к цели; доказательства возвращаются агенту, который использует их для выбора следующего вопроса. Обмен повторяется по мере развития исследования.
Агент координирует эти дополнительные вопросы и связывает возвращенный код и ссылки в объяснение. Записи доказательств определяют местоположение файла и кода, разделяя наблюдения от выводов и нерешенных находок. Рецензент может таким образом отследить объяснение обратно к его вспомогательному материалу. Агент также может подготовить кандидатский код и тесты как отдельный шаг от установления того, что делает оригинал.
Для любой цели различайте статическую проверку, которая читает артефакты без запуска программы, от наблюдения во время выполнения или взаимодействия, которое проверяет ее во время запуска. Место, где происходит эта проверка, также отделено от места, где модель обрабатывает свои находки. Если агент использует размещенную модель, возвращенные результаты могут покинуть машину анализа.
Какие виды программного обеспечения может проверять REA?
Видимость зависит от цели. Electron упаковывает настольное программное обеспечение, используя веб-технологии, в то время как .NET и Android представляют отдельные семейства приложений с различными путями анализа. Каждый раскрывает разную информацию, как показано в таблице:
| Цель | Что она может раскрыть | Условие или граница |
|---|---|---|
| ⚙️ Собственные бинарные файлы | Инструкции, выведенный псевдокод, сохраненные строки, вызовы и ссылки | Глубокий анализ использует механизм, такой как Ghidra, Hopper или IDA; результат не является исходным кодом. |
| 📦 JavaScript / Electron | Упакованные модули, импорты, отношения приложений и исходные карты, связывающие распределенный код с источником, если он присутствует | Встроенная статическая проверка; минификация и неразрешенные отношения могут ограничить интерпретацию. |
| 📱 .NET / Android | Метаданные .NET и инструкции ближе к источнику, чем собственный машинный код; объявления пакетов Android и декомпилированные методы | Базовая проверка .NET встроена и статична; анализ методов Android может потребовать дополнительных инструментов, таких как JADX. |
| 🌐 Видимые браузером веб-сайты | Доставленная структура страницы, скрипты и наблюдаемые запросы/ответы | Авторизованное наблюдение обычно не раскрывает приватную реализацию backend. |
REA документирует более широкое покрытие артефактов за пределами этих категорий. Проверьте официальный обзор целей и текущую документацию: требования варьируются в зависимости от механизма, платформы хоста, цели и выпуска. Они описывают доступные рабочие процессы проверки, а не проверенные реконструкции каждой цели.
Убедительная демонстрация — это не проверенная реконструкция
Публичные демонстрации дают более конкретное представление о возможностях REA. В одной размещенной в интернете реконструкции калькулятора анализ с помощью AI создал версию GNOME Calculator на Python. Наряду с видимыми реконструкциями, такие как эта, более узкие проекты сравнивают перестроенный расчет непосредственно с оригиналом.
Публичная демонстрация — сообщено из вторых рук
Реконструкция напоминала GNOME Calculator и совпадала с результатом базовой арифметики. Сообщенные проблемы с изменением размера выявили видимое несоответствие, которое успешная проверка арифметики не обнаружила бы.Реконструкция функции, сообщенная проектом
Витрина DX-Ball сообщает о 3 205 случаях сравнения original-x86 для одной функции преобразования позиции в панораму звука, плюс совпадающие скомпилированные байты с использованием исторического компилятора.
Калькулятор демонстрирует видимую реконструкцию; DX-Ball документирует проверки конкретного расчета. Каждый результат отвечает на разный вопрос.

Для DX-Ball сравнения охватывали позиции на экране и несколько уровней панорамирования. Они проверили возвращаемые значения функции C в сравнении с теми, которые были получены при выполнении исходных инструкций. Компиляция этого C с историческим компилятором также воспроизвела байты функции. Это две отдельные проверки: согласованность по протестированным результатам и согласованность по скомпилированной функции, без необходимости в исходном исходном коде программиста.
GNOME Calculator также имеет расширенные, финансовые и программные возможности. Простое сравнение арифметики оставляет эти функции неоцененными, вместо того чтобы показать, работают ли они или нет в реконструкции. Его исходный код открыт, поэтому проверка исходного кода может быть более прямой отправной точкой, когда она отвечает на ваш вопрос о поддержке. Полезная последовательность — от визуального сходства к проверкам выбранного поведения, затем систематические сравнения для поведения, которое вам нужно.
Где обещание “всего” достигает своих пределов
Отсутствие исходного контекста может затруднить интерпретацию компонента. Оптимизация может скрыть его логику, а обфускация намеренно затрудняет понимание кода. Внешние зависимости создают еще один пробел: некоторые пути выполнения требуют входных данных, сервисов или условий, недоступных при анализе. Даже тщательный анализ может оставить граничные случаи неразрешенными, когда функция зависит от поведения вне проверяемого компонента.
Независимый противовес исходит из отчета Ишанка Чоудхари от 14 октября 2026 года, охватывающего REA 6.4.0. Он обнаружил полезную структуру приложения Electron, но пропустил соединения предварительной загрузки: код моста, связывающий страницу Electron с возможностями на стороне рабочего стола. Он тестировал статические инструменты без агента или собственных механизмов анализа; выводы касаются этого выпуска и рабочего процесса, а не каждой текущей версии.

В отчете также описаны отношения, опущенные из сводки приложения из-за бюджетов результатов — ограничений на сохраняемый результат. Некоторые факты остались на уровне файлов без появления их соединений в сводке. Завершенное сканирование без совпадения означало, что сохраненный анализ не нашел отношение, а не то, что функция отсутствовала. Его ограничения охвата объяснили пропуск.
Усилие начинается с настройки механизма анализа и предоставления необходимых вычислительных мощностей и памяти. Использование модели имеет свои особенности: контекст определяет, сколько материала она может рассмотреть одновременно, а токены — это единицы текста, которые она обрабатывает. Повторные запросы добавляют усилия, за которыми следуют тестирование и исправления человеком после первого результата. Фактические счета, требования к оборудованию и время завершения зависят от цели и вопроса. Измерение собственного вклада REA в скорость или качество потребовало бы контролируемого сравнения.
Полезные приложения за пределами копирования приложения
Для разработчиков, самостоятельных хостеров и команд миграции ценность часто заключается в ответе на конкретный вопрос обслуживания или совместимости. Следующие сценарии являются иллюстративными, а не протестированными развертываниями или результатами от этого издателя.
🛠️ Разработчик / сопровождающий
Сопровождающий, сравнивающий две авторизованные версии устаревшей утилиты, может спросить, почему изменился результат импорта. REA может помочь найти логику парсинга и направить проверки регрессии. Если полный исходный код уже отвечает на этот вопрос, начните с него; в противном случае проверьте предполагаемую причину по сравнению с измененным поведением.
🏠 Самостоятельный хостер
Самостоятельный хостер, работающий со старым локальным форматом файла, может использовать REA для понимания его полей. Эти выводы могут помочь определить независимо реализованный мост совместимости. Законный, готовый к использованию заменитель для проприетарной зависимости все еще потребует тестирования недокументированных случаев и проверки применимых прав.
💼 Бизнес / команда миграции
Команде миграции может потребоваться узнать, может ли поддерживаться требуемое поведение экспорта перед заказом реализации. REA может помочь установить техническую осуществимость и уточнить, что нужно строить. Этот вывод может информировать инвестиционное решение, в то время как оценки доставки, обязательства по поддержке и полная совместимость требуют дальнейшей оценки.
Образование и авторизованные исследования безопасности могут использовать тот же подход. Перед переходом от объяснения к дальнейшим действиям определите, что может быть проверено, запущено или поделено. Этот объем управляет расследованием даже когда технический вопрос кажется простым.
Технический доступ не решает вопросы авторизации, конфиденциальности или доверия
Разрешение на проверку файла может отличаться от разрешения на его запуск, мониторинг трафика, публикацию результатов или повторное использование защищенного материала. Права зависят от применимого законодательства и контрактов: условные права на взаимодействие, включая те, что действуют в США, не являются всемирными правилами, и владение копией не авторизует каждую операцию.

MIT лицензия REA охватывает код, написанный REA, но не целевые приложения, защищенные активы или автоматически сгенерированный результат. Коммерческие движки анализа требуют собственных лицензий. Отказ от ответственности об ответственном использовании определяет предполагаемые варианты использования и границы поддержки сообщества без изменения MIT; восстановленный исходный код не становится автоматически открытым исходным кодом или распространяемым.
⚠️ Предупреждение: риски конфиденциальности и выполнения
Локальный анализ может отправлять результаты — включая код, учетные данные или личные данные — поставщику модели агента. Проверьте исходящие данные и условия поставщика перед анализом конфиденциальных целей. REA не является песочницей: статический анализ может выявить уязвимости инструментов, а запуск или взаимодействие с целями может изменить файлы или повлиять на учетные записи и сервисы. Проверьте фактические операции и изоляцию, а не только то, где работают инструменты.
Используйте официальные источники пакетов и обновлений, но также проверьте зависимости, сгенерированный результат, владельца обслуживания и способ поступления исправлений. Применяйте такую же тщательность к программному обеспечению поставщиков, проектам с открытым исходным кодом и альтернативам, созданным ИИ: официальное происхождение, цена, доступность исходного кода или сборка из исходного кода не могут заменить четкую историю происхождения и проверки.
Что REA означает для владения программным обеспечением и облака

Восстановление программного обеспечения один раз не финансирует его будущее. Кто-то должен постоянно исправлять уязвимости и сохранять совместимость. Поддержка пользователей и разработка продукта также требуют постоянной работы. Более доступное исследование может дополнить работу экспертов; эти примеры не показывают, что разработчики или платное программное обеспечение становятся устаревшими. Надежные обновления и ответственная поддержка остаются причинами для выбора продукта, даже когда его реализация становится легче понять.
Поставщики могут ответить, переместив больше функциональности на удаленную доставку, но доказательства здесь не устанавливают тенденцию, вызванную REA. Техническое различие заключается в клиенте и сервере: браузер получает код интерфейса и ответы, в то время как реализация на стороне сервера обычно остается у оператора.
Browser / client: delivered UI and scripts
Inspectable to the extent delivered / authorized
↕
Requests / responses
↕
Server: application logic and database
Behavior observed ≠ exact private source revealed
Граница видимости, а не полная граница безопасности: ресурсы браузера и ответы можно проверить; код на стороне сервера обычно остается удаленным. Раскрытие данных и другие проблемы безопасности остаются возможными.
Эти ответы API — данные, обмениваемые с сервисом — могут раскрыть достаточно информации о поведении функции, чтобы информировать новую реализацию. Этот маршрут полагается на наблюдаемые входные и выходные данные, а не на доступ к коду на стороне сервера. Сохранение кода удаленным также не исключает ошибки, раскрытие данных или возможность авторизованного исследования.
С SaaS, программным обеспечением как услугой, поставщик управляет приложением.
- Самостоятельное размещение авторизованного приложения дает вам больше контроля над развертыванием. Затем вы берете на себя ответственность за исправление и управление доступом.
- Резервные копии, мониторинг и восстановление также становятся частью поддержания работы этого приложения.
AlexHost Ubuntu VPS — один из вариантов инфраструктуры для проверенного приложения или моста совместимости. Полный доступ root дает вам контроль над гостевой операционной системой. Это не защищает приложение автоматически и не делает внешнюю обработку моделей приватной.
Главное: более простое расследование, а не автоматическое восстановление
Узнаваемое окно калькулятора может быть многообещающим первым результатом. Следующие вопросы заключаются в том, проверено ли необходимое вам поведение и кто будет его поддерживать. REA помогает расследовать это поведение; реализация, проверка и надежная работа остаются отдельной работой.
Для более глубокого изучения начните с официального проекта REA и его демонстрации DX-Ball. Сосредоточьтесь на одном небольшом, авторизованном вопросе и доказательствах, подтверждающих ответ. Это более полезная отправная точка, чем вопрос о том, может ли AI скопировать весь продукт.
на всех хостинговых услугах