Используя великий и могучий 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'а в вашем конкретном случае.
Для начала следует распечатать Руководство Pinchakko (в переводе Семена Сатановского), затем долго-долго листать его до начала понимания. Куча даташитов + куча книжек (некоторые упоминаются в ветке rom.by/forum/Толковые_книги_по_Асму_Си_Экзелю).
P.S. Была задумка начать статью в Вики по типовым процедурам, встречаемым в коде БИОС, но (так как сам чайник в этом), страшновато подавать на суд комментарии непрофесионала.
С другой стороны главное начать, а профессионалы потом поправят...
-=Кто сказал что бесполезно биться головой об стену...=- (НП)
Пх’нглуи мглв’нафх Ктулху Р’льех вгах’нагл фхтагн
Хочешь сделать хорошо - сделай это сам
maco, спасибо за ссылку для общего понимания, но мой случай (как и наверное весь Интел) частный. Подстрока -lh встречается 1раз ито в бутблоке. Максимум чего удалось добиться - просто открыть в amibcp76. при входе в некоторые пункты программа вываливалась. Ничего не изменить, не записать.
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'ами, то могу посоветовать только не торопясь анализировать код вручную от точки входа. Долго, но зато надежно.
256K - это очень мало, и как туда только все современные навороты вместились, может это старый БИОС?
А в NVRAM уже давно пишутся все переменные и события.
Цитата:
Прикол с iFlash получился, когда на предложение слить биос в файл он задумчиво так сказал «сия шелезка не могёт быть прочитана из принципиальных соображений»… Ну что сказать, буржуины, читай выше.
В том числе и наш брат принимает участие в написании сего чуда.
Если я правильно понял, то это АМИ БИОС, сделанный под Интел?
Мать BI440ZX.
Скорее AMI, адаптированный Intel'ом под себя.
хорошо, что клокер может 100МХз выдать. Может туалатин даже на родной частоте работать станет.
Блок питания должен тоже потянуть.
ЗЫ и еще общий вопрос: с какого момента БИОС знает о стеке ?
Отправить комментарий