Исследование Бутблока

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



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

Если данная информация оказалась полезной/интересной - плюсаните, пожалуйста:

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

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые 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.

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

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