Собираем образ 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-редактора записываем выделенные куски по нужным адресам в "заготовке" прошивки и на выходе получится заветный образ. Правда - почти. Но пока хватит.

7 MB
0 MB

Попробовал. Загрузчик нашел без проблем, а вот как сохранить его непонял. Отметил его, нажал "Сохранить как", но ничего не сохраняется, файл не создается.

Изображение пользователя apple_rom.
4 MB

Пишем правильно: мультиметр, тестер, цифровой осциллограф (недорогой осциллограф), доступ интернет, AMD-V, ноутбук Toshiba, Dell 500, вольтметр, пирометр, лазерная резка, компьютерная помощь, ремонт мониторов, паяльная станция, ноутбуки Sony, радиатор.

Изображение пользователя ivp.
0 MB

Роман, спасибо - в аккурат, вовремя пришлось (чтоб её, эту маму) ; Ысчо раз, очень вовремя и как всегда грамотно...

- Ситчик веселенький есть?..
- Приезжайте, обхохочетесь!..

0 MB

Роман, у меня есть самые свежие исходные коды BIOS-ов для материнских плат на современных чипсетах AMD любых вариантов - RS690 (все варианты), RS780 (все варианты), наверное, еще какие-то. BIOSы c поддержкой AGESA все версий: 3,4,6. В комплекте куча фирменного софта для отладки BIOS-ов. Интересует?

Изображение пользователя Baza.
0 MB

Очень интересует, хоть я и не Роман:)

Либо нечему гореть, либо нечем поджечь!

Изображение пользователя R_Soft.
0 MB

blaster, аналогично, меня тоже очень интересует!..

Партизан подпольной луны aka (R)soft

0 MB

blaster писал(-а):
В комплекте куча фирменного софта для отладки BIOS-ов. Интересует?

BIOS-это как раз и есть основной профиль этого форума-так зачем спрашивать?
а для сепаратизма есть приват-чтоб остальных не дразнить:)


0 MB

Дайте пожалуйста ссылочку именно на патчер, окно которого изображено в этой статье, все перерыл не могу найти.

0 MB

blaster, а для Phoenix BIOS есть у тебя тулзы? не могу никак найти(

0 MB

Не понял, где взять ПАтчер 7???

Изображение пользователя Santa.
0 MB

rom.by/forum/EFI_unpacker Внизу.

-=Кто сказал что бесполезно биться головой об стену...=- (НП)
Пх’нглуи мглв’нафх Ктулху Р’льех вгах’нагл фхтагн
Хочешь сделать хорошо - сделай это сам

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

Содержание этого поля является приватным и не предназначено к показу.
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

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

CAPTCHA
Перед отправкой сообщения ответьте на вопрос.
     _      _  _     _   _   _____          _____
/ \ | || | | | | | |__ / _ __ |__ /
/ _ \ | || |_ | |_| | / / | '_ \ / /
/ ___ \ |__ _| | _ | / /_ | | | | / /_
/_/ \_\ |_| |_| |_| /____| |_| |_| /____|
Enter the code depicted in ASCII art style.


RSS-материал