Встраивание модифицированных модулей (в т.ч. ORIGINAL.TMP) в файл образа БИОС (AWARD)

22 мая 2004, суббота 15:26
для раздела Блоги
Встраивание модифицированных модулей
(в т.ч. ORIGINAL.TMP)
в файл образа БИОС (AWARD)


Для того, чтобы записать обновленный ORIGINAL.TMP обратно в файл прошивки,
нужно:

1. Заархивировать его. Есть 2 способа:

а) архиватором LHA:

lha.exe a <ArchName> ORIGINAL.TMP

б) CBROM'ом:

CBrom207.exe <NulFile> /PCI <FileName>
    * вместо /PCI может быть что угодно: /ACPI, /OEM0 ...
    * <NulFile> любой файл, который не жалко (хоть нулевой длины)
    * в результате CBROM ругается и подвиснет (это нормальная реакция на файл <NulFile>)
    * жмем Ctrl+Break
    * получаем нужный нам файл файл BIOS.ROM в текущей директории

2. В полученном архиве модифицировать с помощью HEX-редактора байты, находящиеся по следующим адресам:

а) сегмент и смещение (практически всегда равны 00h):
    байт #0Fh=00h
    байт #10h=00h
(если архив создавался с помощью LHA, то по этим байтам обычно расположено ВРЕМЯ последней модификации файла)

б) идентификаторы модуля:
    байт #11h=00h
    байт #12h=50h - идентификаторы основного образа;
ID остальных образов можно глянуть на форуме ROM.BY.

(если архив создавался с помощью LHA, то по этим байтам обычно расположена ДАТА последней модификации файла)

в) и желательно ExtendedArea1, 2, 3 (=20h{OSID},00h,00h)
(если архив создавался с помощью LHA, то там обычно (=4Dh{MS-DOS},00h,00h))

г) если не устраивает регистр букв в названии файла, то можно изменить его;
можно также полностью сменить название на другое такой же длины;

3. Пересчитать (проверить) контрольную сумму заголовка (байт #01h).
Сделать это можно вручную или с помощью программки LhaHeaderViewer, последнюю версию которой всегда можно найти на моей персональной странице

LhaHdr01.exe BIOS.ROM

Программа не изменяет контрольные суммы, она их только отображает!
Все изменения придется делать вручную с помощью HEX-редактора.

В появившейся таблице:
    Header CheckSum -- контрольная сумма, записанная в заголовке архива;
    Real Header CheckSum -- настоящая контрольная сумма заголовка (та, что на самом деле)
Надеюсь, понятно, что HeaderCheckSum должна совпадать с RealHeaderCheckSum !
Если это не так, то с помощью HEX-редактора заносим значение RealHeaderCheckSum по адресу байта (#01), соответствующего HeaderCheckSum.

4. Проверить полученный архив с помощью архиватора LHA:
    lha t BIOS.ROM <-- если выдаст ошибку, то проблемы с CRC или ChkSum
    lha -t BIOS.ROM <-- если выдаст ошибку, то проблемы с ChkSum

5. Далее подправленный архив BIOS.ROM (содержащий сжатый ORIGINAL.TMP) можно встраивать в файл образа БИОСа, как описано в статье apple_rom'a.
Правильность выполнения всех предыдущих этапов можно проверить, запустив, например:

CBrom207.exe <имя файла образа биос> /D

6. Если в биос встраивается модуль ORIGINAL.TMP, то в этом случае обязательно требуется рассчитать и подправить еще одну контрольную сумму.
(для остальных модулей этот пункт руководства не нужен)

Узнать эту сумму можно при помощи все той же утилиты:

LhaHdr01.exe BIOS.ROM

Интересующее нас значение будет находиться в последней строке под таблицей (Whole Archive CheckSum). Его то и нужно внести с помощью HEX-редактора в файл образа биос сразу за модулем, содержащим сжатый ORIGINAL.TMP.

7. Важно не забыть поправить CRC всего файла образа БИОС с помощью CBROM v.2.07. Для этого нужно какой-нибудь модуль удалить и вставить обратно. Например:
    CBrom207.exe <BiosFile> /ACPI extract
    (на запрос об имени файла ввести ACPITBL.BIN)
    CBrom207.exe <BiosFile> /ACPI release
    CBrom207.exe <BiosFile> /ACPI ACPITBL.BIN

Если в файле БИОСа достаточно свободного места, то можно действовать в обратном порядке: что-нибудь вставить, а затем удалить. Лично мне этот вариант больше нравится.


Благдарности:

Неоценимую помощь в создании этого минируководства оказала информация с DANGAN's Homepage.

Так же хочется поблагодарить участников форума ROM.BY за помощь, оказанную в изысканиях способа расчета контрольной суммы, упомянутой в пункте 6.
Вадим Карпов
2004 г.

---
Обсудить эту и другие статьи/записи с моей персональной страницы можно в соответствующей ветке конференции.
Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают