LINUX.ORG.RU
ФорумTalks

NSA опубликовала инструмент для реверс-инжинринга Ghidra

 ,


3

3

Агентство национальной безопасности США обещало, что опубликует в марте свой инструмент для реверс-инжинринга. Собственно обещание они выполнили:

https://ghidra-sre.org/

(Российские подсети заблочены, заходить с любого VPN)

Исходники сказали подвезут на GitHub чуть попозже. Ссылка для мониторинга: https://github.com/NationalSecurityAgency/ghidra

Новость на Opennet’е: http://www.opennet.ru/opennews/art.shtml?num=50260

Для тех, кто в танке, это может стать отличной альтернативой IDA Pro. Так как там из коробки есть возможность декомпилировать самые разные бинари в псевдо-код аля C, то есть, чем в IDA Pro занимается плагин Hex-Rays Decompiler.


Как и ожидалось, для запуска Ghidra потребовалась Java, JDK версии 11+; для сравнения – в IDA Pro используется (в настоящее время) библиотека Qt 5.

В Ghidra скорее всего используется SWT, но не ковырялся сильно. Возможно тупо AWT+Swing на стероидах. Внутри релиза от АНБ полно ошмётков от различных Eclipse-проектов. Главное окно программы, в котором можно создавать одиночные и совместные проекты, выглядит следующим образом:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_main.png

Из интересного – широкие возможности совместной работы над дизассемблированием файлов. Так сказать, можно звать товарищей на помощь и медитировать на выхлопы местного дизассебмлера холодными зимними вечерами вместе с ними. Список поддерживаемых процессорных архитектур:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_cpu.png

Самый вкусный инструмент это, конечно же, «CodeBrowser». В отличие от IDA Pro, тут всё довольно инуитивно и кнопочек с окошечками гораздо меньше. Просто импортируешь файл, открываешь его в «CodeBrowser», соглашаешься на его анализирование и через некоторое время (как закончится анализ) уже можно смотреть псевдокод тех или иных функций:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser1.png

Непонятно для чего они захардкодили стиль виджетов «Solaris» от ныне почившего Sun Microsystems, с ужаснейшими половинчатыми скроллбарами. При анализе бинарника разработчики Gidra даже сделали весёлую анимацию, где красный дракончик кушает бинарный код вида 00010001010. Сотрудники АНБ не лишены чувства юмора. Так что ждём в ближайшем апдейте миниатюрных лошадей и миленьких глазастых девочек. Больше скринов:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser2.png
http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser3.png

Кроме того, стоит отметить, что из коробки в Ghidra имеется полезный дизассемблерский инструмент, который называется «Version Tracking». Суть этого инструмента в том, чтобы реверс-инженеру было удобно переносить уже проделанную работу на новые версии программы. Отслеживать все изменения, которые сделали разработчики по паттернам, сдвигам и т. д.

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_versiontracking.png

Я попробовал разобрать бинарь ARMv7, либу ARMv8 из APK и dex’ированные Android’овские Java-классы. На всех вариантах показался более-менее осязаемый псевдокод. Кому интересно, можете сравнить с той же IDA Pro:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_vs_idapro.png

Я ранее использовал IDA Pro для разбора бинарного файла ARMv7, который работал с камерой телефона. Проанализировав псевдокод я узнал правильный порядок инициализации и подсмотрел как работали с нужными мне проприетарными классами, на которых нет ни документации, ни заголовочных файлов. Я думаю, воспользовавшись Ghidra’ой, я бы тоже справился с этой работой.

Так что в полку интересных и полезных инструментов прибыло.


Update. Посмотрел внимательнее на структуру релиза и оказалось что там уже лежат архивы с исходным кодом на Java для большинства компонентов этой программы. Поковырялся в них и нашёл небольшой GUI-фреймворк базирующийся на AWT+Swing, по типу того, как оно сделано у платформы IntelliJ IDEA. Корней SWT не нашёл. Декомпиляторы выполнены в виде нативных исполнительных (соответственно платформозависимых) файлов; их исходников в этом релизе я не обнаружил.


Под Windows выглядит эта Ghidra более-менее цивильно. Видимо под неё и затачивалась. А вот под macOS, просто ужас:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_win.png
http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_macos.png

Даже хуже, чем на Linux c Solaris-темой.

★★★★★

Последнее исправление: EXL (всего исправлений: 5)

27 декабря 2019 г.
Ответ на: комментарий от dormeur86

А как дебаг запустить в этой проге ? Или она чисто дизассемблер ?

user2132
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.