8 октября 2026 года репозиторий, о котором три месяца назад никто не слышал, занял первое место в трендах GitHub.
Он называется REA (Reverse Engineer Anything — «реверс-инжиниринг чего угодно») и даёт твоему агенту настоящий дизассемблер.
**Добавь в закладки — если тебе нужна полная версия, курс из 20 уроков на эту тему уже доступен по адресу**
Он проведёт тебя от пустого терминала до пересборки, которая проходит собственные тесты на паритет, причём каждая команда и каждый промпт расписаны подробно. НАЧИНАЙ ЗДЕСЬ.
На той неделе реакция везде была одинаковой.
Мэтью Берман уложил всё в три слова, и это увидели 3,6 миллиона человек.
https://x.com/MatthewBerman/status/2108245653843509415
REA — это open-source MCP-сервер плюс CLI, который подключается к Claude Code, Codex, Cursor и Gemini CLI.
Лицензия MIT, автор — morluto, первый релиз вышел 12 июля 2026 года, а спустя три месяца проект преодолел отметку в 100 000 звёзд на GitHub.
Всё работает локально, и каждый вывод помечается как наблюдение, умозаключение или неизвестное, с указанием адреса или места вызова.
Это полный путь от закрытого бинарника до пересборки, которой владеешь ты, в восьми шагах.

До шагов: что люди уже успели выпустить с этим
Главное здесь не сам инструмент, а то, что с его помощью выпустили за четыре недели.
ArtCraft пересобрал семь приложений Adobe в виде бесплатных open-source альтернатив, а затем взялся за Office с WordCraft, GridCraft и DeckCraft.
Уже двенадцать приложений, все написаны с нуля на Rust, нативно работают на трёх платформах, и все, кроме одного, запускаются прямо во вкладке браузера через WebAssembly.
В играх доказательства ещё конкретнее:
- Super Mario Sunshine получил нативный порт на ПК: около 365 часов работы агента и 17,3 млрд токенов при совместном использовании Claude и Codex
- Игра Touhou, пересобранная агентами для официального блога REA: 697 функций, 696 точных совпадений, играбельная версия примерно за 12 дней
- Аутентификатор Aegis (3077 классов) разобрали и пересобрали, все 133 тестовых случая прошли успешно
- Функция панорамирования звука из DX-Ball переписана на C, прошла 3205 оригинальных x86-тестов и воспроизвела все 63 скомпилированных байта
Обрати внимание, чего в этом списке нет.
Никто не ломал проверку лицензии, никто не публиковал чужой исходный код.
Каждый пункт — это восстановленное поведение, задокументированное и реализованное заново в новом коде.
01. Определи тип цели, прежде чем что-то открывать
Причина такого распространения не в том, что инструмент хорошо читает что-то одно. Он читает почти всё и показывает доказательства для каждого своего утверждения.
https://x.com/RoundtableSpace/status/2109165852578992582
Этот список — и есть твоё первое решение. Самый частый способ убить полдня — тянуться к дизассемблеру, когда цель представляет собой Electron-приложение, JavaScript которого лежит прямо на виду.
Направь REA на Electron, и ты за секунды получишь модули, импорты и границы IPC вообще без движка, тогда как нативный Mach-O или ELF откроет базу Hopper — путь более глубокий и медленный.
Понимание того, с чем ты работаешь, экономит часы, поэтому сделай это задачей своего первого промпта.
1Я хочу понять, как работает [ФУНКЦИЯ] в [ПРИЛОЖЕНИЕ], которое находится по пути [АБСОЛЮТНЫЙ ПУТЬ].2 Сначала скажи мне, что это за цель (нативная, Electron/JS, .NET, Go, APK, WASM)3 и выбери подходящий инструмент REA, чтобы её открыть. Пока не начинай глубокий анализ.4 Затем опиши её в одном абзаце: на чём она собрана, какого размера, где бы ты5 в первую очередь искал [ФУНКЦИЯ]. Разделяй наблюдения, умозаключения и неизвестные.

То, о чём почти никто не упоминает: многие игры на Unity поставляют свою логику в виде .NET, а REA читает .NET без дополнительных движков.
Именно поэтому купленная игра в Steam превращается из бинарника в редактируемый C# за полчаса.
И любое Electron-приложение на твоём компьютере можно прочитать прямо сейчас, даже не запуская его:
1# где лежит JavaScript2macOS: /Applications/<App>.app/Contents/Resources/app.asar3Windows: C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar4 npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
02. Установи за пять минут, затем добавь один движок
Работает всё это не благодаря хитрому промпту. Работает настоящий движок дизассемблирования, подключённый к агенту, — именно так это описал один из разработчиков.
https://x.com/techNmak/status/2108431092462338178
Установка регистрирует MCP-сервер в твоём агенте и ставит соответствующий навык для рабочего процесса.
Она показывает каждое изменение перед записью и делает резервную копию всего, к чему прикасается.
node -v # Node 22.19+, 24.11+ или 26+. Версии 23 и 25 не поддерживаются
1npx rea-agents@latest setup # регистрирует MCP-сервер, спрашивает перед записью2npm install --global rea-agents # короткая команда rea, навсегда3rea --help4# перезапусти агента, затем проверь. doctor только проверяет, он ничего не меняет5npx -y rea-agents@latest doctor --client claude_code --json
Перезапуск важнее, чем кажется: сессию терминала нужно начинать заново, а десктопные приложения требуют полного выхода, потому что просто закрыть окно недостаточно.
Затем добавляй движок только для того, что действительно собираешься читать:
Есть один файл, который стоит написать до первой реальной цели: правила дома в claude-md.
Анализируй только то, чем владеешь; помечай каждое утверждение как наблюдение, умозаключение или неизвестное; указывай адрес, на который оно опирается; и никогда не считай восстановленное поведение готовым без пройденного теста.
1# нативные программы и игры: Ghidra 12.1.x и JDK 21 или новее2 export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC3 export JAVA_HOME=/absolute/path/to/jdk-214 npx -y rea-agents@latest doctor --provider ghidra --json56 # Android-приложения: JDK 17+ и jadx-headless-mcp 0.7.17 export REA_JADX_MCP_JAR=/absolute/path/jadx-headless-mcp-0.7.1-all.jar8 rea inspect-android-package /path/App.apk910 # байт-код смарт-контрактов, пока только Linux x6411 rea inspect-evm-interface ./runtime.hex hex --json
03. Разведка: карта важнее кода
Пока не открывай ни одной функции.
Одна команда расскажет, на какой машине работает бинарник, сколько внутри функций и весь читаемый текст, спрятанный в нём.
Этот текст — самая быстрая подсказка за весь день: эндпоинты, строки ошибок и названия фич описывают приложение до того, как ты прочитаешь хоть строчку логики.
1rea.open_binary { path: "/Applications/Target.app/Contents/MacOS/Target" }2rea.binary_overview {}3 arch: arm644 functions: 1,284 identified5 entry: _main @ 0x1000051c067rea.search { query: "http" }8 0x10004a2c0 "https://api.target.app/v3/sync"9 0x10004a300 "Authorization: Bearer "1011rea.xrefs { address: "0x100012ab0" }12 147 references -> core config loader, called everywhere

REA считает, сколько раз вызывается каждая функция, и это число — количество перекрёстных ссылок.
Функция, вызванная 147 раз, — это архитектура приложения; вызванная дважды — вспомогательная, она может подождать.
Сортируй по этому числу и двигайся вниз, никогда не по порядку файлов, потому что порядок файлов — это то, как люди теряют выходные внутри бинарника, в котором было всего четыре интересные функции.
04. Декомпилируй одну функцию, а затем заставь Opus назвать в ней всё
Декомпилятор превращает сырые машинные инструкции обратно во что-то близкое к C.
Получается грубо: имена вроде var_28, приведения типов повсюду, запутанные ветвления. И грубо — это нормально, потому что модели достаточно того, чтобы это можно было прочитать.
1# одна функция по адресу, в формате JSON, который можно сохранить и использовать повторно2rea decompile /path/to/Target 0x100012ab0 --provider hopper --json > fn_config.json34# или найди её по имени и проследи ссылки5rea function /path/to/Target parseConfig --provider hopper --json6rea xrefs /path/to/Target 0x100012ab0 --provider hopper --json
Затем передай этот вывод Opus 5.5 и заставь его сделать то, чего не умеет дизассемблер:
1Вот декомпилированный псевдокод функции со 147 перекрёстными ссылками.231. Переименуй каждую переменную исходя из того, как она используется, и объясни её назначение одним предложением.42. Перечисли структуры данных, которые она читает и пишет, и назови паттерн, которому они следуют.53. Перепиши это в виде чистого идиоматичного кода на языке, который подразумевается соглашениями о вызовах.64. Отметь любую отсутствующую обработку ошибок, валидацию ввода или проверку безопасности.78Думай на уровне усилий xhigh, прежде чем отвечать. Помечай всё, в чём не уверен.

