YouMind
Войти

Как превратить Opus 5.5 в машину для реверс-инжиниринга за 8 шагов (полный курс)

@hanakoxbt
АНГЛИЙСКИЙ13 окт. 2026 г.
194K
139
14
15
332

Суть

Это руководство подробно описывает рабочий процесс из 8 шагов с использованием инструмента REA и Opus 5.5 для реверс-инжиниринга программного обеспечения. Оно охватывает маршрутизацию целей, установку, разведку, декомпиляцию, работу с обфускацией, роевой анализ, чистовую пересборку и верификацию.

8 октября 2026 года репозиторий, о котором три месяца назад никто не слышал, занял первое место в трендах GitHub.

Он называется REA (Reverse Engineer Anything — «реверс-инжиниринг чего угодно») и даёт твоему агенту настоящий дизассемблер.

**Добавь в закладки — если тебе нужна полная версия, курс из 20 уроков на эту тему уже доступен по адресу**

reacourse.xyz

Он проведёт тебя от пустого терминала до пересборки, которая проходит собственные тесты на паритет, причём каждая команда и каждый промпт расписаны подробно. НАЧИНАЙ ЗДЕСЬ.

На той неделе реакция везде была одинаковой.

Мэтью Берман уложил всё в три слова, и это увидели 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.

Всё работает локально, и каждый вывод помечается как наблюдение, умозаключение или неизвестное, с указанием адреса или места вызова.

Это полный путь от закрытого бинарника до пересборки, которой владеешь ты, в восьми шагах.

Hanako - inline image

До шагов: что люди уже успели выпустить с этим

Главное здесь не сам инструмент, а то, что с его помощью выпустили за четыре недели.

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 — путь более глубокий и медленный.

Понимание того, с чем ты работаешь, экономит часы, поэтому сделай это задачей своего первого промпта.

markdown
1Я хочу понять, как работает [ФУНКЦИЯ] в [ПРИЛОЖЕНИЕ], которое находится по пути [АБСОЛЮТНЫЙ ПУТЬ].
2 Сначала скажи мне, что это за цель (нативная, Electron/JS, .NET, Go, APK, WASM)
3 и выбери подходящий инструмент REA, чтобы её открыть. Пока не начинай глубокий анализ.
4 Затем опиши её в одном абзаце: на чём она собрана, какого размера, где бы ты
5 в первую очередь искал [ФУНКЦИЯ]. Разделяй наблюдения, умозаключения и неизвестные.
Hanako - inline image

То, о чём почти никто не упоминает: многие игры на Unity поставляют свою логику в виде .NET, а REA читает .NET без дополнительных движков.

Именно поэтому купленная игра в Steam превращается из бинарника в редактируемый C# за полчаса.

И любое Electron-приложение на твоём компьютере можно прочитать прямо сейчас, даже не запуская его:

bash
1# где лежит JavaScript
2macOS: /Applications/<App>.app/Contents/Resources/app.asar
3Windows: C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar
4 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 не поддерживаются

bash
1npx rea-agents@latest setup # регистрирует MCP-сервер, спрашивает перед записью
2npm install --global rea-agents # короткая команда rea, навсегда
3rea --help
4# перезапусти агента, затем проверь. doctor только проверяет, он ничего не меняет
5npx -y rea-agents@latest doctor --client claude_code --json

Перезапуск важнее, чем кажется: сессию терминала нужно начинать заново, а десктопные приложения требуют полного выхода, потому что просто закрыть окно недостаточно.

Затем добавляй движок только для того, что действительно собираешься читать:

Есть один файл, который стоит написать до первой реальной цели: правила дома в claude-md.

Анализируй только то, чем владеешь; помечай каждое утверждение как наблюдение, умозаключение или неизвестное; указывай адрес, на который оно опирается; и никогда не считай восстановленное поведение готовым без пройденного теста.

