Есть такое дело - нужно добавить/изменить код в BIOS - 2 Mbit, Гигабайтовский.
1) Редактируем основной код 128 Кб, который идет сначала прошивки, то есть распаковываем, меняем, пакуем, суем обратно. Проблема с CheckSum - она идет сразу после упакованного файла - один байт.
Вообще-то 1-й байт как мы поняли - это контрольная сумма кода 0..37FFD. Но уже со второго - непонятки. Второй байт равен первому + 11h. Что это за константа и откуда? Непонятно. Ну а остальные 2 байта - вообще мрак.
2) После обработки файла BIOS патчером - туда добавляются два файла - modul.tmp и start.tmp. Насколько я понял, первая команда start.tmp передает управление в modul.tmp. Я сравнивал два патченных файла с разным размером modul.tmp - меняется кроме самого modul.tmp только эти же самые байты - 37FFE...38001 и еще кусочек после них (пустого места видимо - там 00 00 FE забиваются FF FF FF)
Вопрос - как передается управление на start.tmp? Ведь нигде больше ничего не меняется, а адрес start.tmp меняется? И как встроить код в modul.tmp так, чтобы БИОС нормально работал?
axelf Дубль убил. Про то, что надо делать для обновления контрольной суммы, по крайней мере для АВАРДа написано не один раз - пользуйтесь поиском. А начать лучше со статьи про редактирование БИОС, котрая (сюрприз) живет на этом сайте в разделе "статьи"
За несоответствие действительности Вашим о ней представлениям администрация форума ответственности не несет.
Не надо убивать.
Вопрос был - как эти байты вычисляются, а не как их поправить. Мне нужен именно алгоритм вычисления и где искать все дополнительные контрольные суммы.
Опять же - про modul.tmp и start.tmp вопрос?
Читал статьи - и как редактировать BIOS и как контрольную сумму править. Не помогает.
Эти вопросы там не раскрыты.
ЗЫ: Вдогонку - в оригинальном файле контрольная сумма всего файла БИОС совпадает с 3-им байтом из этих четырех, а после BIOS патчера сумма всего файла = 0 и не совпадает с 3-им байтом (из 4-х - 37FFE..38001). Что за фигня?
Ау, помогите, спецы!
Отправить комментарий