Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ghidra-firmware-utils — Расширение Ghidra для реверс-инжиниринга прошивок ПК, предоставляющее загрузчики для PCI option ROM, Intel Flash Descriptor, coreboot CBFS и томов прошивки UEFI, а также вспомогательные скрипты UEFI для восстановления типов и идентификации GUID. | Kitploit
Инструменты/GitHubGitHub/al3xtjames/ghidra-firmware-utils
Безопасность встроенных системОбратная инженерияАппаратная БезопасностьБезопасность оборудования и IoTАнализ Бинарных ФайловАнализ Прошивок
GitHubal3xtjames/ghidra-firmware-utils

ghidra-firmware-utils

Расширение Ghidra для реверс-инжиниринга прошивок ПК, предоставляющее загрузчики для PCI option ROM, Intel Flash Descriptor, coreboot CBFS и томов прошивки UEFI, а также вспомогательные скрипты UEFI для восстановления типов и идентификации GUID.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
49356135 дней назадПроверено Kitploit

Ghidra Firmware Utilities

Различные модули для Ghidra, помогающие в реверс-инжиниринге прошивок ПК. Этот проект был принят как проект coreboot для GSoC 2019.

Возможности

Загрузчик PCI option ROM

  • Реализует загрузчик файловой системы для PCI option ROM (поддерживает гибридные ROM с несколькими образами, например, legacy x86 + UEFI)
  • Загружает исполняемые файлы UEFI из PCI option ROM (включая сжатые образы)
  • Определяет функцию точки входа и различные типы данных заголовков для legacy x86 option ROM

Загрузчик образов прошивки

  • Реализует загрузчик файловой системы для образов Flash Map (FMAP) и Intel Flash Descriptor (IFD) (отображает области флэш-памяти)
  • Реализует загрузчик файловой системы для образов Coreboot Filesystem (CBFS) (отображает включённые файлы и обрабатывает сжатие)
  • Реализует загрузчик файловой системы для томов прошивки UEFI и вложенных файловых систем (FFS) с разбором файлов/секций FFS

Загрузчик Terse Executable (TE)

  • Реализует бинарный загрузчик для TE-бинарников (часто используются в UEFI PI)

Вспомогательный скрипт UEFI

  • Включает библиотеки типов данных для базовых типов UEFI (взяты из EDK2 MdePkg)
  • Исправляет сигнатуру функции точки входа
  • Определяет известные GUID в сегментах .data/.text бинарника
  • Находит и определяет глобальные копии указателей таблиц UEFI (gBS/gRT/gST и т.д.)

Сборка и установка

Требуются JDK 21 (или новее) и Ghidra 12.0 (или новее).

Используется стандартная система сборки Ghidra на базе Gradle. Установите переменную окружения GHIDRA_INSTALL_DIR перед сборкой или задайте её как свойство Gradle (полезно для сборки в IDE):

Переменная окружения

root@kitploit:~
$ export GHIDRA_INSTALL_DIR="/path/to/ghidra"
$ ./gradlew

Свойство Gradle

root@kitploit:~
echo GHIDRA_INSTALL_DIR=/path/to/ghidra > gradle.properties

[!NOTE] GHIDRA_INSTALL_DIR должна указывать на каталог, содержащий support/buildExtension.gradle. Например, пользователям пакета Flathub следует использовать /var/lib/flatpak/app/org.ghidra_sre.Ghidra/current/active/files/lib/ghidra.

ZIP-архив модуля будет выведен в каталог dist/. Используйте File > Install Extensions и выберите зелёный плюс, чтобы указать путь к расширению. Перезапустите Ghidra при появлении соответствующего запроса.

Для корректной работы плагин должен быть собран с той же JRE, которая используется вашей установкой Ghidra. Если у вас установлено несколько сред выполнения Java, выберите нужную JRE, задав переменную окружения JAVA_HOME перед сборкой.

Использование

Загрузчик PCI option ROM

Добавьте PCI option ROM в проект Ghidra. Legacy x86 option ROM можно загружать напрямую для анализа. Убедитесь, что формат бинарника установлен как x86 PCI Option ROM, и импортируйте бинарник.

UEFI option ROM или option ROM, содержащие более одного образа, следует импортировать с помощью загрузчика файловой системы. При появлении запроса о выборе режима импорта выберите File system. Содержащиеся в option ROM образы будут отображены и могут быть импортированы для анализа. Legacy x86 образы будут обработаны загрузчиком x86 PCI Option ROM, а UEFI образы — загрузчиком PE32 (поддерживается сжатие). Информацию о каждом образе можно просмотреть, выбрав Get Info в контекстном меню.

Загрузчик образов прошивки

Добавьте поддерживаемый образ прошивки в проект Ghidra. Загрузчик образов прошивки поддерживает образы Intel с Flash Descriptor, образы coreboot с разметкой FMAP/CBFS и тома прошивки UEFI. Режим импорта File system можно использовать для просмотра встроенных файлов внутри указанного образа прошивки.

Обратите внимание, что некоторые образы прошивки UEFI могут хранить вложенные тома прошивки внутри файлов/секций freeform/raw (или секций FFS freeform/raw). Такие файлы можно импортировать как тома прошивки, выбрав Open File System в контекстном меню для указанного файла freeform/raw. Если вложенный том прошивки не найден, будет отображено сообщение об ошибке (No file system provider for...).

Вспомогательный скрипт UEFI

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

Запустите вспомогательный скрипт UEFI, выбрав UEFIHelper.java в окне Script Manager (доступно через Window -> Script Manager).

Чтобы изменить библиотеку типов данных UEFI, измените шаблон PRF в data/gen_prf.sh по мере необходимости и сгенерируйте новые PRF-файлы. Откройте сгенерированный PRF-файл в File -> Parse C Source. Соберите обновлённую библиотеку типов данных, выбрав Parse to File.... Перезапишите исходные библиотеки типов данных в data и пересоберите плагин.

Связанные проекты

Вот несколько интересных проектов, связанных с реверсом UEFI:

  • efiXplorer — плагин IDA для анализа прошивок UEFI и автоматизации реверс-инжиниринга
  • Ghidra-EFI-Byte-Code-Processor — модуль процессора EFI Byte Code (EBC) для Ghidra

Лицензия

Apache 2.0, с некоторыми исключениями:

  • src/efidecompress/c/efidecompress.c: BSD

Благодарности

src/efidecompress/c/efidecompress.c — слегка модифицированная версия Decompress.c из uefi-firmware-parser (который, в свою очередь, происходит из оригинала в EDK2 BaseTools).

Загрузчик FS IFD в src/main/java/firmware/ifd использует парсер из UEFITool в качестве справочного материала.

База данных GUID в data/guids.csv взята из UEFITool.

Библиотеки типов данных UEFI в data/uefi_*.gdt были сгенерированы с помощью data/gen_prf.sh, который частично основан на определении парсера UEFI из pull request для Ghidra от wrffrz. Эти библиотеки типов данных используют заголовки из EDK2 MdePkg.

GhidraVitaLoader от xerpi использовался как справочный материал для некоторых частей вспомогательного скрипта UEFI.

Скачать инструмент