Автор: wiki.rom.by , 12 февраля 2008
Содержимое данного поля является приватным и не предназначено для показа.

BBCode

  • HTML-теги не обрабатываются и показываются как обычный текст
  • You may use the following BBCode tags:
    • [align]
    • [b]
    • [code]
    • [color]
    • [font]
    • [hr]
    • [i]
    • [img]
    • [list]
    • [quote]
    • [s]
    • [size]
    • [spoiler]
    • [sub]
    • [sup]
    • [table]
    • [u]
    • [url]
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.

Материал из Wiki.


<!-- start content -->

Априори вся прошивка распотрошена на модули любым известным и неизвестным способом, Пиччакка хотя бы просмотрен. Исследования проводятся в IDA Pro любой версии.




Для начала исследования кода БИОС необходимо расположить исследуемые модули по соответствующим адресам, иначе это получится не исследование, а полный пшик и Вы застрянете в начале пути не увидев для себя ничего интересного.


Boot Block. Он (бедолага) будет у нас один одинешенек. К нему уже ничего не пристыкуешь.

Имеет размер восемь килобайт. При загрузке в Иду задаем сегмент (Loading segment) F000h и смещение E000h. Жмем ОК и выбираем 16-разрядный режим. Ждем окончания загрузки.

Имеем на первое время загруженный бинарный файл без следа дизассемблирования - именно его Вам сейчас и предстоит совершить.

Помним, что точка входа в БИОС F000:FFF0h - это область БутБлока. Идем вниз до смещения FFF0h и видим первую инструкцию, исполняемую процессором, что-то типа EA 5B E0 00 F0. Жмем "С" - получаем jmp far ptr F000:EA5Bh. Понеслась...



Подробнее в заметке Исследование Бутблока.


Original.bin, или, собственно, главный модуль.

Для начала (по крайней мере так делаю я) режем Original.bin на две половинки по 65 килобайт любым Hex редактором, так как нам нужны два сегмента, а резать в Иде я не умею :-(.

Берем для начала первую половинку. Грузим в Иду с сегмента E000h и смещением 0000h. Потом идем File->Load File->Additional Binary File..., выбираем вторую половинку, задаем сегмент F000h и смещение 0000h. Готово. Имеем два сегмента. Помним что точка входа в Original.bin F000:F80Dh. Там нас ждет инструкция E9 куда-то-там.


awardext.rom. Для начала переименуем его в awardext.bin, иначе некоторые инструкции х86 ,будут некорректно обрабатываться Идой. Пристыковаваем его к нашему Original.bin (как Additional Binary File...) с сегментом 1000h и смещением 0000h.



Без пристыкованного awardext.rom цепочки межсегментных вызовов будут оборваны и можно потеряться на середине исследуемого участка.


ВСЕ! Прошивка практически полностью загружена в дизассемблер, исследуйте на здоровье. Подробнее в заметке Исследование Original.bin.


Чуть попозже можно будет осветить некоторые моменты как то: начальное отсутствие стека, Межсегментные переходы и др.