bash
1# нативные программы и игры: Ghidra 12.1.x и JDK 21 или новее
2 export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC
3 export JAVA_HOME=/absolute/path/to/jdk-21
4 npx -y rea-agents@latest doctor --provider ghidra --json
5
6 # Android-приложения: JDK 17+ и jadx-headless-mcp 0.7.1
7 export REA_JADX_MCP_JAR=/absolute/path/jadx-headless-mcp-0.7.1-all.jar
8 rea inspect-android-package /path/App.apk
9
10 # байт-код смарт-контрактов, пока только Linux x64
11 rea inspect-evm-interface ./runtime.hex hex --json

03. Разведка: карта важнее кода

Пока не открывай ни одной функции.

Одна команда расскажет, на какой машине работает бинарник, сколько внутри функций и весь читаемый текст, спрятанный в нём.

Этот текст — самая быстрая подсказка за весь день: эндпоинты, строки ошибок и названия фич описывают приложение до того, как ты прочитаешь хоть строчку логики.

json
1rea.open_binary { path: "/Applications/Target.app/Contents/MacOS/Target" }
2rea.binary_overview {}
3 arch: arm64
4 functions: 1,284 identified
5 entry: _main @ 0x1000051c0
6
7rea.search { query: "http" }
8 0x10004a2c0 "https://api.target.app/v3/sync"
9 0x10004a300 "Authorization: Bearer "
10
11rea.xrefs { address: "0x100012ab0" }
12 147 references -> core config loader, called everywhere
Hanako - inline image

REA считает, сколько раз вызывается каждая функция, и это число — количество перекрёстных ссылок.

Функция, вызванная 147 раз, — это архитектура приложения; вызванная дважды — вспомогательная, она может подождать.

Сортируй по этому числу и двигайся вниз, никогда не по порядку файлов, потому что порядок файлов — это то, как люди теряют выходные внутри бинарника, в котором было всего четыре интересные функции.

04. Декомпилируй одну функцию, а затем заставь Opus назвать в ней всё

Декомпилятор превращает сырые машинные инструкции обратно во что-то близкое к C.

Получается грубо: имена вроде var_28, приведения типов повсюду, запутанные ветвления. И грубо — это нормально, потому что модели достаточно того, чтобы это можно было прочитать.

bash
1# одна функция по адресу, в формате JSON, который можно сохранить и использовать повторно
2rea decompile /path/to/Target 0x100012ab0 --provider hopper --json > fn_config.json
3
4# или найди её по имени и проследи ссылки
5rea function /path/to/Target parseConfig --provider hopper --json
6rea xrefs /path/to/Target 0x100012ab0 --provider hopper --json

Затем передай этот вывод Opus 5.5 и заставь его сделать то, чего не умеет дизассемблер:

markdown
1Вот декомпилированный псевдокод функции со 147 перекрёстными ссылками.
2
31. Переименуй каждую переменную исходя из того, как она используется, и объясни её назначение одним предложением.
42. Перечисли структуры данных, которые она читает и пишет, и назови паттерн, которому они следуют.
53. Перепиши это в виде чистого идиоматичного кода на языке, который подразумевается соглашениями о вызовах.
64. Отметь любую отсутствующую обработку ошибок, валидацию ввода или проверку безопасности.
7
8Думай на уровне усилий xhigh, прежде чем отвечать. Помечай всё, в чём не уверен.
Hanako - inline image

Opus 5.5 поставляется с пятью уровнями усилий: low, medium, high, xhigh и max.

Medium исследует и ориентируется, high комментирует обычные функции, max нужен для обфусцированного кода и тяжёлой работы с указателями.

Уровень усилий — главный регулятор качества в этом конвейере, и большинство оставляет его по умолчанию, а потом винит модель.

Декомпиляция говорит тебе, что делает код, модель объясняет почему и даёт имена для пересборки.

05. Обфускация: ломай то, что стоит ломать, остальное лимитируй

Некоторые приложения созданы, чтобы сопротивляться именно тому, что ты делаешь: логика перемешана, строки зашифрованы, ложные ветвления добавлены исключительно для того, чтобы тратить твоё внимание.

Это единственное место, где буксует даже лучшая модель, и на это есть измеренные цифры.

Elastic Security Labs направила Claude Opus на скремблер Tigress в 20 задачах, и два вывода напрашиваются сами собой.

Неудачная попытка стоит примерно вдвое дороже успешной, потому что модель продолжает давить, прежде чем сдаться, а многослойная обфускация дала нулевой результат, так что пробивать её лбом — самый дорогой способ ничему не научиться.

Hanako - inline image

Практическое правило — бюджет на функцию, а не на сессию.

Сначала убирай мусор: бесплатный инструмент Caveman вычищает около 75% декомпилированного хлама, и тогда модель тратит внимание на реальную логику.

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

06. Рой: один контроллер, много рабочих

Один чат не способен хорошо прочитать 500 функций.

Он забывает, что видел сорок функций назад, называет одну и ту же структуру тремя разными способами и начинает тихо противоречить сам себе.

Решение — не больше контекста, а разделение ролей: контроллер, раздающий задачи, и рабочие, каждый из которых берёт одну функцию и останавливается.

Hanako - inline image
markdown
1Ты — контроллер обратного инжиниринга. Карта функций находится в functions.json
2(адрес, имя, размер, xref_count).
3
41. Сгруппируй функции по близости в графе вызовов; упорядочи кластеры по количеству перекрёстных ссылок.
52. Назначь каждый кластер рабочему. Никогда не анализируй функции сам.
63. Внедряй уже разрешённые структуры в каждое задание, чтобы имена оставались согласованными.
74. Уверенность ниже 6 требует второго прохода с контекстом от соседних разрешённых функций.
85. Отслеживай суммарный расход токенов и сообщай о нём после каждого кластера.
9
10Ты — рабочий. Ты получаешь одну декомпилированную функцию и структуры, разрешённые на данный момент.
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 стал публичным.

Hanako - inline image

Четыре правила держат тебя на правильной стороне, и команда ArtCraft автоматически проверяет все четыре при каждой сборке:

  • - Наблюдай, никогда не копируй. Запускай цель как чёрный ящик, делай скриншоты только её окна, никогда не вставляй её код в свой проект
  • - Спецификации, а не исходники. Форматы файлов берутся из публичных стандартов (OOXML — это ECMA-376 / ISO 29500, плюс опубликованные спецификации RTF и ODF), а не из чтения парсера конкурента
  • - Только оригинальные ресурсы. Каждая иконка, шрифт, шаблон и звук нарисованы кодом, находятся в общественном достоянии или под открытой лицензией, с отдельной строкой в файле атрибуции
  • - Разделяй две задачи. Один агент восстанавливает поведение и пишет спецификацию, другой контекст реализует её, опираясь только на эту спецификацию

Последнее правило — то, которое люди пропускают, и именно оно является настоящей границей.

Твой исследующий агент по определению загрязнён, потому что он прочитал декомпилят, а твой собирающий агент — не должен быть.

markdown
1На основе завершённого анализа напиши спецификацию чистой комнаты для повторной реализации.
2
3Описывай ТОЛЬКО ПОВЕДЕНИЕ: каждый публичный интерфейс, модель данных, каждую видимую пользователю
4функцию как тестируемое требование, читаемые и записываемые форматы файлов, обработку ошибок.
5
6НЕ включай адреса, смещения, декомпилированные имена переменных, ассемблер или что-либо,
7скопированное из оригинала. Разработчик, никогда не видевший бинарник, должен иметь возможность
8реализовать совместимую версию, опираясь только на этот документ.
9
10Разделы: Архитектура, Модель данных, Публичный API, Форматы файлов, Тестовые случаи.

Работа по описанию — это не только юридическая страховка.

Она позволяет принимать правильные решения для твоего языка, вместо того чтобы наследовать решения, принятые кем-то два десятилетия назад, — именно поэтому WordCraft местами быстрее Word.

08. Проверь паритет, а затем выпусти это через MCP

У тебя никогда не было оригинального исходного кода, поэтому ты не можешь сравнивать построчно.