Opus 5.5 поставляется с пятью уровнями усилий: low, medium, high, xhigh и max.
Medium исследует и ориентируется, high комментирует обычные функции, max нужен для обфусцированного кода и тяжёлой работы с указателями.
Уровень усилий — главный регулятор качества в этом конвейере, и большинство оставляет его по умолчанию, а потом винит модель.
Декомпиляция говорит тебе, что делает код, модель объясняет почему и даёт имена для пересборки.
05. Обфускация: ломай то, что стоит ломать, остальное лимитируй
Некоторые приложения созданы, чтобы сопротивляться именно тому, что ты делаешь: логика перемешана, строки зашифрованы, ложные ветвления добавлены исключительно для того, чтобы тратить твоё внимание.
Это единственное место, где буксует даже лучшая модель, и на это есть измеренные цифры.
Elastic Security Labs направила Claude Opus на скремблер Tigress в 20 задачах, и два вывода напрашиваются сами собой.
Неудачная попытка стоит примерно вдвое дороже успешной, потому что модель продолжает давить, прежде чем сдаться, а многослойная обфускация дала нулевой результат, так что пробивать её лбом — самый дорогой способ ничему не научиться.

Практическое правило — бюджет на функцию, а не на сессию.
Сначала убирай мусор: бесплатный инструмент Caveman вычищает около 75% декомпилированного хлама, и тогда модель тратит внимание на реальную логику.
1Эта функция выглядит обфусцированной. Работай на уровне max.231. Определи присутствующие техники (выравнивание потока управления, непрозрачные предикаты,4 мёртвый код, шифрование строк, разделение функций) и укажи на каждую из них здесь.52. Устрани их: удали мёртвые ветви, вычисли непрозрачные предикаты, разверни6 диспетчеризацию, расшифруй встроенные строки, если ключ можно восстановить. Покажи, что осталось.73. Оцени уверенность от 1 до 10. Если ниже 6, назови сомнительные части и контекст, который8 помог бы их прояснить. Не додумывай молча.
06. Рой: один контроллер, много рабочих
Один чат не способен хорошо прочитать 500 функций.
Он забывает, что видел сорок функций назад, называет одну и ту же структуру тремя разными способами и начинает тихо противоречить сам себе.
Решение — не больше контекста, а разделение ролей: контроллер, раздающий задачи, и рабочие, каждый из которых берёт одну функцию и останавливается.

1Ты — контроллер обратного инжиниринга. Карта функций находится в functions.json2(адрес, имя, размер, xref_count).341. Сгруппируй функции по близости в графе вызовов; упорядочи кластеры по количеству перекрёстных ссылок.52. Назначь каждый кластер рабочему. Никогда не анализируй функции сам.63. Внедряй уже разрешённые структуры в каждое задание, чтобы имена оставались согласованными.74. Уверенность ниже 6 требует второго прохода с контекстом от соседних разрешённых функций.85. Отслеживай суммарный расход токенов и сообщай о нём после каждого кластера.910Ты — рабочий. Ты получаешь одну декомпилированную функцию и структуры, разрешённые на данный момент.11Верни ровно: адрес, назначение, уверенность (1-10), structs_used, structs_new,12clean_source, flags. Используй существующие имена структур, никогда не придумывай второе имя для13структуры, которую контроллер тебе уже дал. Только одна функция. Останавливайся, когда закончишь.
В REA также встроены направляемые рабочие процессы прямо в MCP-сервер, которые большинство людей даже не открывают:
- - investigate_feature — проследить функцию от обнаружения до конкретных подпрограмм
- - compare_application_versions — сравнить два релиза и увидеть, что реально изменилось
- - verify_reconstruction — проверить свою пересборку по сохранённым доказательствам
- - audit_residual_unknowns — перечислить то, что всё ещё не доказано
07. Чистая комната: стена между двумя контекстами — это и есть продукт
Пересборка методом чистой комнаты означает, что ты копируешь то, что делает приложение, но никогда — код внутри него.
Сделаешь правильно — и выпущенное будет полностью твоим; ошибёшься — и понесёшь чужие авторские права внутри собственного репозитория.
Это метод, которому 40 лет, а не изобретение 2026 года.
В начале 80-х Compaq таким образом воссоздал BIOS IBM примерно за 1 миллион долларов, и это единственная причина, по которой существуют ПК других брендов.
В 1992 году суд в деле Sega против Accolade постановил, что разбор кода может быть добросовестным использованием, если это единственный способ понять, как он работает, а в 2000 году Sony проиграла дело Sony против Connectix со счётом 3-0, потому что готовый эмулятор не содержал ни строчки кода Sony.
Другая сторона границы столь же очевидна: в 2011 году Джордж Хотц заключил мировое соглашение с Sony и согласился прекратить работу после того, как корневой ключ PS3 стал публичным.

