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

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

Ищем одноимённый модуль. Теоретически в окне справа оного должна быть отображена информация о составных частях прошивки и адресах, по которым нужно их расставлять.
С учётом
8-Мегабитности прошивки приведённого примера, что обозначает, что начальный адрес оной в памяти есть
FFF80000, несложно (хотя, может, и сложно) догадаться, что в недрах капсулы нужно найти три части и записать их по адресам
70000,
8000 и
2000 соответственно. Исходя из названия логично, что:
- recovery firmvare - есть ранее нами уже рассекреченный бутблок (поэтому и пишется в конец)
- main firmware - основной код BIOS (кликуха - DXE Core или POST по-нашенски)
- logos - и прочие подобные файлы (их может не быть) есть просто дополнительная мишура, полноэкранная заставка в данном случае
У каждой из частей отображается её
GUID по которому можно безошибочно извлечь нужный(-ую?)
FFS. С помощью того же hex-редактора записываем выделенные куски по нужным адресам в "заготовке" прошивки и на выходе получится заветный образ. Правда - почти. Но пока хватит.
Попробовал. Загрузчик нашел без проблем, а вот как сохранить его непонял. Отметил его, нажал "Сохранить как", но ничего не сохраняется, файл не создается.
Пишем правильно: мультиметр, тестер, цифровой осциллограф (недорогой осциллограф), доступ интернет, AMD-V, ноутбук Toshiba, Dell 500, вольтметр, пирометр, лазерная резка, компьютерная помощь, ремонт мониторов, паяльная станция, ноутбуки Sony, радиатор.
Роман, спасибо - в аккурат, вовремя пришлось (чтоб её, эту маму) ; Ысчо раз, очень вовремя и как всегда грамотно...
- Ситчик веселенький есть?..
- Приезжайте, обхохочетесь!..
Роман, у меня есть самые свежие исходные коды BIOS-ов для материнских плат на современных чипсетах AMD любых вариантов - RS690 (все варианты), RS780 (все варианты), наверное, еще какие-то. BIOSы c поддержкой AGESA все версий: 3,4,6. В комплекте куча фирменного софта для отладки BIOS-ов. Интересует?
Очень интересует, хоть я и не Роман
Либо нечему гореть, либо нечем поджечь!
blaster, аналогично, меня тоже очень интересует!..
Партизан подпольной луны aka (R)soft
BIOS-это как раз и есть основной профиль этого форума-так зачем спрашивать?
а для сепаратизма есть приват-чтоб остальных не дразнить
"Любая в достаточной степени продвинутая информация неотличима от шума":)
Дайте пожалуйста ссылочку именно на патчер, окно которого изображено в этой статье, все перерыл не могу найти.
blaster, а для Phoenix BIOS есть у тебя тулзы? не могу никак найти(
Не понял, где взять ПАтчер 7???
rom.by/forum/EFI_unpacker Внизу.
-=Кто сказал что бесполезно биться головой об стену...=- (НП)
Пх’нглуи мглв’нафх Ктулху Р’льех вгах’нагл фхтагн
Хочешь сделать хорошо - сделай это сам
А вот если у меня Insyde BIOS, и там нет капсул.

Только три FFS (очевидно, что это логотип, собственно биос и бутблок). Могу я такое сразу зашить через программатор?
Вот скриншот:
А поясните, пожалуйста следующую вещь.

Пользуюсь указанным альфа патчером.
Делаю, как и написано. Сохраняю бутблок.
Но! Что смущает!
Во первых не работает
Во вторых вот картинка того, что сохранилось (начало)
DG31GL.jpg.html
Так там с нулевого адреса идёт EA D0 FF ...
Хотя эта команда должна идти на 16 байте. (чтобы она была первой инструкцией по FFFF:FFF0).
Размер сохранённого файла 0x10000
То есть, дописывая в конец (как указано ) 4-мегбитного (512Kб) биос-файла, ничего не сдвинется.
(
Как быть?
Ребят, как вообще эта программа работает? Как можно вставить выход с неё в заготовку?
Я, хоть убей, не пойму как первая выполняемая инструкция при таком выходе должна попасть в FFFF:FFF0. Либо нужно писать программу, чтобы она по 16 байт переписывала... или что... Объясните, пожалуйста.
lsvmo
.
. Вас интересует инструкция, лежащая в конце bootblock'а (начиная с последних 16 байт).
1. При подобных вопросах было бы неплохо приводить ссылку на разбираемый образ прошивки.
2. Вместо картинки весом 232 кб можно было бы дать сохраненный bootblock весом 64 кб
3. Глубоко наплевать, что у вас оказалось по нулевому адресу в bootblock'е
Плата от Intel DG31GL.
По ссылкам.
Вот ссылка на БИОС
downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=17919&ProdId=2966&...
а вот на сам файл
downloadcenter.intel.com/confirm.aspx?httpDown=http://downloadmirror.intel...
Ссылка на то, что получилось у меня с помощью альфа-программы
DG31GL.rom
Насколько я знаю, начиная с 16-ого байта от конца должна быть инструкция EA адрес...
то есть jmp адрес
А у меня её нет. А есть она только по нулевому адресу... Вот я и говорю, как так?
Подскажите, пожалуйста...
Может у кого есть образ прошивки этой платы?
P.S. Кстати, на других BIOS от Intel программа почему-то вообще сама завершается. Открываешь файл, а она раз - и нет её. Например, на DG965RY.
2. Необязательно jmp будет первой же инструкцией по 0xFFFF:0xFFF0.
3. Необязательно код операции jmp будет равен 0xEA
4. Т.е. bootblock у вас вполне адекватный.
Кроме boot'а BIOS у матерей с Intel чипсетом есть слабое место - микрокод.
Intel в отличие от AMD оставил для патчения аппаратных ошибок. В некоторых прошивках BIOS в реальном режиме процессора есть функция загрузки микрокода с дискетты. Пустой процессор (можно потереть рентгеном) по идее должен выходить в технологический режим загрузки устройства управления внутрисистемной шины. А у флешек кроме выпайки в программатор есть последовательная шина, через которую по идее можно запрограммировать флешку через дорожки платы.
P.S. публичный e-mail:batman68@rambler.ru
P.S.S. Мать из Сулимов (д. Беседки, Гомельская обл.)
Нда, какую чушь только не пишут гости, в частности Батов Дмитрий Евгеньевич
.
Отправить комментарий