Где хранится загрузчик windows 7

Как использовать OAuth2 со Spring Security в Java

Javaican 14.05.2025

Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .

Анализ текста на Python с NLTK и Spacy

AI_Generated 14.05.2025

NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .

Реализация DI в PHP

Jason-Webb 13.05.2025

Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .

Обработка изображений в реальном времени на C# с OpenCV

stackOverflow 13.05.2025

Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .

POCO, ACE, Loki и другие продвинутые C++ библиотеки

NullReferenced 13.05.2025

В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .

Паттерны проектирования GoF на C#

UnmanagedCoder 13.05.2025

Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .

Создаем CLI приложение на Python с Prompt Toolkit

py-thonny 13.05.2025

Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .

Конвейеры ETL с Apache Airflow и Python

AI_Generated 13.05.2025

ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .

Выполнение асинхронных задач в Python с asyncio

py-thonny 12.05.2025

Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .

Работа с gRPC сервисами на C#

UnmanagedCoder 12.05.2025

gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .

Привет друзья! В сегодняшней статье мы с вами создадим заново загрузчик Windows 7. В каких случаях это может пригодится. К примеру у вас не загружается Windows 7 и выдаёт ошибки, связанные с неисправностью загрузчика, например: «An operating system was not found» (Операционная система не найдена), BOOTMGR is missing. Press ctrl+alt+del, NTLDR is missing при загрузке Windows 7. А может вы перенесли Windows 7 с жёсткого диска на твердотельный накопитель, но система не стартует с SSD и выводит ошибку или показывает чёрный экран. Вы пытаетесь восстановить загрузку операционной системы стандартными командами, но у вас это не получается. В таких случаях нужно удалить и затем создать заново скрытый раздел — System Reserved (Зарезервировано системой, объём 100 МБ), именно на этом разделе находятся файлы загрузки Windows 7.

Создание загрузчика Windows 7 заново

{banner_google1}

Автор — Владимир.

При установке Windows 7 на ноутбук или компьютер с обычным BIOS (жёсткий диск MBR), автоматически создаётся скрытый раздел System Reserved (Зарезервировано системой, объём 100 МБ), назначение которого — хранить и защищать файлы загрузки операционной системы. Данный раздел всегда имеет атрибуты: (Активен, Система, Основной раздел), и с него происходит запуск операционной системы, установленной на вашем компьютере.

Если данному разделу присвоить букву диска и в параметрах папок (вид) установить параметры «Показывать скрытые файлы» и снять галочку с параметра «Скрывать защищённые системные файлы», то внутри вы увидите папку «Boot» (содержащую хранилище конфигурации загрузки файл — BCD), и менеджер загрузки файл «bootmgr».

Для успеха нашего дела, вспомним механизм загрузки Windows 7 и поможет нам программа BOOTICE. В первую очередь, после включения компьютера, управление получает подпрограмма BIOS, которая производит проверку на работоспособность всех комплектующих системного блока, затем БИОС смотрит в своих настройках приоритетное для загрузки устройство (жёсткий диск, флешка, DVD-диск) и найдя такое (к примеру жёсткий диск) считывает с него загрузочную запись MBR (Windows 7 обычно устанавливается на диск разметки MBR)MBR располагается в первом секторе загрузочного диска, имеет размер 512 байт, и содержит в себе программный код NT 6.x,

который выполняет поиск активного раздела (Active), с которого может осуществляться загрузка операционной системы, данный активный раздел называется PBR (Partition Boot Record) и имеет свою загрузочную запись Bootmgr.

После этого управление переходит менеджеру загрузки файлу «bootmgr», который запускает файл winload.exe Windows 7. Что такое winload.exe? Операционная система (в нашем случае Windows 7) это программа и чтобы она заработала (стала загружаться) необходимо запустить исполняемый файл OS: winload.exe или winload.efi. Запускает эти файлы загрузчик. Загрузчик это маленькая программа. Файл winload.exe запускает MBR-загрузчик, а файл winload.efi запускает EFI-загрузчик. Windows 7 в большинстве случаев установлена на диск с MBR загрузчиком.

{banner_google1}

Загрузка Windows 7 происходит в такой последовательности, менеджер загрузки файл «bootmgr» обрабатывает имеющуюся информацию в хранилище загрузки (файле BCD), а это — меню, время отображения, список операционных систем (если их несколько) и так далее, еcли данные корректные, то следует загрузка операционной системы. Но! Если хоть один из упомянутых мной файлов (bootmgr или BCD) окажется некорректным или вовсе будет отсутствовать, то проблемы при загрузке системы нам обеспечены. Часто бывает, что целостность данных файлов бывает нарушена в силу каких-либо причин (неосторожные действия пользователя, установка менеджеров загрузки сторонних разработчиков, вирусы и т.д), в этом случае стандартные действия по восстановлению загрузчика могут не помочь и тогда лучше всего удалить этот раздел полностью, затем форматировать и создать файлы загрузки заново. Как это можно сделать.

Удаляем скрытый раздел System Reserved (Зарезервировано системой, объём 100 МБ) и создаём его заново с помощью встроенной в систему утилиты командной строки diskpart

Загружаемся с установочной флешки Windows 7. Если не найдёте ISO-образ семёрки, то можете использовать загр. флешку Windows 8.1 или Win 10.

В начальном окне установки системы открываем командную строку клавиатурным сочетанием Shift+F10.

Вводим последовательно команды:

diskpart 

lis vol (эта команда отображает буквы, номера, метки, размер и файловую систему. Буква раздела 100 мб (С:). Том 1. Буква раздела с установленной Windows 7 — (D:).

sel vol 1 (выбор тома с которым будем работать — 100 мб (С:). Том 1)

del vol (удаляем том 100 мб).

после удаления тома на диске появилась неразмеченная область 100 мб.

creat par prim (создаём основной раздел в этой неразмеченной области)

format fs=ntfs (создаём на разделе файловую систему NTFS)

assign letter С (присваиваем созданному разделу букву С)

activ (делаем раздел активным)

exit (выходим из diskpart)

bootsect /nt60 C: /mbr (данная команда записывает на жёсткий диск нужные коды PBR (Bootmgr) и MBR (NT 6.x))

bcdboot D:\windows /s C: (создаём загрузчик для Windows 7, находящийся на (D:), расположение загрузчика (С:))

Файлы загрузки успешно созданы.

Все загрузочные файлы Windows 7 находятся в папке Boot, которая, как правило, расположена на диске С:. Однако, папка надежно спрятана, чтобы наши шаловливые ручки до нее не дотянулись. Не удивительно, от содержимого папки зависит, загрузится ли Windows или нет.

Однако бывают ситуации, когда изменить метод загрузки Windows 7 очень хочется. Например, при работе с драйверами без цифровой подписи может понадобится такая программа, как ReadyDriverPlus. Для работы этой программе нужно указать путь к папке C:\Boot. Вы заходите на диск C: и…в упор эту папку не наблюдаете. Ее там нет, просто шаром покати. И как же ее найти?

Есть два простых варианта, рассматриваемых далее.

Отображение скрытых папок и файлов

Данный рецепт прекрасно известен многим пользователям Windows 7, ну да будет не лишним напомнить про него еще раз. По умолчанию в Windows 7 системные файлы и папки спрятаны – оно и понятно, ну кому нужно, чтобы какой-то чайник залез куда не надо и испортил все что мог? Впрочем, файлы и папки спрятаны совсем недалеко.

  1. Для начала выберите команду Пуск > Компьютер и перейдите в открывшемся окне на диск C:.
  2. Теперь необходимо нажать клавишу <Alt>, чтобы появилось верхняя панель меню. В этой панели выберите команду Сервис > Параметры папок. Откроется окно Параметры папок, в котором перейдите на вкладку Вид.
  3. В этой вкладке нужно сделать два дела:
  • снять флажок Скрывать защищенные системные файлы;
  • выбрать переключатель Показывать скрытые файлы, папки и диски.

скрытые папки и файлы

Вот теперь не осталось у Windows ни одной папки или файла, скрытого от ваших глаз. Зайдите на диск С:. Теперь в нем появилась куча скрытых папок, с которыми лучше не баловаться!

Отображение скрытого раздела

Ну хорошо, я вижу все скрытые папки, но папки Boot по прежнему нет? Где моя папка Boot, сволочи, отдайте мои загрузочные файлы!

Спокойно – сейчас найдем. Раз ее нет в скрытых папках, значит она прячется…в скрытом разделе Windows 7. Злобные чебуреки из Microsoft спрятали от нас этот раздел, но мы сейчас это исправим. Размер раздела всего 100 Мбайт, и найти его можно следующим образом.

Нажмите комбинацию клавиш <Win +R> и введите в открывшемся окне команду diskmgmt.msc. Откроется окно Управление дисками. В этом окне нам нужен скрытый раздел (подписанный как “Зарезервировано системой”). А вот и он, смотрим картинку.

управление дисками

Этот раздел прячется и его не видно. Чтобы вывести его на божий свет, щелкните на разделе правой кнопкой и выберите команду Изменить букву диска или путь к диску.

изменить букву диска или путь к диску

Откроется новое окно, в котором щелкните на кнопке Добавить и выберите свободную букву диска, вроде Y: или любой другой.

добавление буквы диска

Теперь проверяем: выберите команду Пуск > Компьютер, вот и он – наш ранее скрытый раздел.

win013

Заходим в него и что я вижу? Та самая папочка Boot, в которой и находятся загрузочные файлы для Windows 7.

папка Boot

Йес, миссия выполнена, я крут и вы все тоже молодцы ;)

Bootmgr (Windows Boot Manager) — Менеджер загрузки, используемый в операционных системах Microsoft Windows (Windows Vista/7/8/10).

Bootmgr появился в операционной системе Windows Vista и представляет собой дальнейшее (развитие) эволюционирование хорошо известного нам по предыдущим версиям Windows загрузчика NTLDR, который был переписан с учетом некоторых нововведений, в том числе обеспечения поддержки интерфейса EFI (Extensible Firmware Interface, Расширенный интерфейс прошивки). Загрузчик сохранил совместимость и со «старой», традиционной (legacy) схемой загрузки ОС, использующей последовательность BIOS -> MBR -> PBR (VBR) -> BOOTMGR -> winload.exe -> ntoskrnl.exe -> SMSS -> Winlogon. В зависимости от метода загрузки системы и реализованной в BIOS версии спецификации UEFI, модуль менеджера загрузки может именоваться:

  • bootmgr.exe — традиционный (legacy);
  • bootmgfw.efi — UEFI;
  • bootmgr.efi — UEFI;
  • bootx64.efi — UEFI;

Представляет собой исполняемый (PE-формат) файл, располагающийся на скрытом системном разделе, и предназначающийся для решения следующих задач:

  • Подготовка среды загрузки ядра, прединициализации структур/интерфейсов: таблиц дескрипторов GDT, IDT, микрокода, модуля TPM, файловых систем, шины PCI, отладчика ядра, текстовой консоли, сетевого интерфейса и др.;
  • Поддержка (новой) базы данных конфигурации загрузки (Boot Configuration Data, BCD), включающей меню загрузки ОС (текущей/предыдущих версий), опции гибернации, восстановления, позволяющей интегрировать опции сторонних разработчиков (различные модули этапа загрузки);
  • Обеспечение опций загрузки начального этапа: устранение неполадок компьютера, безопасный режим, безопасный режим с загрузкой сетевых драйверов, безопасный режим с поддержкой командной строки, ведение журнала загрузки, включение видеорежима с низким разрешением, последняя удачная конфигурация, режим восстановления служб каталогов, режим отладки, отключить автоматическую перезагрузку при отказе системы, отключение обязательной проверки подписи драйверов, обычная загрузка Windows.
  • Нахождение/проверка/загрузка модуля следующего этапа winload.exe(.efi).

Начиная с версии Windows 7, даже в случае установки системы с использованием классического способа разметки/загрузки (BIOS/POST → MBR), менеджер загрузки bootmgr размещается на специализированном скрытом разделе под названием System Reserved (Зарезервировано системой).

Тут самое время задаться вопросом, зачем разработчикам вводить отдельный раздел для классической схемы загрузки (BIOS/MBR)? Ведь раньше то ничего подобного не создавалось, все прекрасно загружалось без всяких там скрытых разделов, все файлы цепочки загрузки находились на основном системном разделе, куда же проще? А ответ, как мне кажется, достаточно прост. Выше мы уже упомянули, что схема загрузки была переделана Microsoft с учетом потребностей новой технологии UEFI, у которой для размещения загрузчиков используется специальный раздел ESP. Так что же, для UEFI использовать один алгоритм загрузки, а для классической BIOS/MBR оставлять традиционный? Подобное решение влечет за собой огромное количество проблем и необходимость обновления двух веток кода, не проще ли привести все «к одному знаменателю»: традиционную и UEFI-загрузки реализовать в рамках единого алгоритма, в любом случае размещая загрузчик в специальном разделе? Собственно это и было реализовано.
Поэтому, раздел System Reserved в традиционной схеме загрузки (BIOS/MBR) предназначается для:

  • приведения иерархий разметки диска/файловой системы (используемых при традиционной (legacy) загрузке) в соответствие с аналогичной структурой стандарта UEFI: размещение на разделе (в классифицированном дереве директорий) файлов операционной системы, фигурирующих в начальном этапе загрузки ОС (Bootmgr/BCD);
  • дополнительной защиты загрузочных файлов операционной системы от (не)преднамеренных деструктивных действий приложений/пользователя;
  • хранения загрузочных файлов BitLocker Drive Encryption в случае, если используется шифрование разделов;

Скрытый раздел System Reserved создается на этапе установки операционной системы и имеет типовой размер порядка 100Mb (хотя может быть уменьшен до 30Mb без потери функционала). Далее мы будем рассматривать внутреннюю структуру файла bootmgr, представляющего из себя гибрид блоков кода на языке ассемблера, и встроенного образа PE-формата (написанного на языке C) с ресурсами и дополнительными секциями, содержащими наборы рабочих данных.

Где находится bootmgr Windows 7

В операционной системе Windows 7 bootmgr имеет довольно ощутимый размер для файла загрузки (в тестовой системе = 383786 байт), поскольку, как мы сможем увидеть позже, по большей части написан на языке высокого уровня. Располагается bootmgr в корневом каталоге основного активного скрытого раздела размером в 100 мегабайт. Данный раздел размещается в начале диска, предваряя все остальные. Партиции этой не присваивается логического имени (литеры/буквы диска), поэтому в самой операционной системе она не видна для стандартных средств операционной системы. Как вы можете догадаться, таким вот незатейливым способом данная партиция защищена от деструктивных действий пользователя, могущих повлечь за собой повреждение критически важной загрузочной информации.
Для того, чтобы найти файл bootmgr в системе, необходимо сначала научиться взаимодействовать со скрытым разделом. Для этого открываем апплет Управление компьютером, щелкнув правой кнопкой мыши на иконке «Компьютер» и выбрав пункт «Управление», либо можно запустить (Win+R) из командной строки diskmgmt.msc. Текущий пользователь должен иметь права администратора. В ответ на это действие откроется окно следующего вида:

Скрытый раздел содержащий bootmgr windows 7

Чтобы содержимое скрытого раздела предстало нашему взору, нам необходимо назначить ему логический номер (букву/литеру). На рисунке (схематично) я обозначил последовательность действий, которые нам необходимо предпринять. После выбора пункта «Изменить букву диска или путь к диску» у нас появится следующее окно выбора:

Назначение буквы диска разделу, содержащему bootmgr windows 7

После нажатия кнопки ОК логическое имя будет присвоено разделу и он станет доступен в проводнике. Содержимое его, которое нам как раз и необходимо, наконец-то можно увидеть. Но это еще не все, дело в том, что некоторые файлы и директории раздела имеют атрибут «скрытый», поэтому нам нужно включить отображение скрытых и системных файлов. Это можно сделать в свойствах папки (Параметры папок и поиска — Вид). А теперь, давайте взглянем на искомый нами файл bootmgr, который можно увидеть прямо в корне партиции:

Структура скрытого раздела, содержащего bootmgr windows 7

На рисунке бывает порой сложно, а чаще и вовсе не получается наглядно отобразить всю структуру раздела, поэтому приведу его в виде текстового списка. Итак, содержимое скрытого раздела «Зарезервировано системой» выглядит следующим образом:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

\Boot

  \deDE

    bootmgr.exe.mui    91712   локализация интерфейса загрузчика

  \enES

    bootmgr.exe.mui    85056   локализация интерфейса загрузчика

  \esES

    bootmgr.exe.mui    90192   локализация интерфейса загрузчика

  \Fonts

    wgl4_boot.ttf      47452   шрифт

  \frFR

    bootmgr.exe.mui    93248   локализация интерфейса загрузчика

  \itIT

    bootmgr.exe.mui    90704   локализация интерфейса загрузчика

  \ruRU

    bootmgr.exe.mui    90192   локализация интерфейса загрузчика

    memtest.exe.mui    43600   локализованная версия утилиты memtest

  BCD                  20480   хранилище данных конфигурации загрузки

  BCD.LOG              17408

  BCD.LOG1             0

  BCD.LOG2             0

  BOOTSTAT.DAT         65536   Boot Status Data. log-файл для записи статуса загрузки/завершеения (если включено логгирование)

  memtest.exe          485760  утилита memtest

bootmgr                383786  менеджер загрузки

BOOTSECT.BAK           8192

WLJAV                  357376

По комментарию напротив (справа от) каждого файла в окне представления вы можете увидеть краткое описание функционального назначения.
Хотелось бы сделать некое лирическое отступление и поговорить о файлах, имеющих расширение .mui. Если вы были достаточно внимательны, то обратили внимание, что одноименные файлы с расширением .mui имеют значительно меньший размер в сравнении со своими оригиналами. Это объясняется тем, что .mui-файл — это файл ресурсов, который содержит элементы локализации интерфейса основной программы для определенного языка. Проще говоря — это перевод интерфейса программы. Технология впервые была использована в ОС Windows Vista и предназначалась для связывания ресурсов, описанных в языковом файле (текст меню, диалоговых окон, строк помощи и прочее.) с независимым от языка основным исполняемым файлом.
Но, вернемся к основной линии повествования. Управление код bootmgr Windows 7 получает сразу после своей загрузки кодом загрузочного сектора раздела PBR.

Структура файла bootmgr Windows 7

По анализу кода загрузочного сектора раздела (PBR) в предыдущих статьях нам удалось определить, что первый файл, который загружается и выполняется после кода PBR, это bootmgr, находящийся в корне скрытого системного раздела. Интересно было бы посмотреть на структуру этого файла.

Дабы в следствии экспериментов не вывести систему из работоспособного состояния, стоит сделать резервную копию файла bootmgr в какой-нибудь временной директории, к примеру %TEMP%.

С чего мы начнем изучение? Первое, что приходит на ум, это визуально осмотреть структуру файла с помощью любого доступного под рукой шестнадцатеричного редактора. Что мы и сделаем сейчас, в моем случае я воспользовался встроенным в файловый менеджер FAR Commander редактором, переключив его в режим шестнадцатеричного представления.

Структура файла bootmgr Windows 7

При беглом осмотре структуры, удалось обнаружить некоторые особенности.

  • 16-битный загрузчик. Начиная со смещения 00000000 предположительно идет код, напоминающий по виду код реального режима (aka ассемблер). Вероятно, у bootmgr есть участок кода, который исполняется в реальном 16-битном режиме процессора сразу после прыжка из кода PBR (поскольку код PBR не переводит процессор ни в какой другой режим). Я думаю, что код этот производит некие подготовительные действия. Предположительно (!) в файле он размещается до адреса 00003DDF.
  • PE-образ неопределенного назначения. Далее, по смещению 00005BF0 удалось обнаружить некое подобие стандартного заголовка PE-образа, который начинается с сигнатуры MZ (4D 5A). Насколько я понял, этот образ располагается вплоть до адреса 00007BF0, то есть имеет размер 8192 байта (2000h). Этот образ содержит PE-заголовок, но при этом имеет не все типовые секции (такие как секции кода, данных, ресурсов). Многие из этих секций заполнены нулями, поэтому я могу сделать предположение, что он вообще не исполняется.
  • Запакованный bootmgr.exe. Затем, удалось найти еще один PE-образ по смещению 00007BF0, который так же начинается со стандартной сигнатуры MZ и размещается вплоть до самого конца файла bootmgr Windows 7.

Portable Executable — (PE, дословно: переносимый исполняемый) — формат исполняемых файлов, используемый во всех версиях операционной системы Microsoft Windows

По сути, на основе тех данных, которые нам только что удалось получить при беглом, поверхностном анализе данных, файл bootmgr имеет три составных части:

  1. некий 16-битный код-загрузчик;
  2. пустой PE-образ: назначение неизвестно;
  3. еще один PE-образ: предположительно 32-битный запакованный файл bootmgr.exe;

На этом предварительный анализ заканчивается. Теперь нам предстоит более предметно подойти к вопросу и попробовать «в лоб» дизассемблировать bootmgr Windows 7 с целью понять, действительно ли код, располагающийся в начале файла, простой участок кода реального режима?

16-битный загрузчик (16-bit stub)

В самом начале исходного кода я обнаружил (традиционный) блок настройки сегментных регистров. Базу сегмента я не корректировал пока (уверен, что при переходе от PBR они имеют другие значения), поскольку не разобрался, с какого адреса стартует этот участок кода.

seg000:01D8    mov     bx, 3DE0h

seg000:01DB    shr     bx, 4

seg000:01DE    mov     ax, cs

seg000:01E0    add     ax, bx

seg000:01E2    mov     ss, ax

seg000:01E4    mov     sp, 0C80h

seg000:01E7    push    dx

seg000:01E8    mov     ds, ax

seg000:01EA    mov     es, ax

seg000:01EC    xor     ebp, ebp

seg000:01EF    movzx   esp, sp

seg000:01F3    mov     word ptr ds:1534h, ds

seg000:01F7    mov     word ptr ds:1536h, cs

seg000:01FB    call    sub_56C

Затем, далее по кодовому ветвлению, идет сброс контроллера диска.

seg000:0A52    mov     dx, 3F2h

seg000:0A55    mov     ax, 0Ch

seg000:0A58    out     dx, al

seg000:0A59    retn

Далее следует включение линии A20.

seg000:0AC2    call    sub_AE4

seg000:0AC5    jnz     locret_AE3

seg000:0AC9    pushfd

seg000:0ACB    cli

seg000:0ACC    mov     al, 0D1h ; ‘T’

seg000:0ACE    out     64h, al

seg000:0AD0    call    sub_AE4

seg000:0AD3    mov     al, 0DFh ; ‘-‘

seg000:0AD5    out     60h, al

seg000:0AD7    call    sub_AE4

seg000:0ADA    mov     al, 0FFh

seg000:0ADC    out     64h, al

seg000:0ADE    call    sub_AE4

seg000:0AE1    popfd

seg000:0AE3  locret_AE3:

seg000:0AE3    retn

Потом код производит работу с настройкой страничной адресации.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

seg000:07F2    mov     ax, ds:word_1510

seg000:07F5    and     ax, ax

seg000:07F7    jnz     locret_86F

seg000:07FB    push    large 0

seg000:0801    popfd

seg000:0803    mov     ds:word_1510, 1

seg000:0809    mov     eax, ds:dword_1514

seg000:080D    xor     edx, edx

seg000:0810    or      edx, 1

seg000:0814    and     eax, 80000000h

seg000:081A    jz      loc_825

seg000:081E    or      edx, 80000000h

seg000:0825  loc_825:

seg000:0825    cli

seg000:0826    lgdt    fword ptr ds:byte_1500

seg000:082B    lidt    fword ptr ds:byte_1508

seg000:0830    mov     eax, cr0

seg000:0833    or      eax, edx

seg000:0836    mov     cr0, eax

seg000:0839    xchg    bx, bx

seg000:083B    nop

seg000:083C    jmp     short loc_83F

Ну и затем осуществляется переход в защищенный режим. А вот после этого следует довольно большой участок кода, который активно манипулирует блоками данных и выполняет над ними различные арифметико-логические операции, очень похожий на код распаковки 32-битного образа bootmgr.exe (предположение). Затем идут процедуры подготовки окружения для запуска 32-битного образа. Образ распаковывается и размещается по адресу (базе) 0x400000, то есть мы видим уже классическую схему загрузки PE-файла Windows.

Заголовок размером 16 байт

Используется 16-битным блоком кода реального режима для определения параметров распаковки файла bootmgr.exe.

PE-образ размером 8192 байта неизвестного предназначения

Содержит структуру PE-заголовка. Заглушку для вывода ошибки при запуске в реальном режиме. Часть секций присутствует. Большинство секций заполнены нулями.

32-битный PE-образ bootmgr.exe

Как мы уже упоминали выше, последним найденным блоком данных был файл bootmgr.exe, правда основная проблема заключается в том, что он запакован (сжат). Поэтому, непосредственно перед изучением логики его работы, нам необходимо извлечь (и распаковать) этот файл из загрузчика bootmgr. Для выполнения извлечения и распаковки на просторах бескрайней Сети я нашел утилиту под названием bmzip, которую можно найти на странице автора тут. В моём случае распакованный файл bootmgr.exe занимал 523648 байт. А вот теперь то уже этот самый распакованный файл bootmgr.exe мы и попытаемся «подсунуть» дизассемблеру IDA.

Блок-схема алгоритма bootmgr windows 7

Выполнение кода bootmgr.exe начинается с основной процедуры модуля, носящей название BmMain. Процедура BmMain вызывает вложенную процедуру BlInitializeLibrary, которая предназначена для инициализации критических структур данных, таких как внутренние переменные, различные физические устройства компьютера. Эта процедура вызывает следующие подпрограммы:

  • BlpArchInitialize — инициализация таблиц дескрипторов GDT, IDT и прч.
  • BlpFwInitialize — инициализация микрокода (firmware);
  • BlpTpmInitialize — инициализация TPM;
  • BlpIoInitialize — инициализация файловых систем;
  • BlpPltInitialize — инициализация шины PCI;
  • BlBdInitialize — инициализация отладчика ядра;
  • BlDisplayInitialize — инициализация консоли;
  • BlpResourceInitialize — инициализация внутренней секции ресурсов .rsrc;
  • BlNetInitialize — Инициализация сети;

Далее:

  • на этапе окончания подготовки рабочей среды вызывается процедура BmpInitializeBootStatusDatalog: она записывает состояние загрузки в файл bootstat.dat.
  • Исполняется BmpLogBootResolutions.
  • Исполняется BlResourceFindXml, которая отвечает за поиск и распаковку файла bootmgr.xsl из ресурсной секции .rsrc. Заданный файл содержит параметры меню загрузки.
  • Исполняется BlXmiInitialize: ожидает выбора пользователя (ввод с клавиатуры), либо инициализирует загрузку загрузочной записи, если она единственная.
  • Исполняется BlImgQueryCodeIntegrityBootOptions: Проверяет корректность записей загрузки и загружаемых образов.
  • Исполняется BmFwVerifySelfIntegrity: проверяет собственную целостность. Для отключения проверки целостности модулей используется функция ImgpValidateImageHash.
  • Исполняется BinResumeFromHibernate: проверяет статус гибернации, если находит, то вызывает winresume.exe.
  • Исполняется BlUtlRegisterProgressRoutine: процедура проверки/изменения этапа выполнения процесса загрузки.
  • Исполняется BlUtlRegisterMulticastRoutine: процедура проверки/изменения этапа выполнения сетевой загрузки.

Функция BlXmiWrite тут вряд ли уместно приводить в составе основной логики функционирования bootmgr (поэтому я его и затенил на рисунке), поскольку это исключительно функция поддержки, которая парсит XML данные и выводит их на консоль.

  • Исполняется BlGetBootOptionBoolean: загружает опции приложений из файла BCD.
  • Исполняется BlGetBootOptionGuidList: получение списка GUID-идентификаторов из BCD;
  • Исполняется BmpGetSelectedBootEntry: получение выбранной записи загрузки из BCD;
  • Исполняется BmCloseDataStore: закрытие BCD-файла;

После определения [выбранной/заданной] записи загрузки вызывается процедура BmpLaunchBootEntry, которая и загружает образ, ассоциированный с записью. В основной ветке кода, на завершающей стадии работы, bootmgr.exe проводит загрузку, проверку целостности и передачу управления на модуль следующей стадии загрузки операционной системы — winload.exe.

Подготавливая информационные материалы для наших читателей, мы неоднократно касались темы неработающего компьютера. Например, у нас есть подробная статья о том, что делать, когда не включается компьютер. Во многих текстах мы не раз упоминали такой элемент операционной системы как загрузчик. Сегодня мы предлагаем познакомиться ним подробнее, а также разобраться, как восстановить загрузчик Windows 10 или 11 в случае, если он поврежден и не работает.

Что такое загрузчик Windows 10

Прежде чем разбираться, как восстанавливать загрузчик Windows 10, необходимо понять, что это такое и какие у данного элемента функции. Дадим определение этой части операционной системы и расскажем о ней чуть подробнее.

Загрузчик Windows 10 — это программное средство, ответственное за запуск операционной системы Windows 10 при включении компьютера. Загрузчик выполняет несколько ключевых задач, обеспечивая корректную и стабильную загрузку операционной системы. Вот некоторые основные функции загрузчика Windows 10:

  • Загрузка ядра операционной системы. Компонент запускает ядро операционной системы, начиная процесс загрузки. Ядро является основным элементом операционной системы, отвечающим за взаимодействие с аппаратной частью и управление ресурсами компьютера.
  • Загрузка драйверов. Загрузчик может активировать необходимые драйверы, которые обеспечивают взаимодействие с аппаратной частью компьютера, таким как драйверы для видеокарты, звуковой карты и других устройств.
  • Управление загрузочными параметрами. Загрузчик также предоставляет возможность выбора различных параметров загрузки, таких как безопасный режим, последняя известная настройка и другие опции, которые могут помочь в устранении проблем с загрузкой системы.

Обычно загрузчик Windows 10 (и более ранних версий Windows) называется NTLDR (New Technology Loader), а также используется Boot Configuration Data (BCD) для хранения информации о параметрах загрузки и настройках системы.


Интересно, что, несмотря на название, загрузчик операционной системы загружается далеко не первым. При включении компьютера первой активируется система UEFI, которая ищет раздел EFI на диске и запускает загрузчик. Только после этого он активирует работу операционной системы.

Почему загрузчик Windows может сломаться

Существует множество причин, по которым может возникнуть сбой загрузчика Windows. В основном они касаются программного обеспечения, но также проблемы могут возникать из-за аппаратной части или даже из-за действий пользователя. Перечислим некоторые из наиболее распространенных причин появления ошибки загрузчика Windows:

  • Повреждение загрузочного сектора. Если загрузочный сектор на жестком диске поврежден, загрузчик может не суметь правильно прочитать информацию о загрузке операционной системы. Иные сектора с поврежденными данными или физическими повреждениями также могут вызвать сбой загрузчика.
  • Изменения в конфигурации оборудования. Подключение нового оборудования или изменения в существующей конфигурации (например, замена жесткого диска или видеокарты) могут вызвать сбои загрузчика, если операционная система не может адаптироваться к изменениям.
  • Вирусы и вредоносное ПО. Атаки вирусов или вредоносных программ могут повредить системные файлы, включая те, которые отвечают за загрузку операционной системы.
  • Неудачные обновления. Некорректно установленные или несовместимые обновления операционной системы могут привести к сбоям загрузчика.
  • Неправильные настройки BIOS/UEFI. Некорректные параметры в настройках Basic Input/Output System (BIOS) или Unified Extensible Firmware Interface (UEFI) могут затруднить правильную загрузку операционной системы.
  • Неправильные действия пользователя. Сейчас Windows практически не дает изменять системные файлы. Но долгое время ошибка загрузчика ntldr vis missing or invalid возникала из-за того, что пользователь просто удалял неизвестный ему файл в корне диска. Если подобное случалось, приходилось срочно искать, как восстановить загрузчик Windows 7 или систем более ранних версий.
  • Установка еще одной операционной системы на диск. Сейчас большинство ОС просто удаляют «конкурентов» с того диска, куда ставятся. Но при определенном упорстве можно установить на диск несколько операционных систем. Однако, при неверной установке загрузка некоторых ОС будет невозможна из-за того, что у операционных систем возник конфликт и чей-то загрузчик был удален.

Для исправления работы загрузчика Windows, часто требуется использование инструментов восстановления, таких как встроенные средства Windows, загрузка с установочного диска или USB-накопителя с образом системы.


Важно отметить, что внимательное следование процедурам обновления, регулярная проверка наличия вирусов и аккуратное управление оборудованием могут помочь предотвратить подобные проблемы и обеспечить более стабильную загрузку операционной системы.

Как восстановить работу загрузчика Windows

В случае, если у вас не работает загрузчик Windows, необходимо предпринять три основных шага. В первую очередь определяется проблема. Если у вас аппаратная проблема, необходимо заменить жесткий диск. Если ошибка вызвана действиями пользователя, нужно после проинструктировать пользователя и убедиться, что он не совершит повторные действия. Если проблема в Windows, необходимо заранее подумать об отключении обновлений или иных действиях, которые помогут предотвратить повторение проблемы.

После того как вы выяснили, почему не работает загрузчик на Windows 7, 10, или иной операционной системе можно начинать разбираться в том, как его восстановить. Есть несколько способов, опишем самые популярные. Обратите внимание, что для всех вариантов вам потребуется загрузочная копия Windows на флешке.

Полная переустановка Windows

Самый простой способ восстановить работу загрузчика Windows 10 — это переустановить всю операционную систему. Учитывая, что сегодня это действие можно выполнить буквально кликая кнопку «Далее», такой вариант — один из наиболее предпочтительных. Почему? Во-первых, он исключает неправильное восстановление загрузчика. Во-вторых, он гарантирует, что в системе не останется того ПО, вирусов, некорректных обновлений, которые стали причиной поломки. Дополнительный плюс — не нужно искать командную строку, чтобы восстановить загрузчик, все делается средствами Windows 10.


Важно! Перед переустановкой ОС обязательно скопируйте все нужные файлы. Если ваш компьютер не грузится, можно изъять из него жесткий диск и подключить к другому устройству, чтобы забрать данные с рабочего стола, папки загрузок и других мест, где они могли бы храниться. Кроме того, возьмите себе за правило не хранить на системном диске важных данных — как раз на такой случай.

Дадим алгоритм установки операционной системы, которому вам нужно следовать:

  1. Запустите компьютер с USB-накопителя (загрузочной флешки).
  2. После загрузки с USB-накопителя выберите язык, временную зону и другие настройки.
  3. Выберите «Установить Windows» и следуйте инструкциям мастера установки.
  4. Когда система спросит, укажите раздел на жестком диске, на который вы хотите установить Windows 10. Можно выполнить форматирование диска или выбрать уже существующий раздел. Во втором случае, скорее всего, сработает восстановление.
  5. Подождите, пока процесс установки завершится. Компьютер перезагрузится несколько раз.
  6. После перезагрузки следуйте инструкциям по настройке базовых параметров, таких как учетная запись пользователя, пароль, настройки безопасности и другие.
  7. После завершения установки Windows 10 установите необходимые драйверы для оборудования и программное обеспечение.

Эти шаги должны помочь вам выполнить переустановку Windows 10 с использованием загрузочного USB-накопителя. Убедитесь, что у вас есть резервные копии важных данных перед началом этого процесса, чтобы избежать потери данных.


После переустановки в некоторых случаях приходится активировать Windows заново. Об этом процессе мы писали в статье «Почему появляется надпись «Активация Windows» и как от нее избавиться».

Автоматическое восстановление средствами Windows

Если полная переустановка вам не по душе, то можно попытаться восстановить текущую систему с помощью функции восстановления. Для этого используйте загрузку с другого источника.

Загрузившись с флешки, выберите пункт «Поиск и устранение неисправностей» в меню, а после — укажите, что вам требуется пункт «Дополнительные параметры». Здесь у вас будет пункт «Восстановление при загрузке», который и нужно выбрать.

Меню загрузки Windows при автоматическом восстановлении

Меню загрузки Windows при автоматическом восстановлении

После восстановления система сама перезагрузится и попросит выбрать пользователя. Укажите себя, если пользователей несколько. Далее будет проведена диагностика компьютера — нужно немного подождать. В случае успеха или неудачи система оповестит вас. Если восстановление не сработало, можно нажать кнопку «Дополнительные параметры», чтобы вернуться в меню и попробовать другие способы, например, загрузить командную строку.

Неудачное восстановление системы Windows 10

Неудачное восстановление системы Windows 10

Восстановление системы из командной строки

Управление с помощью командной строки поможет восстановить загрузчик Windows с большей вероятностью, чем автоматический режим. Однако здесь необходимо ввести много команд вручную и точно понимать, что вы делаете. Ну и, конечно, нужно разбираться, что такое командная строка и как в ней работать.

Алгоритм действий при использовании командной строки выглядит следующим образом:

  1. Загрузитесь в Windows через Boot Menu или меню восстановления, вызовите консоль.
  2. Наберите в командной строке diskpart. Это вызов утилиты, с которой мы сейчас будем работать.
  3. Наберите в командной строке list volume. В списке, который появится на экране, необходимо найти букву диска, где располагается Windows. Если на компьютере работает EUFI, скорее всего, это скрытый том с разметкой FAT32. Запомните буквенное обозначение и метку нужного тома.
  4. Введите select volume и номер тома, который запомнили в предыдущем пункте.
  5. Введите format fs=fat32, если изначально том был отформатирован в FAT32 и format fs=ntfs, если изначально том был отформатирован в NTFS.
  6. Введите assign letter=Т, чтобы присвоить диску метку T. Вам нужно выбрать такую метку, которой нет у других дисков в системе.
  7. Введите exit, чтобы завершить работу инструмента.

Команда list volume показывает, какие имена и метки, а также файловые системы, есть у разделов на текущем компьютере.

Команда list volume показывает, какие имена и метки, а также файловые системы, есть у разделов на текущем компьютере.

После настройки диска необходимо использовать команду bcdboot. Вот пример ее написания: bcdboot C:\Windows /s T: /f ALL. В этой записи вы:

  • указываете местоположение Windows с помощью буквы диска;
  • указываете, в какой раздел будут копироваться файлы с помощью команды /s T:;
  • уточняете тип встроенного ПО целевого системного раздела. ALL означает, что это может быть и BIOS, и UEFI.

Команда bcdboot позволяет восстановить загрузчик Windows через командную строку. Изучите справку, если сомневаетесь в том, как именно ее использовать. Справка появляется, если вы введете в консоли bcdboot и нажмете Enter сразу же, не добавляя никаких подробностей.

Справка по команде bcdboot в консоли Windows

Справка по команде bcdboot в консоли Windows

Последний шаг в этом способе восстановления загрузчика — убрать присвоенную диску метку, чтобы Windows снова могла нормально работать. Для этого необходимо:

  1. Вновь открыть утилиту с помощью diskpart.
  2. Выбрать нужный диск с помощью команд list volume, select volume.
  3. Удалить метку диска командой remove letter=.
  4. Закрыть инструмент, написав exit.

Утилита diskpart дает пользователю достаточно много возможностей. Подробно обо всех командах, которые можно использовать таким образом, читайте на сайте Microsoft. Если после всех манипуляций загрузчик не восстановился и система не работает, попробуйте полную переустановку.

Подготовка к восстановлению загрузчика — справка

В предыдущих разделах мы несколько раз упоминали о загрузочной флешке. Возможно, вы не знаете, как именно ее можно создать. Ниже рассказываем алгоритм создания загрузочной флешки и ее использования. Эти действия вы можете выполнить, даже если компьютер в полном порядке. Тренировка поможет правильно среагировать, если на самом деле потребуется восстановить загрузчик Windows 7 или любой другой более новой операционной системы.

Как создать загрузочную флешку

Независимо от того, хотите ли вы восстановить загрузчик Windows 10 через командную строку или в автоматическом режиме, вам потребуется загрузочная флешка. Несколько лет назад можно было бы написать «загрузочный носитель», но сейчас DVD-диски практически не используются. У многих даже нет дисководов. Большинство при восстановлении системы загружаются с флешки, поэтому о ней и будем говорить.

Для создания загрузочной флешки существует стандартная утилита, которую можно скачать с сайта Microsoft. Вам необходимо средство для установки операционной системы. После его скачивания и запуска разрешите ему вносить изменения на вашем устройстве.

Раздел сайта, где можно скачать утилиту для создания загрузочной флешки

Раздел сайта, где можно скачать утилиту для создания загрузочной флешки

Программа установки Windows работает в полуавтоматическом режиме. Пользователю нужно лишь выбирать некоторые важные пункты. Вот основная последовательность действий:

  1. Примите лицензионное соглашение.
  2. Выберите пункт «Создать установочный носитель», когда система спросит, что вы хотите сделать.
  3. Выберите язык, выпуск операционной системы и архитектуру. Как определить разрядность Windows мы писали отдельно. Если вы создаете загрузочную флешку на будущее на том же устройстве, на котором будете ее с нее грузиться, можно предложить программе выбрать параметры, выставив значение «Использовать рекомендуемые параметры для этого компьютера».
  4. Выберите носитель, в нашем случае это USB-устройство. Необходимо вставить его в компьютер или ноутбук, предварительно сохранив все файлы. Обратите внимание, что файлы на загрузочной флешке оставлять нельзя: система удалит их.
  5. Подождите. Система уведомит о том, что работа выполнена.

Момент настройки выпуска, языка и архитектуры для создания загрузочной флешки

Момент настройки выпуска, языка и архитектуры для создания загрузочной флешки

После таких нехитрых действий у вас появляется загрузочная флешка, с помощью которой можно загрузиться при неработающей системе и предпринять какие-то дальнейшие действия. Например, попытаться восстановить загрузчик Windows 10 из командной строки или иным способом.

Как загрузиться с загрузочной флешки

Если загрузчик Windows не работает, возобновление системы с помощью имеющейся ОС невозможно. Но мало создать загрузочную флешку, нужно суметь с нее загрузиться. Мы составили небольшую инструкцию, которая поможет вам выполнить нужные действия:

  1. Вставьте загрузочную флешку в компьютер.
  2. Перезагрузите компьютер и в процессе загрузки нажмите соответствующую клавишу (чаще всего это F2, F12, Esc или Del), чтобы войти в настройки BIOS/UEFI.
  3. В разделе Boot или Boot Priority выберите флешку как первое устройство загрузки.
  4. Сохраните изменения в BIOS/UEFI и перезагрузите компьютер. Обычно это делается путем выбора опции «Save & Exit» или подобной.

Когда компьютер перезагрузится, он должен автоматически начать загрузку с флешки. Если этого не происходит, возможно, вам нужно повторить шаги и убедиться, что флешка правильно подготовлена.

В этой статье мы подробно описали, как восстановить загрузчик Windows 10 штатными средствами, через командную строку и с помощью полной переустановки системы. Надеемся, что эти знания вам не потребуются и ваш компьютер всегда будет работать как часы. Кроме того, стоит обратить внимание на один момент: если вы видите, что на вашей технике последовательно выходит из строя тот или иной компонент Windows, возможно, проблема системная и кроется не в программной части. Или, наоборот, причина инцидентов — вирус, находящийся в локальной сети. Регулярные поломки требуют анализа и аудита, так как они свидетельствуют о более серьезной проблеме. Если вы не хотите подвергать опасности данные, хранящиеся на компьютерах в вашем офисе, позвоните нам. Наши системные администраторы и IT-специалисты проанализируют ситуацию и помогут решить вопрос раз и навсегда!

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как передвинуть панель задач вниз на windows 11
  • Samsung r410 plus windows 10
  • Mail ru для windows mobile
  • Что такое catch в windows 10
  • Запись экрана windows 11 на флешку