Дизассемблирование BIOS...

Используя великий и могучий IDAPro5. + скрипты:)

Начну эту тему (кстати по просьбе уважаемого Романа), для всех тех кому интересно раскопать, как работает БИОС.

Дано: человек имеет опыт обращения c IDA Pro.

Решение №1: Award Bios script by
Alexey Kulentsov (old.idapalace.net/idc/award450.rar)

!!! не путать с award450.idc входящим в состав idapro5!!! который более старый - 1996 г.вып.

Решение №2 (pre-alpha, моё): rapidshare.com/files/28170560/ami.idc.html

Комментарии, советы и предложения в студию.

PS скрипты разрабатывались под 64K BIOS.:)

Вот стою я перед интеловской мамкой и думаю с чего бы мне начать ?
По-моему лучше описать структуру биоса как такового. Как распознавать куски кода, отвечающие за то или иное действие и т.д.

Прохожий  Для начала: Редактируем Award Modular BIOS v6.00PG  Поскольку у вас скорее всего AMI ("перед интеловской мамкой"), то вышеприведенная ссылка может пригодиться для общего понимания. Хотя модульность BIOS'а на сегодняшний день - явление повсеместное, существуют утилиты и для AMI (на титульной странице wiki). Уточните, что нужно от BIOS'а в вашем конкретном случае.

Аватар пользователя Santa

Для начала следует распечатать Руководство Pinchakko (в переводе Семена Сатановского), затем долго-долго листать его до начала понимания. Куча даташитов + куча книжек (некоторые упоминаются в ветке rom.by/forum/Толковые_книги_по_Асму_Си_Экзелю).


P.S. Была задумка начать статью в Вики по типовым процедурам, встречаемым в коде БИОС, но (так как сам чайник в этом), страшновато подавать на суд комментарии непрофесионала.
С другой стороны главное начать, а профессионалы потом поправят...

-=Кто сказал что бесполезно биться головой об стену...=- (НП)
Пх’нглуи мглв’нафх Ктулху Р’льех вгах’нагл фхтагн
Хочешь сделать хорошо - сделай это сам

maco, спасибо за ссылку для общего понимания, но мой случай (как и наверное весь Интел) частный. Подстрока -lh встречается 1раз ито в бутблоке. Максимум чего удалось добиться - просто открыть в amibcp76. при входе в некоторые пункты программа вываливалась. Ничего не изменить, не записать.
Santa, тоже спасибо. Уже листал. Задумку хорошо бы было реализовать.

Основная цель - объяснить мамке о туалатине ...

Прохожий

Цитата:
Подстрока -lh встречается 1раз ито в бутблоке

Так у вас же AMI;).
Цитата:
Максимум чего удалось добиться - просто открыть в amibcp76. при входе в некоторые пункты программа вываливалась. Ничего не изменить, не записать.

А вот об этом поподробнее. Что пытались открыть: слитый дамп или склеенную прошивку? Если дамп - очень хотелось бы на него поглядеть. Если склеенная прошивка - каким способом склеивали?
Цитата:
Основная цель - объяснить мамке о туалатине

А мать физически готова с ним работать?

maco начнем с физики: сначало было слово ! А мать подготовится в нужный момент. Смысл курочить рабочую лошадку до часа Х ?

"Так у вас же AMI" А вот об этом поподробнее :)

БИОС сливал рунифлешем (спасибо Роману). Сначала тот не опознавал чип (писал FF & FF) и сливал только верхние 128к из 256и. Пришлось разобрать и заглянуть внутрь. Там мирно поблёскивала припоем запаяная флешка 28F200 T-серии. Почитал интеловские даташиты и слил форсом как 28F002. Сверил с родной нарезкой - песТня. Стало ясно как из набора файликов лепится нечто целое и почему задаются вопросы  типа "а как собрать это в кучу ?". Ответ очень простой - нефиг лазить там, где на надо (читай «бабки вкладывал я, значит никто меня не должен поиметь» © Intel).
Но это не про нас:). Самый правильный путь переделки такого чуда – сначала закатать родным прошивальщиком iFlash, а потом слить тем же рунифлешем. Почему так? Потому, что в чипе есть две 8к области названные “parameter block” в которые БИОС сам может что-то писать (О чем чесно говорит в одном из менюшек). Соответственно эти области после переделки должны остаться нетронутыми, а не с кучей 00h или FFh как пишут некоторые авторы.
Прикол с iFlash получился, когда на предложение слить биос в файл он задумчиво так сказал «сия шелезка не могёт быть прочитана из принципиальных соображений»… Ну что сказать, буржуины, читай выше.
Теперь об amibcp76.
В edit BIOS modules пишет nvram 8k, bootblock 24k (!? Почему не 16 как в родной нарезке у файла .BB0, непонятно).
“Ничего не изменить, не записать” – считать недействительным. Сегодня всё получилось. Почти всё.


Видит кучу модулей в Edit BIOS modules. Большинство в колонке destination adress имеют dynamic, остальные – конкретные адреса (типа 00 POST F000:0000 или 03 DIM E000:B180). Большую часть из модулей править не даёт.
В edit PCI IRQ routing table часть полей серым цветом и не редактируется.
При попытке зайти в меню advanced CMOS serup зависает на отображении строки processor speed (она же первая и единственная).
В менюшках chipset setup, Power management setup PCI/PnP setup, periferal setup все значения в колонке Active стоят No, что вполне вяжется с аскетическим видом настроек в БИОСе.
Меню configure setup client item пустое (может это нормально ?).
в меню periferal setup в строках Serial port duplex и Serial port Xmiter polarity в колонке Failsafe стоят какие-то кракозябы типа:). Остальные поля вполне осмысленные.
При попытке generate report – долгое раздумье и тихий выход ессно без создания файла отчета.
Пункт save BIOS to disk file. Перед этим делаем одно единственное изменение, например в меню periferal setup ставим floppy controler – yes. И сохраняем. Преувеличить результат работы amibcp76 сложно. Поменяно всё, что можно в диапазоне 06640 – 37CB0. Beyond compare показывает как простое смещение кусков кода, так и вставку каких-то новых. Увеличение кода произошло на ~20кБ.
Страшновато шить такое дело в запаяную флешку… Поэтому и интересует, как его можно ручками почикать.
Вот такие дела.

Всё вышесказанное – исключительное ИМХО не претендующее на истину в последней инстанции, ибо область сия для меня тера инкогнита. Но как написано в известной статье «мы хотим и ничего не боимся» :) Как бы только пару часиков суткам добавить ?...

Цитата:
сначало было слово

Может достаточно будет сначала переделать мать для физической совместимости. Т.е. сначала устранить явные/известные препятствия, а потом разбираться с возможными?
Цитата:
БИОС сливал

Можете куда-нибудь выложить?
Цитата:
В edit BIOS modules пишет nvram 8k, bootblock 24k

Я собирал из Intel'овского набора, пишет nvram 16k, bootblock 16k, все модули поизвлекал, вставлять не пробовал, отчет не генерирует, из advanced CMOS setup вываливается.
Цитата:
Страшновато шить такое дело в запаяную флешку

С корпусом TSOP в домашних условиях воевать трудно;). А незадействованной разводки под DIP/PLCC нет?
Если уж хочется ручками воевать с asm'ом и datasheet'ами, то могу посоветовать только не торопясь анализировать код вручную от точки входа. Долго, но зато надежно.

256K - это очень мало, и как туда только все современные навороты вместились, может это старый БИОС?

А в NVRAM уже давно пишутся все переменные и события.



Цитата:

Прикол с iFlash получился, когда на предложение слить биос в файл он задумчиво так сказал «сия шелезка не могёт быть прочитана из принципиальных соображений»… Ну что сказать, буржуины, читай выше.



В том числе и наш брат принимает участие в написании сего чуда. 

Если я правильно понял, то это АМИ БИОС, сделанный под Интел?

Цитата:
256K - это очень мало, и как туда только все современные навороты вместились, может это старый БИОС?

Мать BI440ZX.
Цитата:
Если я правильно понял, то это АМИ БИОС, сделанный под Интел?

Скорее AMI, адаптированный Intel'ом под себя;).

maco
Может достаточно будет сначала переделать мать для физической совместимости. Т.е. сначала устранить явные/известные препятствия, а потом разбираться с возможными?
недостаточно. на старых ревизиях не все родные процы запускались, а тут вообще "послезавтрашний" день :)
хорошо, что клокер может 100МХз выдать. Может туалатин даже на родной частоте работать станет.
Блок питания должен тоже потянуть.

ТоварищЪ
256K - это очень мало
там еще свободное место есть :)

ЗЫ и еще общий вопрос: с какого момента БИОС знает о стеке ?

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей