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

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

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

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

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

Категории

Все категории
Loading categories
ida-efiutils — Некоторые скрипты для IDA Pro, помогающие в реверс-инжиниринге EFI-бинарных файлов | Kitploit
Инструменты/GitHubGitHub/snare/ida-efiutils
Безопасность встроенных системОбратная инженерияБезопасность оборудования и IoTАнализ Бинарных ФайловАнализ Прошивок
GitHubsnare/ida-efiutils

ida-efiutils

Некоторые скрипты для IDA Pro, помогающие в реверс-инжиниринге EFI-бинарных файлов

Репозиторий
309667 лет назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

EFI-скрипты для IDA Pro

Некоторые IDA-скрипты для помощи в реверс-инжиниринге EFI-исполняемых файлов.

Этот пакет содержит следующие файлы:

  1. efiutils.py — модуль IDAPython с некоторыми вспомогательными функциями

  2. efiguids.py — коллекция известных GUID для EFI-протоколов

  3. efiguids_ami.py — коллекция известных GUID для протоколов, используемых в AMI BIOS

  4. behemoth.h — огромный заголовочный файл, содержащий коллекцию определений типов и структур для EFI

  5. structs.idc — IDC-скрипт, содержащий некоторые определения структур (заменён behemoth.h)

  6. te_image.bt — шаблон 010 Editor для TE-двоичных образов

  7. te_loader.py — скрипт-загрузчик IDA Pro для TE-двоичных образов

Это моя первая попытка написания IDA-скриптов, так что прошу прощения и сообщите мне, если я изобрёл велосипед или сделал что-то глупое.

Функции

Основные полезные функции описаны ниже. Дополнительную информацию о других функциях см. в коде и docstring.

rename_tables()

Находит первую точку входа для двоичного файла, пытается отследить параметры, переданные функции точки входа, и переименовать глобальные переменные, в которых хранятся ключевые EFI-таблицы. Выполняются следующие операции переименования:

  1. Глобальная переменная, в которую попадает ImageHandle, переименовывается в gImageHandle.

  2. Глобальная переменная, в которую попадает SystemTable, переименовывается в gSystemTable.

  3. Глобальная переменная, в которую попадает SystemTable->BootServices, переименовывается в gBootServices.

  4. Глобальная переменная, в которую попадает SystemTable->RuntimeServices, переименовывается в gRuntimeServices.

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

update_structs()

Находит перекрёстные ссылки на таблицы, переименованные выше, и обновляет их имена, превращая их в смещения структур из соответствующих структур. Если rename_tables() завершилась неудачей, вам придётся переименовать вещи вручную, как указано выше, чтобы это работало корректно.

Например:

root@kitploit:~
    mov     rax, cs:qword_whatever
    call    qword ptr [rax+150h]

Превращается в:

root@kitploit:~
    mov     rax, cs:gBootServices
    call    [rax+EFI_BOOT_SERVICES.UninstallMultipleProtocolInterfaces]

rename_guids()

Находит GUID в сегментах данных и переименовывает их. 470 GUID протоколов были извлечены из исходников TianoCore, а проприетарные GUID Apple (и других производителей) будут добавляться по мере их обнаружения.

go()

Удобный метод, который выполняет всё вышеперечисленное.

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

  1. Загрузите ваш EFI-двоичный файл в IDA Pro

  2. Импортируйте behemoth.h для определения необходимых структур данных

  3. Добавьте структуры из локальных типов в вашу IDB

  4. Запустите efiutils.py, чтобы добавить его в путь python (или сделайте это другим способом)

  5. Ознакомьтесь с кодом/docstring, но, вероятно:

    root@kitploit:~
     import efiutils; efiutils.go()
    

Чтобы использовать загрузчик TE-образов te_loader.py, установите его как любой другой загрузчик. В OS X это делается путём копирования или создания символической ссылки внутри папки загрузчиков по пути idaq.app/Contents/MacOS/loaders/.

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