Некоторые вопросы по реверсингу security-related фич

Здравствуйте.

Недавно стал обладателем ноутбука ThinkPad x220, которые, как известно, в связи с законодательными заморочками в РФ поставляются с отключенными TPM и AES-NI. C AES-NI я разобрался довольно быстро: Google подсказал, что его настройки хранятся в MSR регистре 0x13C, после чего я написал скрипт для pyew, который по строке поиска "0x13C" помог мне найти UEFI модуль F7731B4C-58A2-4DF4-8980-5645D39ECE58_1_719 (он же PowerManagement2.efi), устанавливающий содержимое этого самого регистра в процессе загрузки. Разумеется, далее этот самый модуль был благополучно отпатчен.

Однако, дело в другом: я сравнил код двух модулей PowerManagement2.efi (один был получен с BIOS моей машины, а второй -- с машины в которой AES-NI был активен изначально), и этот код оказался совершенно одинаковым, а его поверхностный реверс показал, что установка/сброс нужных флагов в MSR регистре 0x13C происходит в зависимости от значения некоего слова, прочитанного по определённому смещению из какой-то глобальной области памяти.
В связи с вышеизложенным имею ряд вопросов:

1) Как именно вендор устанавливает настройки аппаратной части в UEFI конкретной машины (не обязательно Lenovo, хотя бы на примере любого другого)?
2) Как мне получить доступ к этим настройкам, имея дамп BIOS и физический доступ к исследуемой машине?

Спасибо.

Да, так же буду благодарен за любые ссылки на интересные материалы, имеющие отношение к реверсингу и внутреннему устройству UEFI.

Внутреннее устройство на - edk.tianocore.org. Берутся исходники EDK и внимательно курятся. Они на С.
Далее дело техники... Функция инициализации у всех U/EFI модулей DXE выглядит так:


EFI_STATUS DriverEntry (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE  *SystemTable);

Указатель yна структуру SystemTable сохраняется в глобальной переменной gST. Далее из него по смещению "извлекаются" указатели на структуры EFI_BOOT_SERVICES и EFI_RUNTIME_SERVICES, которые сохраняются в глобальных переменных gBS и gRS. По смещениям через эти указатели производитсяя косвенный вызов всех стандартных (API) функций EFI. Далее по GUID-ам вылавливаются стандартные протоколы, а по протоколам восстанавливай структуры.

--
With Best Wishes, A. Woland

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей