
Плагин для IDA, расширяющий возможности реверс-инжиниринга (U)EFI-бинарных файлов с помощью пакетного анализа, базы данных GUID и статистики использования сервисов для исследований безопасности прошивок.
__.
_ __/_ /| |
| ) | ) | |
| \ | \ | |
/ / _ / ||
/ /
_________ . ____ . . _____
/ / _ || ______ ______ | |/ _| ____ ||/ _
_ \ / / / |/ // / | < / | \ / __
/ \ /| |_ \ _ \ | | | | \ || | \ /
/ / /_/ |/ > > |____| _| /||| _ >
/ / / / / /
EFI Swiss Knife Плагин для IDA, улучшающий реверс-инжиниринг (U)EFI
Copyright (C) 2016, 2017 Pedro Vilaça (fG!) - [email protected] - https://reverse.put.as
Это плагин для IDA, помогающий в реверс-инжиниринге (U)EFI-бинарников. Он основан на оригинальной работе Snare - https://github.com/snare/ida-efiutils Поскольку я ненавижу Python, я сделал что-то новое на C, добавив несколько дополнительных функций, которые хотел.
Протестировано с IDA 6.9/6.95 на Mac OS X.
Для компиляции под OS X используйте Makefile или проект XCode.
Вам нужно будет отредактировать проект XCode и указать пути к SDK. (по умолчанию — /Applications/IDA Pro 6.95/idasdk695)
Вам следует отредактировать config.h и изменить пути к журналу и базе данных.
Скопируйте EFISwissKnife.pmc64 в /Applications/IDA Pro 6.95/idaq.app/Contents/MacOS/plugins/
По умолчанию плагин компилируется только для 64-битной версии IDA. Если вы хотите плагин для 32-битной версии, вам нужно отредактировать проект Xcode и изменить EA64=1 на 0.
Чтобы вызвать его из IDA, используйте Shift+F2, а затем
Плагин поддерживает пакетный режим на случай, если вы хотите массово анализировать EFI-бинарники и собирать статистику об использовании сервисов.
Вероятно, вам захочется обновить GUID, доступные в efi_guids.h.
Этот код нацелен на EFI-бинарники Mac OS X. Он должен работать с UEFI-бинарниками других платформ без проблем или с незначительными модификациями и обновлениями.
Поддерживаются только PE-бинарники, TE-бинарники пока не поддерживаются.
Вот и всё! Наслаждайтесь :-)
fG!
v1.0 — Начальная версия
ОШИБКИ IDA: Ещё одна ошибка связана с флагом PLUGIN_UNL. Он используется для «выгрузки плагина сразу после вызова run». Если эта опция установлена, она вызывает сбой в версии для Windows. Версия для Mac, похоже, справляется с этим нормально.