Ты сравниваешь поведение: одни и те же входные данные подаются в обе сборки, на выходе должно быть одно и то же.

markdown
1Создай тестовый стенд для проверки поведения, сравнивающий оригинальный бинарник и мою пересборку.
2
3Сгенерируй 50 входных данных: 30 обычных, 10 граничных (пустые, максимальный размер, юникод), 10 ошибочных
4(некорректные, повреждённые). Прогони каждый через оба варианта, сравни побайтово, где возможно,
5и семантически в остальных случаях. Сообщи процент совпадений, расхождения и степень серьёзности каждого
6(косметическое / поведенческое / критическое). Сохрани в report.md.

«Я думаю, что совпадает» — не доказательство, а процент совпадений — да, и этот отчёт — самое убедительное, что можно разместить в начале поста о релизе.

Затем выпускай пересборку так, как это сделали REA и приложения Craft — в виде MCP-сервера, чтобы агент следующего человека мог управлять твоим инструментом так же, как ты управлял REA.

Дай каждой функции понятное имя и установку в одну строку, и каждое действие станет именованной командой, которую клик, горячая клавиша и агент вызывают абсолютно одинаково.

bash
1claude mcp add wordcraft -- wordcraft-cli mcp
2
3> Open report.docx, make every heading 14pt bold, export to PDF
4 ok select.all-headings -> 12 selected
5 ok format.font-size 14 . format.bold
6 ok export report.pdf (selectable text, bookmarks kept)

Ограничения и пять ошибок, которые убивают выходные

REA не может трогать сервер, потому что он читает то, что есть на твоей машине, а код, работающий на серверах компании, тебе никогда не поставлялся.

Декомпилированный код — это реконструкция, а не оригинальный исходник, и именно поэтому существует шаг 08.

Очищенные C++-бинарники остаются куда сложнее игр на Unity .NET, а коммерческим движкам по-прежнему нужны настоящие лицензии.

  • - Открытие дизассемблера для Electron-приложения, когда JavaScript лежит прямо на виду
  • - Дамп всего бинарника до прочтения сводки, что хоронит логику и раздувает счёт
  • - Чтение функций в порядке файла, а не по количеству перекрёстных ссылок
  • - Позволение модели копировать код в твою пересборку, что разрушает чистую комнату одной вставкой
  • - Выпуск без отчёта о паритете

Если честно о юридической стороне, раз уж половина X неделю кричала про пиратство: чтение приложения на собственном компьютере — это обучение, пересборка функции на основе её поведения — это то, как индустрия работает с 80-х, а вот копирование кода или взлом платных функций — это то, за что подают в суд.

Изучай оригинал, выпускай своё.

За каждым из этих восьми шагов стоит урок на

reacourse.xyz , с точными промптами, режимами отказа и моментами, где это перестаёт работать.

Раньше закрытый исходный код означал, что ты никогда не узнаешь, как всё устроено.

Теперь это значит: покажи мне доказательства.

Большинство людей продолжат платить ежемесячно за функцию, которую могли бы понять за полдня и пересобрать за выходные.

Те немногие, кто научится читать программное обеспечение, будут создавать всё, что захотят.

Подписывайся на меня и мой Telegram-канал:

https://t.me/+75nMf005jRpjMDU1

Сохранение в один клик

Используйте YouMind для глубокого чтения вирусных статей с помощью ИИ

Сохраняйте источники, задавайте точные вопросы, обобщайте аргументы и превращайте вирусные статьи в полезные заметки в одном рабочем пространстве ИИ.

Исследовать YouMind
Для авторов

Превратите ваш Markdown в аккуратную статью для 𝕏

Когда вы публикуете длинные тексты, изображения, таблицы и блоки кода, форматирование в 𝕏 становится мучением. YouMind превращает полный черновик в Markdown в чистую статью, готовую к публикации в 𝕏.

Попробовать Markdown для 𝕏

Другие паттерны для анализа

Недавние виральные статьи

Смотреть другие виральные статьи