Здравствуйте.
Недавно стал обладателем ноутбука 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 выглядит так:
Указатель yна структуру SystemTable сохраняется в глобальной переменной gST. Далее из него по смещению "извлекаются" указатели на структуры EFI_BOOT_SERVICES и EFI_RUNTIME_SERVICES, которые сохраняются в глобальных переменных gBS и gRS. По смещениям через эти указатели производитсяя косвенный вызов всех стандартных (API) функций EFI. Далее по GUID-ам вылавливаются стандартные протоколы, а по протоколам восстанавливай структуры.
--
With Best Wishes, A. Woland
Отправить комментарий