Проблема доверия
АНБ в рамках программы Technology Transfer Program уже открыло исходные коды 32 проектов (полный список можно посмотреть на GitHub). Конечно, не обходится без шуточек о том, что АНБ будет использовать эти средства для слежения за пользователями. С одной стороны, конечно, код продуктов открыт, а их пользователи достаточно хардкорны, чтобы не полениться провести аудит. С другой — первый же косяк нашелся сразу после релиза Ghidra.
Британский ИБ-эксперт и глава Hacker House Мэттью Хики (Matthew Hickey) заметил, что в отладочном режиме инструмент Ghidra открывает и слушает порт 18001. Это позволяет подключиться к Ghidra удаленно, через JDWP, — разумеется, с целью все той же отладки. Хики отмечает, что исправить проблему совсем несложно — достаточно поменять строку 150 в файле support/launch.sh
со звездочки на 127.0.0.1.
Постепенно всплывают и другие баги. Например, была найдена возможность эксплуатировать XXE при условии, что пользователь Ghidra откроет специально сформированный проект. Так что будь начеку!
Скачать Ghidra можно с официального сайта ghidra-sre.org, но есть небольшая проблема: сайт недоступен из российских сетей (и, по некоторым данным, из канадских). Но я думаю, что это не препятствие для читателей «Хакера». Можно воспользоваться любым VPN или на крайний случай Tor.

Итак, ты скачал архив ghidra_9.0_PUBLIC_20190228
и распаковал его. Давай немного пробежимся по основным папкам и посмотрим, что в них.
Настоятельно рекомендую заглянуть в папку docs — там много информации о самой Ghidra, о разработке плагинов для нее и обзор основных возможностей в виде слайдов и документов PDF. Вся информация, естественно, на английском.
Далее идут папки с лицензиями — в них ничего интересного. В папке server есть инструментарий для запуска сервера удаленной отладки. В папке support собраны вспомогательные инструменты, без которых программа работать не будет.
В папке Ghidra уже интереснее: в Processors можно ознакомиться со всеми поддерживаемыми архитектурами. Вот их полный список: 6502, 68000, 6805, 8051, 8085, AARCH64, ARM, Atmel, CR16, DATA, JVM, MIPS, PA-RISC, PIC, PowerPC, Sparc, TI_MSP430, Toy, x86, Z80.

Настало время смотреть само приложение! Чтобы открыть Ghidra в Windows, запускаем ghidraRun.bat
, в Linux — ghidraRun.sh
. Проект написан в основном на Java, поэтому качай и ставь Java Runtime, если у тебя его нет.

Первым делом нам предлагают создать проект, в который мы добавим нужные бинарные файлы для исследования. После этого становится активной иконка с зеленым драконом, которая и откроет для нас CodeBrowser — основную среду для работы.

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

И вот мы оказываемся в заголовке нашего файла. Перед нами структура IMAGE_DOS_HEADER
, а не точка входа. Интересно! Надо сказать, что все поля отображены корректно, да и выглядит все более-менее сносно и информативно.

INFO
При первом запуске приложения я столкнулся с немного неудобным отображением кода и других полей в различных окнах дизассемблера. Но все это можно настроить при помощи специальной кнопки Edit the listing fields в верхнем правом углу каждого окна.
Справа располагается окно декомпилятора, к нему мы еще вернемся. Там же есть вкладка Functions. Давай нажмем на нее.

Здесь видим список функций с их сигнатурами — очень удобно, на мой взгляд. Давай выберем какую-нибудь функцию и посмотрим, что будет.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
0ri0n
20.03.2019 в 19:12
Я Вас презираю!
Где была эта статья когда я пытался разобраться с данной ПО. Разбирая статьи с китайского языка 🙂
Спасибо!
0ri0n
20.03.2019 в 19:18
Кстати. Интересный момент про бета версия или нет.
Их офф сайт не отвечает уже недели 2. 🙂
Качаем откуда только можно.
Андрей Письменный
20.03.2019 в 20:03
Сайт прекрасно работает и не переставал это делать, но для России сделано исключение. Мне кажется, гораздо лучше и проще обойти его, чем качать «откуда угодно».
0ri0n
20.03.2019 в 20:15
ха.. а что же так, для России сделали исключение…
Спс за инфу буду знать))
Андрей Письменный
20.03.2019 в 22:22
Смею предположить, что у американских спецслужб могут быть некоторые предубеждения против того, чтобы раздавать программы русским хакерам. Но, учитывая простоту обхода, немного несолидно смотрится, конечно.
faberge
21.03.2019 в 15:22
Возможно, это бессмысленное, но категоричное требование каких-нибудь американских политиков, которому спецслужбы вынуждены подчиняться. Ох, я оправдываю АНБ 😉
s00mbre
02.04.2019 в 03:14
Сейчас уже можно не лазить по VPN, чтобы скачать дистрибутив. Есть открытые зеркала, например вот на этом известном софт-портале: https://www.majorgeeks.com/files/details/ghidra.html
slinkin
23.10.2019 в 01:27
Дебаггера конечно сильно не хватает. Ждёмс. Пока приходится дебажить в радаре, а анализировать в ghidra-е. Кстати, на данный момент фиксить открытый порт уже не надо — файл уже имеет строку: DEBUG_ADDRESS=127.0.0.1:18001
slinkin
23.10.2019 в 01:43
И да — несовсем понятно как строить «трассу» — можете рассказать?