Как сохранить, восстановить,
отредактировать MBR (Master Boot
Record), boot sector, нулевой, загрузочный сектор диска при помощи утилиты
debug.exe
1. Загрузить компьютер, с загрузочного DVD
диска, загрузочной дискеты или загрузочной флешки, ( см. как создать загрузочную
флешку / USB flash)
2. Запустить утилиту debug.exe.
Debug.exe присутствует в любой DOS,
Windows но она чувствительна к версии, т.е. если переписать на
загрузочный диск Win98 debug.exe
из XP она не запустится. ( см.
Загрузочная флэшка ).
3. Загрузить компьютер запустить debug.exe.
Теперь вводим короткую программу.
A100 <Enter> |
int13<Enter>
|
jmp100<Enter><Enter>
|
u100 102<Enter> |
r<Enter> |
|
|
Пояснения:
a, u, r - команды утилиты
debug |
? - выводит полный список команд. |
a - позволяет вводить программу с
адреса |
u - показывает программу |
r - показывает регистры процессора |
AX,BX,CX,DX,SP,BP,SI,DI это
регистры процессора. |
DS,ES,SS,CS - сегментные регистры
значения в них будут отличаться от тех что на картинке, но они будут одинаковые. |
IP(Instruction Pointer) регистр
команд, указывает на адрес XXXX:0100, куда мы ввели
команду INT13.
|
INT 13 команда
процессора, вызывает подпрограмму
BIOS для работы с дисками. Параметры передаются через
регистры. |
Команда JMP100 возвращает указатель
команд на адрес 100 Если запустить такой код на выполнение командой
G компьютер зависнет в бесконечном цикле, но
т.к. мы собираемся выполнять нашу программу в пошаговом режиме, команда
безусловного перехода избавит нас от необходимости изменять значение в регистре
IP после каждого вызова int13 |
Итак освоим чтение загрузочного сектора.
Master Boot Record
Вводим команды
rax<Enter> |
201<Enter> |
rbx<Enter> |
200<Enter> |
rcx<Enter> |
1<Enter> |
rdx<Enter> |
80<Enter> |
r<Enter>
|
|
|
нетрудно догадаться, что команда r<имя
регистра> позволяет менять значение в регистре
процессора.
Для вызова int13
смысл этих значений такой: |
AX=02
|
старший байт код операции 02=чтение
( 03=запись ) |
01 |
младший байт количество секторов которое надо прочитать |
BX=0200 |
адрес памяти куда считывать сектор |
CX=0001 |
младшие биты задают номер сектора. Сектора
нумеруются с 1 |
DX=00 |
старший байт номер головки, головки
нумеруются с нуля |
80 |
младший байт номер диска 01 для
флоповода, 80,81
для жестких дисков и USB flash дисков, которые
BIOS видит как жесткий диск. |
Теперь вводим
команда p выполняет один шаг программы. Первый раз
вызывает INT13,
второй возвращает IP на адрес 100. |
|
после вызова INT13 важно
проконтролировать последние две буквы регистра флагов CY-означает
ошибку, при успешном выполнении должно быть NC. (На
картинке CY, т.к. из под Windows
нельзя прочитать MBR, а из под DOS
нельзя создать скриншот)
Итак мы прочитали нулевой
сектор в память по адресу 200.
Чтобы сохранить его в файл вводим
n <файл><Enter> |
rbx<Enter> |
0<Enter> |
rcx<Enter> |
200<Enter> |
r<Enter> |
w200<Enter> |
|
|
Команда n<filename>
задает имя файла. Команда w<address>
записывает в файл данные из памяти по адресу. Количество байт
задается сразу в двух регистрах BX:CX.
Чтобы загрузить файл в память используем команду
L<address>. В регистре CX ,будет
количество прочитанных байт. Чтобы просмотреть память по адресу (в нашем случае,
там содержимое нулевого сектора) команда
d<address>
n <файл><Enter> |
L200<Enter> |
r<Enter> |
d200x<Enter> |
d<Enter> |
|
|
Рассмотрим варианты редактирования данных перед записью их
обратно на диск.
f200 3bd 00 обнуляет загрузочную
программу но оставляет информацию о разделах диска нетронутой.
Команда e<address>
позволяет редактировать память.
Чтобы записать данные из памяти на диск вводим.
rax<Enter> |
301<Enter> |
rbx<Enter> |
200<Enter> |
rcx<Enter> |
1<Enter> |
rdx<Enter> |
80<Enter> |
r<Enter>
|
p<Enter>
|
Надо перезагрузить
|
Программы
|
Remote Control - Программа для удаленного
доступа к компьютеру.
ImageConverter - Программа для уменьшения фотографий.
AutoShutdown - Программа для автоматического выключения компьютера.
Work time counter - Простая программа для учета рабочего времени.
ClearFolders - Программа для массового удаления файлов.
SynchronizeFolders - Программа для синхронизации каталогов.
DiskSector - Утилита позволяет осуществлять чтение / запись секторов диска в
/ из файла.
ROPTest - Программа изображает все 256 вариантов флагов Ternary Raster
Operations Codes, помогает определить необходимый код растровой операции.
HEX Dump ActiveX позволяет просматривать и редактировать данные в
шестнадцатеричном HEX формате.
15 slide puzzle - 15 slide puzzle game.
BOOTSAVER - Позволяет скопировать загрузочный сектор жесткого диска в файл,
восстановить загрузочный сектор из файла, восстановить загрузочную программу
IPL1, не меняя таблицу разделов диска.
Генератор кроссвордов. Описание алгоритм
компьютерного составления кроссвордов.
Симулятор
80196.
Программный симулятор микроконтроллера Intel 80196KR. Имеет встроенный
компилятор ассемблера, текстовый редактор, справочную систему. Может создавать
HEX файлы.
Ассемблер.
Оригинальный компилятор ассемблера х86.
DISKEDIT
Программа позволяет просматривать и редактировать сектора дисков. Работает
через прерывание INT13.
|
Программирование
|
WPF, XPS, NET. Как установить шрифт из
памяти
Нейронные сети. Пример программы и исходный код
С++.
Deflate. Подробное описание алгоритма
декодирование формата Дефлет. Прмер декодирования с пояснениями.
Программирование драйверов для Windows.
Общие вопросы программирования драйверов. Какими средствами пользоваться, где
скачать DDK.
Программирование RS232
в Windows.
СComBase класс для программирования COM порта.
Программирование потоков в Windows.
Класс CBaseThread позволяет организовать несколько рабочих потоков.
Динамический Recordset
CDynamicRecordSet - класс модернизирует CRecordSet для более удобной работы с
БД из MFC приложений.
Как сохранить, восстановить, отредактировать MBR (Master Boot Record), boot
sector, нулевой, загрузочный сектор диска при помощи утилиты debug.exe
|