Четыре правила держат тебя на правильной стороне, и команда ArtCraft автоматически проверяет все четыре при каждой сборке:
- - Наблюдай, никогда не копируй. Запускай цель как чёрный ящик, делай скриншоты только её окна, никогда не вставляй её код в свой проект
- - Спецификации, а не исходники. Форматы файлов берутся из публичных стандартов (OOXML — это ECMA-376 / ISO 29500, плюс опубликованные спецификации RTF и ODF), а не из чтения парсера конкурента
- - Только оригинальные ресурсы. Каждая иконка, шрифт, шаблон и звук нарисованы кодом, находятся в общественном достоянии или под открытой лицензией, с отдельной строкой в файле атрибуции
- - Разделяй две задачи. Один агент восстанавливает поведение и пишет спецификацию, другой контекст реализует её, опираясь только на эту спецификацию
Последнее правило — то, которое люди пропускают, и именно оно является настоящей границей.
Твой исследующий агент по определению загрязнён, потому что он прочитал декомпилят, а твой собирающий агент — не должен быть.
1На основе завершённого анализа напиши спецификацию чистой комнаты для повторной реализации.23Описывай ТОЛЬКО ПОВЕДЕНИЕ: каждый публичный интерфейс, модель данных, каждую видимую пользователю4функцию как тестируемое требование, читаемые и записываемые форматы файлов, обработку ошибок.56НЕ включай адреса, смещения, декомпилированные имена переменных, ассемблер или что-либо,7скопированное из оригинала. Разработчик, никогда не видевший бинарник, должен иметь возможность8реализовать совместимую версию, опираясь только на этот документ.910Разделы: Архитектура, Модель данных, Публичный API, Форматы файлов, Тестовые случаи.
Работа по описанию — это не только юридическая страховка.
Она позволяет принимать правильные решения для твоего языка, вместо того чтобы наследовать решения, принятые кем-то два десятилетия назад, — именно поэтому WordCraft местами быстрее Word.
08. Проверь паритет, а затем выпусти это через MCP
У тебя никогда не было оригинального исходного кода, поэтому ты не можешь сравнивать построчно.
Ты сравниваешь поведение: одни и те же входные данные подаются в обе сборки, на выходе должно быть одно и то же.
1Создай тестовый стенд для проверки поведения, сравнивающий оригинальный бинарник и мою пересборку.23Сгенерируй 50 входных данных: 30 обычных, 10 граничных (пустые, максимальный размер, юникод), 10 ошибочных4(некорректные, повреждённые). Прогони каждый через оба варианта, сравни побайтово, где возможно,5и семантически в остальных случаях. Сообщи процент совпадений, расхождения и степень серьёзности каждого6(косметическое / поведенческое / критическое). Сохрани в report.md.
«Я думаю, что совпадает» — не доказательство, а процент совпадений — да, и этот отчёт — самое убедительное, что можно разместить в начале поста о релизе.
Затем выпускай пересборку так, как это сделали REA и приложения Craft — в виде MCP-сервера, чтобы агент следующего человека мог управлять твоим инструментом так же, как ты управлял REA.
Дай каждой функции понятное имя и установку в одну строку, и каждое действие станет именованной командой, которую клик, горячая клавиша и агент вызывают абсолютно одинаково.
1claude mcp add wordcraft -- wordcraft-cli mcp23> Open report.docx, make every heading 14pt bold, export to PDF4 ok select.all-headings -> 12 selected5 ok format.font-size 14 . format.bold6 ok export report.pdf (selectable text, bookmarks kept)
Ограничения и пять ошибок, которые убивают выходные
REA не может трогать сервер, потому что он читает то, что есть на твоей машине, а код, работающий на серверах компании, тебе никогда не поставлялся.
Декомпилированный код — это реконструкция, а не оригинальный исходник, и именно поэтому существует шаг 08.
Очищенные C++-бинарники остаются куда сложнее игр на Unity .NET, а коммерческим движкам по-прежнему нужны настоящие лицензии.
- - Открытие дизассемблера для Electron-приложения, когда JavaScript лежит прямо на виду
- - Дамп всего бинарника до прочтения сводки, что хоронит логику и раздувает счёт
- - Чтение функций в порядке файла, а не по количеству перекрёстных ссылок
- - Позволение модели копировать код в твою пересборку, что разрушает чистую комнату одной вставкой
- - Выпуск без отчёта о паритете
Если честно о юридической стороне, раз уж половина X неделю кричала про пиратство: чтение приложения на собственном компьютере — это обучение, пересборка функции на основе её поведения — это то, как индустрия работает с 80-х, а вот копирование кода или взлом платных функций — это то, за что подают в суд.
Изучай оригинал, выпускай своё.
За каждым из этих восьми шагов стоит урок на
reacourse.xyz , с точными промптами, режимами отказа и моментами, где это перестаёт работать.
Раньше закрытый исходный код означал, что ты никогда не узнаешь, как всё устроено.
Теперь это значит: покажи мне доказательства.
Большинство людей продолжат платить ежемесячно за функцию, которую могли бы понять за полдня и пересобрать за выходные.
Те немногие, кто научится читать программное обеспечение, будут создавать всё, что захотят.
Подписывайся на меня и мой Telegram-канал:





