Собираем образ BIOS из EFI-капсулы или "Как вынуть из интеловского файла бинарник для прошивки на программаторе?"

В последнее время шибко участились просьбы сделать из того, что лежит на сайте Intel под видом прошивки - то, пригодно для перешивки на программаторе, то бишь образ BIOS (точней - образ EFI).

EFI


EFI - не BIOS. Даже букв в названиях разное количество. А если это ещё и на плате от Intel (снова отличное количество букв в названии) - получается совсем тяжко. Попробуем таки разобраться, при этом без углубления в слишком тонкие материи, а больше с прагматическим уклоном а-ля "сделать-прошить-забыть".

Капсула


Итак, скачанное с сайта Intel под видом прошивки (верно для всех плат, начиная с 2004-го года) суть капсула EFI. Капсула, как не сложно догадаться из названия - инкапсулирует в себе много всякой ботвы различных компонентов, из которых, собственно, прошивальщик "на лету" собирает конечный образ EFIBIOS (режет слух и возможны непонятки, потому далее буду использовать привычное название - BIOS). Увидеть всё это хозяйство (кучу файлов/модулей в составе капсулы) можно с помощью пока недоделанной, но для такого уже рабочей - альфы BIOS Patcher 7 (которую я где-то уже выкладывал в ветке по EFI).

Полуспособ номер один - оживляем через BootBlock


Capsule
При открытии патчером капсулы видны длинные ветки инкапсулированных один в другой файлов, иногда такой глубины, что сразу чувствуешь всю капсульную натуру такой капсулы. Но нам не нужны все. Нам вообще, достаточно найти лишь одну "веточку", которая есть ничто иное, как бутблок в чистом виде. Обычно оный имеет стандартный размер в 64Кб (10000h), однако не факт - уже сталкивался с бутблоком на 256Кб на новых платах с EFI.
Итого, даже не зная ничего и не желая напрягаться - тупо переберить все, что найдёте FFS, пока не увидите справа напротив Size заветные 010000. Другим точным указанием на то, что это именно BootBlock - есть наличие в составе FFS модуля (тип RAW) с названием SecCore Driver (погоняло нашего бутблока "у них - в EFI"). Далее непринуждённо тыкаем кнопку "Сохранить как" и получаем на выходе нужный код BootBlock.
Восстановить с помощью этого файла оригинальный BIOS уже дальше дело техники. Кто внимательно читал "Искусство перешивки BIOS" тому это будет совсем просто. Полученный код с помощью любого hex-редактора вставляем в самый конец "заготовки" прошивки (пустой файл, равный по объёму требуемой прошивке). Прошиваем и получаем ошибку CRC BIOS (ясен перец - его-то - BIOS-а - и нет вовсе), срабатывает аварийная процедура восстановления BIOS (которая располагается в оживлённом нами BootBlock-е) и после стандартных шаманских действий в такой ситуации на выходе получаем рабочий компьютер.

Способ номер два - собираем прошивку


Если предыдущий полуспособ по какой-то причине не подходит, придётся разбираться плотней. Итак, делаем скидку на то, что альфа патчера является альфой и что все варианты сразу описать не смогу.

CapsuleToImage


Capsule To Image
Ищем одноимённый модуль. Теоретически в окне справа оного должна быть отображена информация о составных частях прошивки и адресах, по которым нужно их расставлять.
С учётом 8-Мегабитности прошивки приведённого примера, что обозначает, что начальный адрес оной в памяти есть FFF80000, несложно (хотя, может, и сложно) догадаться, что в недрах капсулы нужно найти три части и записать их по адресам 70000, 8000 и 2000 соответственно. Исходя из названия логично, что:
  • recovery firmvare - есть ранее нами уже рассекреченный бутблок (поэтому и пишется в конец)
  • main firmware - основной код BIOS (кликуха - DXE Core или POST по-нашенски)
  • logos - и прочие подобные файлы (их может не быть) есть просто дополнительная мишура, полноэкранная заставка в данном случае
У каждой из частей отображается её GUID по которому можно безошибочно извлечь нужный(-ую?) FFS. С помощью того же hex-редактора записываем выделенные куски по нужным адресам в "заготовке" прошивки и на выходе получится заветный образ. Правда - почти. Но пока хватит.

Если данная информация оказалась полезной/интересной - плюсаните, пожалуйста:

Можете ли мне помочь прошить материнскую плату Intel DH61DL. После обновлении биоса с БЕ0048 на БЕ0099, материнская плата больше не включается, пищит 3 раза, тоесть хочет сказать что память RAM не в порядке.
У Интель на сайте только .bio файлы размером 5мб до 13мб.
Сам чип Winbond W25Q32BV размером 4мб.
Я его уже вичитал с USB програматором CH341A. Ровно 4мб.
Теперь бы как нибудь записать туда файл, что-бы материнская плата снова ожила... но что точно нужно сделать?

Ссыкла на BE009.BIO биос файл:
downloadmirror.intel.com/22413/eng/BE0099.BIO

Воспользоваться штатными средствами восстановления пробовали?

Аватар пользователя huykin

Здравствуйте. Я тоже испытываю огромную нужду по этой проблеме! Пять лет назад замутили эту тему, и, похоже, бросили. Ничего сегодня не придумали попроще - как вытащить из интеловского bio обычный бинарный БИОС, для прошивки обычным программатором ???

если хочешь собирать мёд, не переворачивай улей.

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

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые 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.

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

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