Автор: wiki.rom.by , 4 февраля 2008
Содержимое данного поля является приватным и не предназначено для показа.

BBCode

  • HTML-теги не обрабатываются и показываются как обычный текст
  • You may use the following BBCode tags:
    • [align]
    • [b]
    • [code]
    • [color]
    • [font]
    • [hr]
    • [i]
    • [img]
    • [list]
    • [quote]
    • [s]
    • [size]
    • [spoiler]
    • [sub]
    • [sup]
    • [table]
    • [u]
    • [url]
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.

Unknown BIOS (не проверено)

18 лет 1 месяц назад

























Рис.2.Ищем подстроку -lh.


Рис.2.

Ищем подстроку -lh.







Рис.3.Первой найдется в начале "original.bin".


Рис.3.

Первой найдется в начале "original.bin".







Рис.4.Второй - в начале awardext.rom.


Рис.4.

Второй - в начале awardext.rom.







Рис.5.Перебираем, пока не находим нужный нам модуль (видно его название).


Рис.5.

Перебираем, пока не находим нужный нам модуль (видно его название).







Рис.6.Выделяем модуль - его начало левей подстроки -lh на два байта.Кто не знает, для выделения в hiew используется '*'.


Рис.6.

Выделяем модуль - его начало левей подстроки -lh на два байта.

<font size="-2">Кто не знает, для выделения в hiew используется '*'.</font>







Рис.7.Ищем начало следующего модуля...


Рис.7.

Ищем начало следующего модуля...







Рис.8....не "закрывая" выделяемую область...


Рис.8.

...не "закрывая" выделяемую область...







Рис.9....и сдвигаемся на три байта влево (это должен быть нулевой байт). Модуль выделен!


Рис.9.

...и сдвигаемся на три байта влево (это должен быть нулевой байт). Модуль выделен!







Рис.10.Сохраняем "как есть" (As Is).


Рис.10.

Сохраняем "как есть" (As Is).







Рис.11.И теперь его можно распаковать любым архиватором.


Рис.11.

И теперь его можно распаковать любым архиватором.







Рис.12.Всё вышеописанное можно было сделать с помощью команды cbrom f8.bin /pci extract. Но ученье - свет! :)


Рис.12.

Всё вышеописанное можно было сделать с помощью команды cbrom f8.bin /pci extract. Но ученье - свет! :)







Рис.13.Для добавления используем строчку:cbrom f8.bin /pci edit_i8.ttt


Рис.13.

Для добавления используем строчку:

cbrom f8.bin /pci edit_i8.ttt








Редактирование "original.bin"






Извлечение "original.bin"



Но главным вариантом в редактировании биосов является, конечно же, изменение "original.bin". Способов для извлечения "original.bin" известно превеликое множество:



  • запустив модбин и переключившись в другое окно скопировать себе временный одноименный файл, который он (модбин) создает в процессе работы с биосом.

  • тьма всевозможных утилит, работающих с Award BIOS - имеет возможность распаковки любого модуля

  • наконец, просто архиватором (или даже TotalCommaner-ом), который "видит" как lzh-архив с одним файлом внутри - "original.bin"


Однако, у всех (и других подобных) есть существенный недостаток - зависимость от вышеописанных утилит и различных модификаций Award BIOS (оставаясь при этом v.6.00PG). Например, (не специально, но получилось удачно :) ) выбранный файл:



  • не открывается модбином

  • "несъедобен" для многих утилит

  • не определяется архиватором, как LZH-архив.


Вот тут и пригодится опыт, полученный в предыдущем разделе. :)




















Рис.14.Аналогично сначала ищем начало "original.bin" по подстроке -lh.


Рис.14.

Аналогично сначала ищем начало "original.bin" по подстроке -lh.







Рис.15.Для Award BIOS v.6.00PG (розлива этого тысячелетия) - он есть всегда первый модуль в биосе, в нашем случае он располагается по адресу 90000h.


Рис.15.

Для Award BIOS v.6.00PG (розлива этого тысячелетия) - он есть всегда первый модуль в биосе, в нашем случае он располагается по адресу 90000h.







Рис.16.Выделяем, начиная с начала...


Рис.16.

Выделяем, начиная с начала...







Рис.17....и ищем его конец...


Рис.17.

...и ищем его конец...







Рис.18....следующий модуль - awardext.rom.


Рис.18.

...следующий модуль - awardext.rom.







Рис.19.Сдвигаемся левей на три байта - в отличие от "простых" модулей в конце у "original.bin" есть еще и байт CRC(FF в нашем случае), который нам для распаковки ни к чему (хотя с ним тоже прекрасно распакуется - как на рисунке).


Рис.19.

Сдвигаемся левей на три байта - в отличие от "простых" модулей в конце у "original.bin" есть еще и байт CRC(FF в нашем случае), который нам для распаковки ни к чему (хотя с ним тоже прекрасно распакуется - как на рисунке).







Рис.20.Сохраняем в файл...


Рис.20.

Сохраняем в файл...







Рис.21....и распаковываем. "original.bin" к редактированию готов!


Рис.21.

...и распаковываем. "original.bin" к редактированию готов!








Замена "original.bin" отредактированным вариантом



Вариантов добавления новой (отредактированной) версии "original.bin" в биос также есть несколько и эти варианты во многом аналогичны его распаковке с их недостатками. Потому не будем отвлекаться на "мишуру" и постараемся сделать максимально "правильно".





























Рис.22.После редактирования упаковываем "original.bin" с помощью старенького lha.


Рис.22.

После редактирования упаковываем "original.bin" с помощью старенького lha.







Рис.23.Уже хорошо знакомой процедурой поиска в исходном биосе по подстроке -lh...


Рис.23.

Уже хорошо знакомой процедурой поиска в исходном биосе по подстроке -lh...







Рис.24.... ищем конец модуля "original.bin".


Рис.24.

... ищем конец модуля "original.bin".







Рис.25.Сдвигаемся на три байта влево - захватив байт CRC - выделяем область...


Рис.25.

Сдвигаемся на три байта влево - захватив байт CRC - выделяем область...







Рис.26....которая продлится до самого конца. Конец упакованных модулей проще всего найти по FFFFFF...


Рис.26.

...которая продлится до самого конца. Конец упакованных модулей проще всего найти по FFFFFF...







Рис.27.Обычно конец находится с первой попытки (удачный пример - с "трудностям" :) ), но сейчас "по дороге" попался незапакованный модуль, в котором тоже есть искомые "эфэфки". Пропускаем эту область и ищем дальше.


Рис.27.

Обычно конец находится с первой попытки (удачный пример - с "трудностям" :) ), но сейчас "по дороге" попался незапакованный модуль, в котором тоже есть искомые "эфэфки". Пропускаем эту область и ищем дальше.







Рис.28.Таки нашли!


Рис.28.

Таки нашли!







Рис.29.Для "запаса" (на всякий случай) захватим кусочек FF в конце (ведь размер упакованного "original.bin" может отличаться от начального) и сохраняем в файл.


Рис.29.

Для "запаса" (на всякий случай) захватим кусочек FF в конце (ведь размер упакованного "original.bin" может отличаться от начального) и сохраняем в файл.







Рис.30.Далее следует "хитрая" процедура - копируем в конец ранее созданного "1.lzh" полученный "хвост" биоса ("ost.tmp" - состоящий из всех упакованных модулей кроме "original.tmp").


Рис.30.

Далее следует "хитрая" процедура - копируем в конец ранее созданного "1.lzh" полученный "хвост" биоса ("ost.tmp" - состоящий из всех упакованных модулей кроме "original.tmp").







Рис.31.В результате полученный "слепок" (из "модульной начинки" в виде запакованного "original.bin" + 1 байт CRC + остальные модули биоса) записываем в файл.


Рис.31.

В результате полученный "слепок" (из "модульной начинки" в виде запакованного "original.bin" + 1 байт CRC + остальные модули биоса) записываем в файл.







Рис.32.Как мы отмечали, "original.bin", который является началом модульной начинки" - был обнаружен по адресу 90000 - туда и вставляем весь полученный файл.


Рис.32.

Как мы отмечали, "original.bin", который является началом модульной начинки" - был обнаружен по адресу 90000 - туда и вставляем весь полученный файл.







Рис.33.Итак, собрать - собрали и cbrom уже даже может корректно подтвердить этот факт. Однако контрольные суммы-то не пересчитаны - ни байт в конце "original.bin", ни "общая" CRC всех модулей, которая лежит сразу же перед BootBlock-ом.


Рис.33.

Итак, собрать - собрали и cbrom уже даже может корректно подтвердить этот факт. Однако контрольные суммы-то не пересчитаны - ни байт в конце "original.bin", ни "общая" CRC всех модулей, которая лежит сразу же перед BootBlock-ом.








Пересчет CRC



Итак, теперь нам еще предстоит пересчитать контрольные суммы:



  1. Контрольную сумму модуля "original.bin", которая располагается сразу после него, перед всеми остальными запакованными модулями.

  2. "Общую" контрольную сумму всех модулей, которая располагается в самом конце используемого ими (модулями) пространства биоса, сразу перед началом бутблока.


Правило следующее:



  • CRC модуля "original.bin" пересчитывает modbin

  • "Общую" CRC пересчитывает cbrom


Один "не трогает" контрольные суммы "другого", поэтому для пересчёта обеих контрольных сумм обязательны два этапа.

Unknown BIOS (не проверено)

18 лет 1 месяц назад


CRC "original.bin"



Контольная сумма в конце "original.bin" является "стандартной" - она считается как побайтовая сумма всего модуля (начиная с самого начала - адреса 90000 в нашем случае) до "нулевого" байта на конце. После чего "инвертированное" значение и является конечным значением - так, чтобы после при подсчете CRC по всему "диапазону" от начала до байта CRC (включая его) получался 0. Данную процедуру можно сделать многими утилитами, но есть важное НО:




Рис.34.Обведены заголовки и выделено главное отличие - стандартное для "оригинал.бина" место распаковки (5000:0000) в "lha"-шном заголовке обозначает другое, потому имеет совсем другое значение (A69D:8BF6): понятно, что с таким значением биос даже "при желании" - не заработает.


Рис.34.

Обведены заголовки и выделено главное отличие - стандартное для "оригинал.бина" место распаковки (5000:0000) в "lha"-шном заголовке обозначает другое, потому имеет совсем другое значение (A69D:8BF6): понятно, что с таким значением биос даже "при желании" - не заработает.




Замечание. Кстати, то, что модбин корректно "узнал" в подобном модуле "original.bin" - заслуга последних версий cbrom32, более старые версии (cbrom) - страшно бы матерились или даже зависли...

Кроме CRC, мы должны исправить заголовок упакованного модуля "original.bin" - он "похож", но, всё-таки, принципиально отличается от сделанного LHA, потому, не исправив его, мы получим нестартующую систему. И именно этим занимается modbin.

















Рис.35.Открываем сделанный файл в модбине.


Рис.35.

Открываем сделанный файл в модбине.







Рис.36.Облом-с! "Слишком свежий" был выбран примерчик - даже самый последний модбин не захотел проглотить 8Мбит-ный биос, не признав в нём Аварда...


Рис.36.

Облом-с! "Слишком свежий" был выбран примерчик - даже самый последний модбин не захотел проглотить 8Мбит-ный биос, не признав в нём Аварда...







Рис.37.Для примера, как "должно было бы быть" - продемонстрируем на другом (4М-битном) биосе (от GA-8IPE1000Pro), сделанным таким же образом. Открываем его в модбине...


Рис.37.

Для примера, как "должно было бы быть" - продемонстрируем на другом (4М-битном) биосе (от GA-8IPE1000Pro), сделанным таким же образом. Открываем его в модбине...







Рис.38.В отличие от предыдущего, он благополучно открывается...


Рис.38.

В отличие от предыдущего, он благополучно открывается...







Рис.39.Сохраняем его под нужным именем (можно "поверх" открываемого).


Рис.39.

Сохраняем его под нужным именем (можно "поверх" открываемого).





 


Статья пишется "по ходу", потому для меня это тоже "сюрприз". К сожалению, но факт - стабильностью/"совместимостью"/"всеядностью" - не блещут никакие версии модбина. Будем надеяться, что в будущем эта печальная реальность изменится, но пока нужно стать "пионерами" и быть готовым всегда и ко всему. :)


Выйти из данной ситуации поможет вышеупомянутое правило - модбин "работает" лишь с одним (единственным) модулем - "original.bin", остальные ему абсолютно не нужны. Этим и воспользуемся, придётся "обработать" модуль "original.bin" - "отдельно".





































Рис.40.Для этого можно использовать другой биос, который "примет" используемая версия модбина. Покопавшись в соседних каталогах, был обнаружен "приятный" двухмегабитный биос от GA-8I848P Rev.1.x - на нём и проведем нужные действия.


Рис.40.

Для этого можно использовать другой биос, который "примет" используемая версия модбина. Покопавшись в соседних каталогах, был обнаружен "приятный" двухмегабитный биос от GA-8I848P Rev.1.x - на нём и проведем нужные действия.







Рис.41.Сначала "стираем" все модули в биосе. Для этого выделяем область от начала...


Рис.41.

Сначала "стираем" все модули в биосе. Для этого выделяем область от начала...







Рис.42....до конца (ищем "стандартно" по FFFFFFFF)...


Рис.42.

...до конца (ищем "стандартно" по FFFFFFFF)...







Рис.43. и забиваем ее эфэфками (ALT-F2 для hiew).


Рис.43.

и забиваем ее эфэфками (ALT-F2 для hiew).







Рис.44.Полученная "заготовка" (без модулей) - готова!


Рис.44.

Полученная "заготовка" (без модулей) - готова!







Рис.45.cbrom в отсутствие модулей немного "растерялся". :) Но нас это не пугает - так и задумано! :)


Рис.45.

cbrom в отсутствие модулей немного "растерялся". :) Но нас это не пугает - так и задумано! :)







Рис.46.Повторяем процедуру получения запакованного архива изменённого файла "original.bin" для вставки, или берем предусмотрительно ранее заготовленный "1.lzh" (см. Рис.22.).


Рис.46.

Повторяем процедуру получения запакованного архива изменённого файла "original.bin" для вставки, или берем предусмотрительно ранее заготовленный "1.lzh" (см. Рис.22.).







Рис.47.Выделяем всё (CTRL-* в hiew) и записываем в самое начало сделанной "заготовки".


Рис.47.

Выделяем всё (CTRL-* в hiew) и записываем в самое начало сделанной "заготовки".







Рис.48.Теперь полученный биос благополучно открывается модбином...


Рис.48.

Теперь полученный биос благополучно открывается модбином...







Рис.49....Исправляем нужное в нём...


Рис.49.

...Исправляем нужное в нём...







Рис.50....И сохраняем.


Рис.50.

...И сохраняем.







Изображение:F8edit cbrom good.gif
Рис.51.

Проверяем - cbrom больше не "ругается"...







Рис.52.Далее из сохранённого файла нужно извлечь отредактированный и уже "пересчитанный" модуль "original.bin". Для этого выделяем его от начала...


Рис.52.

Далее из сохранённого файла нужно извлечь отредактированный и уже "пересчитанный" модуль "original.bin". Для этого выделяем его от начала...







Рис.53....до конца.


Рис.53.

...до конца.







Рис.54.Захватываем, кроме нулевого байта, и байт CRC (54h в нашем случае).


Рис.54.

Захватываем, кроме нулевого байта, и байт CRC (54h в нашем случае).







Рис.55.И сохраняем в новый файл.


Рис.55.

И сохраняем в новый файл.







Рис.56.Теперь к нашему уже полностью "готовому" (с корректным заголовком и правльной CRC на конце) запакованному модулю "original.bin" дописываем аналогично сделанному на этапе Рис.30. содержимое "хвоста", только БЕЗ байта CRC в начале (ведь у нас уже он есть - правильно пересчитанный). "Хвост" делаем аналогично процедуре на Рис.23-29.


Рис.56.

Теперь к нашему уже полностью "готовому" (с корректным заголовком и правльной CRC на конце) запакованному модулю "original.bin" дописываем аналогично сделанному на этапе Рис.30. содержимое "хвоста", только БЕЗ байта CRC в начале (ведь у нас уже он есть - правильно пересчитанный). "Хвост" делаем аналогично процедуре на Рис.23-29.







Рис.57.И (аналогично шагу на Рис.32) записываем полученный "слепок" в предварительно "вычещенный" от модулей (аналогично шагам на Рис.41-44) наш будущий биос. Модули начинались, как помним (Рис.15.), с адреса 90000 - туда и вставляем полученный слепок.


Рис.57.

И (аналогично шагу на Рис.32) записываем полученный "слепок" в предварительно "вычещенный" от модулей (аналогично шагам на Рис.41-44) наш будущий биос. Модули начинались, как помним (Рис.15.), с адреса 90000 - туда и вставляем полученный слепок.







Рис.58."Модбинная" стадия завершена.


Рис.58.

"Модбинная" стадия завершена.








"Общая" CRC биоса



В отличие от модбина, cbrom обладает достаточной стабильностью и проблем с пересчетом CRC ("его" контрольной суммы - в конце всех модулей; напомню, CRC-байт "original.bin" он не "трогает"). Для работы лучше всего пользоваться самым последним – на момент написания это CBROM.EXE V1.55 10/12/05 Release. Для пересчета CRC достаточно проделать любую операцию с биосом (просмотр по опции /D - не в счёт). Например, просто добавить и после удалить какой-то "ненужный" файлик.


cbrom myfile.bin /other 1234:5678 nanana.ttt
cbrom myfile.bin /other 1234:5678 release

<font face="MS Serif">Замечание - можно посоветовать только не выбирать слишком большие "просто файлики" - 1-5кБ, иначе они могут не "влезть", и обновления CRC не произойдёт.</font>

Всё, BIOS - готов!


Примечание - биос по-прежнему не будет открываться модбином, однако это уже не "наша вина" - будем ждать, пока не выпустят новую версию, с которой не придется для каждого редактирования опций повторять процедуру, описанную в шагах Рис.40-58. И пусть не смущает кажущаяся "длительность" и "мудрёность" процедуры, при достаточном освоении "азов" сие есть действитьльно - элементарно. (..., Ватсон! :) )

Материал из Wiki.

Содержание


Утилиты для редактирования Award BIOS 6.0

CBROM v.1.55 - программа для просмотра/распаковки различных модулей биос. Это стандартная утилита от самого Award-а.
Замечание: более "старые" версии (древней ver.1.47) могут работать некорректно (особенно с новыми платами) потому настоятельно НЕ РЕКОМЕНДУЮТСЯ.
MODBIN6 2.01.02 - программа, позволяющая редактировать некоторые регистры чипсета, а так же изменять надписи/опции в BIOS Setup. Это стандартная утилита от самого Award-а.
Замечание: данная версия, в отличие от более старых является наиболее стабильной, хоть и, тоже, не все биосы (точней - содержание BIOS Setup) отображает корректно. В любом случае после редактирования биоса модбином настоятельно рекомендуется "пройтись" по нему сибиромом для точного пересчета контрольной суммы.
LHA ver.2.55 - старый(1988-1991)-добрый архиватор от Haruyasu Yoshizaki, алгоритм которого и лёг в основу упаковки модулей Award BIOS.
HEX-редактор (любой). Можно порекомендовать заслуженно популярный hiew.

Структура Award BIOS v6.00PG

Рис.1.Состав/модули GA-965P-S3 в cbrom.
Рис.1.
Состав/модули GA-965P-S3 в cbrom.

Рассмотрим на примере достаточно популярной (и достаточно "свежей" на время написания статьи) платы Gigabyte GA-965P-S3. Как видно из Рис.1., имеет следующий состав модулей (без учета "основного"):

  1. awardext.rom
  2. ACPITBL.BIN
  3. AwardBmp.bmp
  4. ggroup.bin
  5. awardeyt.rom
  6. _EN_CODE.BIN
  7. JMB59.BIN
  8. ICH8AHCI.BIN
  9. 8056b0.lom
  10. PPMINIT.ROM
  11. SBF.BIN
  12. AFSC_HDR.ROM
  13. ME_MRC.BIN
Award BIOS v6.00PG
"original.bin" all another modules CPUcodes (nonPacked) BootBlock
0. 965ps3.BIN 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. NCPUCODE.BIN BootBlock
xx-lha в начале + CRC-byte в конце Все модули без CRC-байта в конце После cpucodes - пустое место, в конце которого (перед самым BootBlock-ом) два байта CRC Бутблок имеет лишь CRC модуля MemSizing

Процесс редактирования


Редактирование "остальных" модулей (кроме "original.bin")

Для любого модуля кроме "основного" ("original.bin" или "965ps3.BIN" в нашем случае) он крайне прост:

  1. распаковываем нужный файл ("вручную" или с помощью cbrom)
  2. редактируем
  3. добавляем (обновляем) в биос с помощью cbrom

Распаковать можно двумя способами. Можно сделать это с помощью cbrom, например для распаковки awardext.rom нужно ввести:

cbrom mybios.bin /awardext extract

(Подробности работы с cbrom - в отдельной статье)

Второй вариант - "ручками". Ищем в hex-редакторе по символьной строке '-lh' начало и конец нужного модуля, сохраняем найденную область в файл с расширением '*.lzh' и после распаковываем любым архиватором. Например, для распаковки "ICH8AHCI.BIN" последовательно перебираем найденные строчки '-lh', пока не доберемся до нужной:

Продолжение

Окончание