Автор: 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 -->





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

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

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

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



Особенностью Boot Block-а является отсутствие стека и как следствие невозможность использования команды Call. Поэтому существует такая конструкция:


mov sp, Смещение_на_АдресВозврата
jmp НужнаяПроцедура
dw АдресВозврата //Это не код! Это двойное слово (dw). А если хотите то offset
Код_По_АдресуВозврата



Адрес возврата может быть положен в регистр di, за которым следует jmp на процедуру, а в теле процедуры (при выходе) ставят jmp di.


Иногда при выходе из процедуры могут поставить jmp на конкретный адрес.




Чуть попозже добавлю Примеры скриптов для IDA Pro