VPSSpark Блог
← К дневнику разработки

Ghidra 2026: установка открытого реверс-инструмента NSA, декомпиляция, отладка и анализ бинарников

Заметки с сервера · 2026.09.18 · ~14 мин

Частый поиск: Ghidra 2026 · Ghidra 12.1.3 · декомпилятор · анализ бинарников · NSA

Зелёный поток символов на чёрном экране, как поток байтов
Декомпилятор — гипотеза, не исходник. Сначала байты и типы.

18 августа 2026 года NSA выложила на GitHub Ghidra 12.1.3. Нужный файл — ghidra_12.1.3_PUBLIC_20260817.zip (~543 МБ); SHA-256 на странице релиза. Кто ищет туториал Ghidra 2026, чаще всего спотыкается сразу о три вещи: не тот JDK, скачанный Source Code вместо мультиплатформенного ZIP и тренировка на чужом софте без права. Здесь — установка, декомпиляция, отладка и разбор бинарника. Только то, что вам разрешено смотреть: свой билд, образец с письменного согласия работодателя, материал в изолированной лаборатории.

Ghidra — не кнопка «вернуть исходник». Это открытый реверс-фреймворк NSA: дизассемблер, декомпилятор, перекрёстные ссылки, скрипты и отладчик в одном проекте. В 2026 его всё ещё стоит учить: бесплатно, кроссплатформенно, по чтению структуры на уровне коммерческих инструментов. Ветка 12.1 жёстко сажает рантайм на JDK 21, отладчику нужен Python 3.9–3.14. Сначала официальные Getting Started и What's New in Ghidra 12.1, а не скриншот трёхлетней давности.

12.1.3
Публичная сборка, 2026-08-18
JDK 21
64-бит, PATH или JAVA_HOME
4 ГБ+
Официальный минимум; 16 ГБ на крупные файлы
Красная черта до ghidraRun
Декомпиляция и отладка — только в разрешённых рамках. Взлом коммерческого софта, обход лицензий, подключение к чужим системам сюда не входят. Нет уверенности в праве — стоп. Незнакомые сэмплы — на изолированной машине, не на ноутбуке с банком и рабочей почтой.

Зачем в 2026 открывать Ghidra, а не пялиться в сырой листинг

В исследованиях и разборе прошивок время уходит не на «увидеть инструкции», а на правильные имена функций, возврат типов и обход xref: кто кого вызывает. В этом смысл Ghidra: Listing даёт байты, Decompiler — читаемый псевдо-C, курсоры синхронны. Переименовали переменную — окно C сразу меняет формулировку. Быстрее стикеров на голом дизассемблере.

Второй выигрыш — гигиена проекта. Project держит файлы, флаги анализа, закладки и комментарии вместе. Двое смотрят одну утилиту и делят проект, а не пересылают «строка 147 вроде ключ». В 12.1 есть Headless, PyGhidra и BSim; здесь только GUI-путь.

Железо: официальный пол — 4 ГБ RAM, 1 ГБ на установку, два монитора настоятельно рекомендуют. Это «открывается». Десятки мегабайт прошивки хотят 16 ГБ; на 32 ГБ браузер перестаёт драться. Счёт тот же, что в OpenClaw 2.0 на VPS: сколько CPU, RAM и диска нужно Linux-облаку — другой инструмент, тот же вывод: долгий разбор убивает RAM раньше CPU.

Четыре шага Ghidra 2026: установка, импорт и анализ, декомпиляция, отладка и xref
Порядок не переворачивать: проверить официальный ZIP, импортировать свою программу, читать структуру, отлаживать только разрешённую цель.

Установка: сначала JDK 21, потом официальный ZIP — не исходники

Ghidra 12.1 требует 64-битный JDK 21. Если в системе только 17 или 11, лаунчер ищет 21 и спрашивает Java home. Так на Windows, macOS и Linux. Бесплатные LTS, которые называет документация: Adoptium Temurin и Amazon Corretto. Ставьте 21 со страницы релизов Temurin, проверьте java -version и направьте JAVA_HOME на корень JDK (родитель bin).

Дальше мультиплатформенный ZIP в Assets, имя вида ghidra_12.1.3_PUBLIC_20260817.zip. «Source Code (zip)» — для тех, кто сам соберёт Gradle. SHA-256 у 12.1.3: 93a5d11a9ad510622acaaf908c556a7b9b764d338e78a7567f3689bf5081fd54. Посчитайте хеш локально; не совпало — удалить и скачать снова.

Проверка официального пакета (macOS / Linux)
shasum -a 256 ghidra_12.1.3_PUBLIC_20260817.zip
                # ожидание: 93a5d11a9ad510622acaaf908c556a7b9b764d338e78a7567f3689bf5081fd54

Распакуйте туда, куда можно писать — не в корень облачного диска с автосинхронизацией. Запуск: ./ghidraRun или ghidraRun.bat. Отладчику и PyGhidra нужен Python 3.9–3.14; на macOS LLDB обычно приходит с Xcode, на Linux берите GDB 13+ со встроенным Python 3. Пакеты дистрибутивов отстают; учиться лучше на официальном ZIP с GitHub.

Когда нативы не совпали с ОС
В ZIP лежит нативный декомпилятор хотя бы для одной платформы. Старый glibc или отсутствующая платформа — пересоберите нативы по Getting Started. Пустое окно декомпилятора или мёртвый GNU Demangler чаще всего отсюда, а не от «Ghidra сломалась».

Первый сеанс: Project, Import, Analyze — не молотить Next

File → New Project. Non-Shared хватает в одиночку. Импортируйте бинарник, который собрали сами, или разрешённый образец. Проверьте формат (ELF / Mach-O / PE) и язык (x86:LE:64, AARCH64:LE:64). Mach-O с Apple Silicon — AARCH64; сборка с x86_64 Linux — x86-64. Неверный язык рвёт границы функций на весь день.

Двойной клик в CodeBrowser. Auto Analysis нормальна для маленьких учебных файлов; на огромной прошивке отключите дорогие анализаторы, пока не появится первый экран псевдо-C. Дождитесь полоски. Переименовывать посреди анализа — отдать имена следующему проходу.

Потом система координат: Imports/Exports, Defined Strings, Functions. Импорты показывают библиотеки, строки — ошибки и URL, список функций — не нарезала ли авто-анализ главный путь в крошку. Эти три окна быстрее слепого прыжка в entry.

Декомпилятор: слева Listing, справа псевдо-C, посередине имена

Клик по инструкции — C прокручивается; клик по переменной — Listing подсвечивает. Этот челночный прыжок — базовый навык, надёжнее вставки сырого псевдо-C в чат, который не видит ваших комментариев и типов.

Качество выхода следует за типами, которые вы скормили. Дефолтные undefined4 и char * читаются как черновик. L — тип, ; — комментарий, функции переименовываются в любой панели. Сменили FUN_100003f80 на parse_config_line — все xref сменили ярлыки. Имена — гипотезы: неверные получите по лицу от следующего xref, в этом и польза.

Типы берите из заголовков и отладочных символов. Свой билд — оставьте DWARF/PDB. Стрипнутый релиз — медленно собирайте структуры из импортов, строк и знания предметки. Десять минут в Data Type Manager превращают кучу смещений в имена полей.

ВопросОкноНе делать
Живые байты и переходыListingВерить C без адресов
Что делает функцияDecompilerПринимать безымянные FUN_* за истину
Кто вызываетReferences / Function GraphГадать по одному стеку
Какие библиотекиImports / ExportsИгнорировать динамические имена

Отладчик: сначала бинарник, который только что собрали

Debugger 12.1 ходит к хостовому отладчику через Python: GDB на Linux, LLDB на macOS (обычно из Xcode), семейство WinDbg на Windows. Нужны Python 3.9–3.14 и пакеты вроде protobuf. Ghidra не подменяет GDB/LLDB: синхронизирует их сессию в Trace, чтобы статический C и живые регистры стояли рядом.

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

Не делайте из отладчика дверь в произвольные процессы. Прод, сессия коллеги, среда без письменного разрешения — мимо. Незнакомый сэмпл не запускают на хостовом рабочем столе: сначала снимок, ВМ или выделенная машина. Дисциплина изоляции та же, что в Безопасен ли OpenClaw 2.0 на VPS? Проверка за 7 дней: права, SSH, API-ключи: другой объект, то же правило — повседневность и лаборатория разделены.

Три проверки, если отладчик не стартует
Python 3.9–3.14; GDB/LLDB встроил тот же Python; вы не поставили пакеты в «терминальный python3», пока отладчик держит другой минор. Debugger Notes прямолинейны: коннектор скажет, какой пакет и на какую машину.

Разбор бинарника: конвейер, не вдохновение

Незнакомый файл, который вам можно разбирать, идёт по фиксированному порядку. Один: формат, архитектура, сняты ли символы. Два: строки и импорты — сеть, файлы, крипто. Три: от main / входа именовать только главный путь. Четыре: Function Graph на горячей функции — обработка ошибок или развилка бизнеса. Пять: структуры на парсерах, потом заново читать C.

Xref покупают дни. Подозрительный глобальный буфер: не гадайте, кто пишет — откройте ссылки. Пишущие обычно парсеры, читающие — потребители. Назовите оба конца — вылезет цепочка вызовов. Закладки — «вернусь завтра»; комментарии — гипотезы и опровержения, не куча TODO.

Скрипты — на повторяшку: массовые имена, теги по строковым шаблонам, выгрузка списков функций. Сначала встроенные. Headless — для CI по вашим артефактам: каждый релиз импортировать, проверить, что ключевые функции на месте и таблица импортов не выросла лишней библиотекой. Гигиена, не атакующий полигон.

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

Стартовые падения почти всегда про Java. Homebrew java может быть 25, корпоративный образ застрял на 17, Ghidra 12.1 хочет 21. Прибейте Temurin 21 через JAVA_HOME. Дальше куча: большая прошивка вешает UI. Поднимите heap рядом со скриптами запуска и закройте вкладки макетов.

HiDPI и удалёнка (включая VNC облачного Mac) кривят шрифты и разделители. Размер, который читается два часа. Проект не кладите в iCloud/OneDrive — синхронизация рвёт .rep. Локальный диск, свои архивы.

Гигиена: без личного облака, без прод-SSH, без вечных корпоративных ключей на машине разбора. Ghidra — просмотрщик; риск — сэмпл и то, что ещё залогинено. Выделенный облачный Mac нужен, чтобы снимать снапшот, откатываться и оставлять чистым ноутбук на коленях.

Когда выделенный облачный Mac дешевле
Ночной разбор, сэмплы нельзя пускать на бытовой диск, нужна машина только с JDK 21 + Ghidra 12 + Xcode/LLDB. Семейный ПК и рабочий ноутбук — не то место. Суточный Apple Silicon дешевле ставки «в этот раз $HOME не запишут».

FAQ

Ghidra 12.1.3 живёт на Apple Silicon?

Да. Это Java: ставьте aarch64 JDK 21. Для Mach-O язык AARCH64, отладка через LLDB. Нативы не совпали — пересоберите из ZIP по Getting Started.

Обязательно 12.1.3 или сойдёт 11.x?

Старые проекты могут открыться, рантайм всё равно меняйте. 12.1 требует JDK 21, 12.1.3 закрывает дыры более ранних 12.1. Новая машина стартует с текущего публичного релиза.

Можно сдать декомпилированный C как исходник?

Нет. Это угаданный псевдо-C. Типы, алиасы и оптимизированный поток врут. Подсказка для чтения, не компилируемое восстановление. Выводы — Listing плюс наблюдаемое поведение.

Можно разбирать вредоносы?

Да, при законном исследовательском контексте и изоляции. Не открывайте незнакомые сэмплы на бытовой ОС и не кладите их на шару без контроля. Эта статья не описывает эксплуатацию и распространение.

Ghidra 12 · изолированная машина разбора

Уберите декомпиляцию с повседневного ноутбука

Ghidra 12.1 хочет JDK 21, крупные файлы едят RAM, отладке нужен чистый стек LLDB/Python. Этому не место на одном диске с профилем браузера, рабочей почтой и клиентами синхронизации. Облачный Mac mini дёшево простаивает, чисто снимает снапшот, а пропускная способность памяти Apple Silicon выдерживает ночной разбор. Выключили — сэмпла на коленях больше нет.

Смотреть тарифы облачных Mac →

Ограниченное предложение

Нужен изолированный Mac только под Ghidra?

JDK 21 · Ghidra 12 · выделенный cloud Mac · день/месяц

На главную
Акция Смотреть тарифы