Используя великий и могучий IDAPro5. + скрипты :)
Начну эту тему (кстати по просьбе уважаемого Романа), для всех тех кому интересно раскопать, как работает БИОС.
Дано: человек имеет опыт обращения c IDA Pro.
Решение №1: Award Bios script by
Alexey Kulentsov (http://old.idapalace.net/idc/award450.rar)
!!! не путать с award450.idc входящим в состав idapro5!!! который более старый - 1996 г.вып.
Решение №2 (pre-alpha, моё): http://rapidshare.com/files/28170560/ami.idc.html
Комментарии, советы и предложения в студию.
PS скрипты разрабатывались под 64K BIOS. :)
По-моему лучше описать структуру биоса как такового. Как распознавать куски кода, отвечающие за то или иное действие и т.д.
Для начала: Редактируем Award Modular BIOS v6.00PG
Поскольку у вас скорее всего AMI ("перед интеловской мамкой"), то вышеприведенная ссылка может пригодиться для общего понимания. Хотя модульность BIOS'а на сегодняшний день - явление повсеместное, существуют утилиты и для AMI (на титульной странице wiki).
Уточните, что нужно от BIOS'а в вашем конкретном случае.
P.S. Была задумка начать статью в Вики по типовым процедурам, встречаемым в коде БИОС, но (так как сам чайник в этом), страшновато подавать на суд комментарии непрофесионала.
С другой стороны главное начать, а профессионалы потом поправят...
Santa, тоже спасибо. Уже листал. Задумку хорошо бы было реализовать.
Основная цель - объяснить мамке о туалатине ...
Так у вас же AMI ;).
А вот об этом поподробнее. Что пытались открыть: слитый дамп или склеенную прошивку? Если дамп - очень хотелось бы на него поглядеть. Если склеенная прошивка - каким способом склеивали?
А мать физически готова с ним работать?
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кБ.
Страшновато шить такое дело в запаяную флешку… Поэтому и интересует, как его можно ручками почикать.
Вот такие дела.
Всё вышесказанное – исключительное ИМХО не претендующее на истину в последней инстанции, ибо область сия для меня тера инкогнита. Но как написано в известной статье «мы хотим и ничего не боимся» :-) Как бы только пару часиков суткам добавить ?...
Может достаточно будет сначала переделать мать для физической совместимости. Т.е. сначала устранить явные/известные препятствия, а потом разбираться с возможными?
Можете куда-нибудь выложить?
Я собирал из Intel'овского набора, пишет nvram 16k, bootblock 16k, все модули поизвлекал, вставлять не пробовал, отчет не генерирует, из advanced CMOS setup вываливается.
С корпусом TSOP в домашних условиях воевать трудно ;). А незадействованной разводки под DIP/PLCC нет?
Если уж хочется ручками воевать с asm'ом и datasheet'ами, то могу посоветовать только не торопясь анализировать код вручную от точки входа. Долго, но зато надежно.
А в NVRAM уже давно пишутся все переменные и события.
Цитата:
Прикол с iFlash получился, когда на предложение слить биос в файл он задумчиво так сказал «сия шелезка не могёт быть прочитана из принципиальных соображений»… Ну что сказать, буржуины, читай выше.
В том числе и наш брат принимает участие в написании сего чуда.
Если я правильно понял, то это АМИ БИОС, сделанный под Интел?
Мать BI440ZX.
Скорее AMI, адаптированный Intel'ом под себя ;).[/off]
недостаточно. на старых ревизиях не все родные процы запускались, а тут вообще "послезавтрашний" день :-)
хорошо, что клокер может 100МХз выдать. Может туалатин даже на родной частоте работать станет.
Блок питания должен тоже потянуть.
там еще свободное место есть :-)
ЗЫ и еще общий вопрос: с какого момента БИОС знает о стеке ?