Замена изображений интерфейса Asus BIOS
О рисках
Любая модификация делается на свой страх и риск. Прошивка модифицированного BIOS может привести к неработоспособности материнской платы. Автор не несет ответственности за возможные последствия.
Используемые инструменты
- UEFITool 0.28
- Python 3.10
- Hex Workshop
- Скрипт Python UefiImageExt: 1 или 2
GIF-изображения
реклама
Часть изображений ниже представлена в GIF-формате. Если непонятен очередной шаг, следует кликнуть на сопроводительную гифку – запустится анимация.
Извлечение изображений
Все изображения, используемые для отрисовки интерфейса BIOS, хранятся в запакованном виде. Для их распаковки необходимо:
- Открыть BIOS с помощью UEFITool.
- Извлечь модуль с изображениями: *Ctrl+F* → GUID=CC5840D2-D8EA-459E-BAF4-349AC710EBBE → EE4E5898-3914-4259-9D6E-DC7BD79403CF → Extract Body…
- Распаковать модуль с помощью скрипта:
реклама
На выходе скрипт создает две папки с идентичным содержимым. В них расположены все изображения из интерфейса BIOS. Любое из них заменяемо.
Для примера можно заменить оригинальные фоны BIOS на фоны от Asus Z370-Z690.
В Z170 фоны представлены в виде пережатых JPEG:
реклама
А в Z370-Z690 фоны представлены в виде качественных PNG:
Подготовка изображений под замену
Изображения JPEG и PNG в рассматриваемом модуле взаимозаменяемы. Заменять изображение необходимо на изображение с идентичным разрешением.
реклама
В случае JPEG имеют значение настройки сжатия. Совместимый JPEG можно получить сохранением через Paint.
Необходимо следить и за размером изображений. Новые изображения не должны сильно превышать оригинальные. Небольшое превышение размеров тем не менее допустимо. Увеличение размера исходного модуля с 870KB до 937KB проблем не вызывает.
Расположение изображений в модуле
После выбора изображений под замену необходимо определить адрес (офсет) заменяемых изображений в исходном модуле. Эта информация содержится в имени распакованных изображений:
Так первый фон расположен по офсету 0x44, а второй фон – по офсету 0x73820.
Здесь следует рассмотреть структуру упакованного модуля:
Первые 32 байта – заголовок модуля. Он встречается лишь один раз в начале файла.
Следующие 32 байта содержат информацию о следующем за ними изображения. Эти 32 байта – заголовок изображения. Количество заголовков равно количеству изображений в модуле.
Наконец после заголовка изображения следует непосредственно само изображение. Размер изображений плавающий.
Офсеты, определенные скриптом, указывают непосредственно на начало самого изображения.
Замена изображений в модуле
Заменять изображения следует с большего офсета. Если заменять с меньшего, то следующие за ним изображения сдвинутся. Т.е. сначала следует заменить второй фон, а затем – первый.
Замена изображений проводится в HEX-редакторе следующим образом:
- Модуль с упакованными изображениями открывается в HEX-редакторе. Для удобства количество столбцов HEX-редактора урезается до 16 (столбцы от 0 до F):
- В модуле делается переход по офсету оригинального изображения: *Ctrl+G* → 'offset' → Hex → Beginning of File → Go
- Делается переход назад от текущей позиции по офсету 0x20: *Ctrl+G* → 20 → Current Position → Go → *Shift+F5*
Визуально это ровно на две строки выше начала изображения, куда делается переход в пункте [2].
По этому адресу указан размер изображения справа-налево: - После определения размера изображения повторяется переход в начало оригинального изображения – пункт [2].
- Делается переход вперед от текущей позиции по размеру изображения: *Ctrl+G* → 'size' → Current Position → Go
Так осуществляется переход в конец изображения:
Между концом изображения и размером следующего за ним может быть несколько байтов нулей от 1 до 3 (от двух нулей до шести). Они дополняют размер изображения до кратного четырем. - Все байты от конца изображения до его начала выделяются и удаляются. Удаляются и дополняющие нули при их наличии.
- Новое изображение открывается в HEX-редакторе. Для удобства количество столбцов HEX-редактора урезается до 16 (столбцы от 0 до F).
- После перехода в конец файла определяется размер изображения:
Определяется число нулей, необходимых для дополнения размера до кратного четырем байтам.
Для первого фона, например, дописывается три байта нулей: - Размер нового изображения вписывается в модуль вместо старого:
- Все байты нового изображения копируются и вставляются в модуль по офсету старого:
Проверить правильность вставки можно переходом по размеру изображения из его начала в конец. - По необходимости вставляются дополняющие нули.
- Пункты [2]-[11] повторяются по числу заменяемых изображений.
- Отредактированный модуль сохраняется через Hex-редактор: File → Save As...
Замена модуля
Остается только заменить оригинальный модуль отредактированным через UEFITool и сохранить получившийся BIOS: *Ctrl+F* → GUID=CC5840D2-D8EA-459E-BAF4-349AC710EBBE → EE4E5898-3914-4259-9D6E-DC7BD79403CF → Replace Body… → *Ctrl+S
Результат
После прошивки модифицированного BIOS можно увидеть изменение фонов:
Те же разделы с фонами по умолчанию:
Возможные ошибки
В случае использования изображения неправильного формата оно не будет отрисовываться в BIOS:
В случае неправильного добавления дополняющих нулей заменяемое изображение и все следующие за ним не будут отрисовываться в BIOS.
Благодарность
Информация о модификации взята на форуме Win-Raid.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила