Очень помогла статейка Структура EFI по разборы EFI капсулы.
На LPC при этом последние коды:
W 0x80 0x16
W 0x80 0x36
W 0x80 0x87
R 0x60 --
R 0x64 --
R 0x60 --
R 0x64 --
Видно что выставляет POST 0x87 и пробует читать KBC из EC.
А проблема то в общем в следующем:
Разобрал я BIOS на кусочки (очень благодаря apple_rom и его BIOS Patcher 7.0a), с помощью "такой-то матери" и исходников с tianocore сейчас могу собрать почти любой кусочек воедино с пересчетом всех CRC и т.п. Может и нашел даже это место предположительно инциализация EC, но запакована эта часть слополучным сабжем!
А вот SUBJ господа! Что за тип компрессии? Как apple_rom сделал декомпрессию???
#define EFI_CUSTOMIZED_COMPRESSION 0x02
Зарезервированное значение для OEM реализации алгоритма компресии.
Вообщем EDK и IDA Pro тебе в помощь...
Нужные файлы из EDK1:
Foundation\Library\CustomizedDecompress\CustomizedDecompress.(h|c)
Foundation\Protocol\CustomizedDecompress\CustomizedDecompress.(h|c)
Поиск в модулях биоса сигнатуры EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL_GUID
(struct EFI_GUID = {0x9a44198e, 0xa4a2, 0x44e6, 0x8a, 0x1f, 0x39, 0xbe, 0xfd, 0xac, 0x89, 0x6f};)
Затем поиск кода инициализации переменной структуры:
typedef struct _EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL {
EFI_CUSTOMIZED_DECOMPRESS_GET_INFO GetInfo;
EFI_CUSTOMIZED_DECOMPRESS_DECOMPRESS Decompress;
} EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL;
Тебе нужны 2 функции, которыми будут инициализироваться поля GetInfo и Decompress.
Далее дело техники ... Прототипы функций в Foundation\Library\CustomizedDecompress\CustomizedDecompress.h
--
With Best Wishes, A. Woland
Отправить комментарий