Rust в UEFI: создание утилиты для сохранения изображения BIOS

Традиционные языки для разработки BIOS – C и ассемблер, но Rust становится все более востребованным. Разработка BIOS схожа с embedded-разработкой: сложная отладка, взаимодействие с аппаратурой, поиск документации. При этом есть и свои преимущества: высокая тактовая частота, большой объем памяти. Современным стандартом для программ запускаемых при старте компьютера является UEFI, заменивший BIOS.
Rust в UEFI: создание утилиты для сохранения изображения BIOS
Изображение носит иллюстративный характер

Для создания EFI-утилит на Rust используется крейт uefi-rs. Он предоставляет необходимые инструменты, включая макросы и обертки для таблиц UEFI. Утилита сохраняет изображение заставки BIOS, расположенной в Boot Graphics Record Table (BGRT), в файл. Таблица BGRT содержит указатель на изображение в памяти.

Для доступа к BGRT, потребовалась разработка собственной обертки для ACPI протокола, так как не все протоколы поддерживаются uefi-rs. Протокол ACPI позволяет получить доступ к таблицам, включая BGRT. Функция get_acpi_table возвращает заголовок таблицы, а также требуемую таблицу.

Для нахождения таблицы BGRT, был разработан обобщенный метод locate_table_by_signature. Структура EfiAcpiBootGraphicsResourceTable описывает формат таблицы BGRT. В итоге, полученные данные изображения из таблицы BGRT сохраняются в файл на диске.


Новое на сайте

19189Почему экономика, а не высокие идеалы, стала истинным двигателем сопротивления в... 19188Критическая уязвимость в решениях BeyondTrust спровоцировала глобальную волну кражи... 19187Эволюция угроз: атака на цепочку поставок ИИ-ассистента Cline CLI через уязвимость... 19186Как фальшивая проверка Cloudflare в кампании ClickFix скрыто внедряет новый троян... 19185Почему гендерно-нейтральные корпоративные политики становятся главным инструментом... 19184Как искусственный интеллект уничтожил временной зазор между обнаружением уязвимости и... 19183Банковский троян Massiv маскируется под IPTV для захвата контроля над Android 19182Как шпионская кампания CRESCENTHARVEST использует социальную инженерию для кражи данных... 19181Как критическая уязвимость в телефонах Grandstream открывает хакерам доступ к... 19180Почему операционная непрерывность становится единственным ответом на перманентную... 19179Критические уязвимости в популярных расширениях VS Code угрожают миллионам разработчиков 19178Как внедрить интеллектуальные рабочие процессы и почему 88% проектов ИИ терпят неудачу? 19177Критическая уязвимость нулевого дня в Dell RecoverPoint открывает злоумышленникам полный... 19176Notepad++ внедряет механизм двойной блокировки для защиты от атак группировки Lotus Panda 19175Новые угрозы в каталоге CISA: от критических дыр в Chrome и Zimbra до возвращения червя...
Ссылка