Как вызвать синий экран смерти
Перейти к содержимому

Как вызвать синий экран смерти

  • автор:

Freevi

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

Вызвать синий экран смерти Windows можно одним из предложенных ниже способов:

Способ №1, с помощью программы NotMyFault

Самый быстрый и простой способ вызвать синий экран смерти с помощью бесплатной программы NotMyFault.

Для этого необходимо скачать архив NotMyFault отсюда и распаковать. После этого запускаем notmyfault.exe, если у вас 32-битная операционная система, или notmyfault64.exe, если 64-битная. Файлы, у которых в конце названия приставка «c» предназначены для работы из командной строки.

После запуска NotMyFault нужно будут согласиться с лицензионным соглашением, нажав «Agree». На вкладке «Crash» отмечаете любой из понравившихся пунктов (что именно вызовет ошибку) и жмете на кнопку «Crash».

Через пару секунд, увидите синий экран с описанием ошибки, после чего компьютер отправиться на перезагрузку.

Способ №2, с помощью клавиатуры

1. Зажимаем сочетание клавиш «Win + R», вводим «regedit» и нажимаем ввод. После чего должен запуститься редактор реестра.

2. Если у вас клавиатура подключена через USB порт, то переходим в раздел «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters». Быстрей всего это можно сделать, скопировав путь и вставить в адресную строку, которая находиться под основным меню. Перед внесением изменений стоит сделать резервную копию раздела реестра, чтоб все можно было откатить к первоначальному состоянию.

Если вы используете PS/2 то переходите в раздел «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters», а в случае если Windows запущена на виртуальной машине Hyper-V то — «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parameters».

3. Ищете параметр «CrashOnCtrlScroll». Если его нет, создаете, кликнув правой кнопкой мыши по основной панели в любом свободном месте. В контекстном меню нажимаете «Создать -> Параметр DWORD (32-бита)», называет «CrashOnCtrlScroll» и присваиваем значение «1» .

4. Перезагрузите компьютер, чтоб изменения вступили в силу.

После чего вызвать BSoD Windows можно зажав правую клавишу «Ctrl» и два раза нажать «Scroll Lock».

Способ №3, через командную строку

1. Запускаем, командую строку от имени администратора. Для этого нажимаем клавиши «Win + R», вводим «cmd» и жмем «Shift + Ctrl + Enter»

2. Вводим «taskkill /im svchost.exe /f», что должно вызвать ошибку Windows и появление экрана смерти.

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

Как вызвать синий экран смерти (BSOD) — 2 способа

Синий экран смерти (BSOD) — сообщение о критической ошибке системы, размещенной на синем фоне экрана компьютера. BSOD (Blue Screen of Death) отображает информацию о происшедшем серьезном сбое Windows, показывает название и стоп-коды ошибки.

«Синий экран смерти» появляется вследствие неполадок оборудования компьютера или сбоев в работе программного обеспечения. Причины BSoD могут быть самые разные: конфликты драйверов, конфликты устройств, конфликты приложений, воздействие вирусов и т. д.

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

Для выявления причин возникновения критических ошибок системы можно воспользоваться программным обеспечением, в частности, бесплатной программой BlueScreenView, о которой есть статья на моем сайте.

Бывают ситуации, когда, наоборот, требуется искусственно вызвать синий экран в исследовательских целях. Например, необходимо провести диагностику, получить снимки экрана во время BSoD, проверить работу программ и т. д. Мне такая возможность понадобилась для демонстрации работы программы BlueScreenView, когда я писал статью об этом приложении.

Как вызвать синий экран? Существуют разные способы искусственного запуска BSOD на компьютере. В этой статье мы рассмотрим 2 способа, которые вызывают BSOD на компьютере: с помощью клавиш клавиатуры, после правки реестра, и при помощи программы Not My Fault.

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

автоматической перезагрузки Windows при отказе системы

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

Для изменения настройки, нам понадобиться войти в дополнительные параметры системы. Это можно сделать несколькими способами.

  1. Откройте Панель управления компьютера, а затем нажмите на значок «Система» (в представлении «Мелкие значки»).
  2. В окне «Просмотр основных сведений о вашем компьютере» нажмите на ссылку «Дополнительные параметры системы».
  3. В окне «Свойства системы», во вкладке «Дополнительно», в разделе «Загрузка и восстановление» нажмите на кнопку «Параметры…».
  4. В окне «Загрузка и восстановление», в разделе «Отказ системы» снимите галку напротив пункта «Выполнить автоматическую перезагрузку».
  5. Нажмите на кнопку «ОК».

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

  1. Нажмите на клавиатуре «Win» + «R».
  2. В окне «Выполнить» введите команду: «systempropertiesadvanced» (без кавычек).
  3. Далее из окна «Свойства системы», из вкладки «Дополнительно», в разделе «Загрузка и восстановление» нажмите на «Параметры…».
  4. В окне «Загрузка и восстановление» отключите автоматическую перезагрузку системы, выполняемую в случае отказа системы.
  5. Примените эту настройку.

Как вызвать синий экран смерти в Windows

Данный способ работает в операционных системах Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Vista, Windows XP. Клавиша Scroll Lock предназначена для изменения поведения или положения курсора мыши. Помимо всего прочего, у клавиши есть функция, с помощью которой разработчики могут получить дамп памяти, искусственно вызвав «синий экран смерти» для отладки системы.

Функция вызова по умолчанию BSOD отключена в настройках Windows. Пользователь может самостоятельно включить данный функционал для применения в своих целях.

Для этого, необходимо внести изменения в реестр Windows. Откройте Редактор реестра одним из этих способов.

Пройдите по пути, если вы пользуетесь клавиатурой подключенной через порт PS/2:

Если клавиатура поключена по USB, пройдите по следующему пути:

Войдите в раздел «Parameters», кликните правой кнопкой мыши по свободному месту.

В контекстном меню выберите «Создать», а затем «Параметр DWORD (32 бита)».

Присвойте имя параметру «CrashOnCtrlScroll» (без кавычек).

Щелкните по параметру правой кнопкой мыши, а в контекстном меню выберите «Изменить…».

В окне «Изменение параметра DWORD (32 бита)», в поле «Значение» вставьте параметр «1» (без кавычек), а затем нажмите на кнопку «ОК».

изменение параметра

Перезагрузите компьютер для применения настроек.

Теперь, в случае необходимости, вызываем синий экран смерти Windows нажатием правой клавиши «Ctrl» и двойным нажатием на клавишу «Scroll Lock» («ScrLk») на клавиатуре.

синий экран

Если нужда в подобном запуске BSOD на компьютере отпала, удалите ранее созданные параметры из системного реестра.

Как сделать синий экран Windows в программе Not My Fault

Бесплатная программа Not My Fault создана Марком Руссиновичем для вызова искусственного сбоя операционной системы из-за разных причин. В дальнейшем, Windows будет вести себя так, как система ведет себя, после возникновения реальной неполадки, поэтому лучше испытывать это приложение на виртуальной машине.

Скачайте утилиту Not My Fault отсюда. Распакуйте архив с программой, а потом из папки программы запустите файл приложения, в соответствии с разрядностью вашей системы. Программа Not My Fault не требует установки на компьютер.

В окне программы Not My Fault во вкладке «Crash» берите подходящую причину критического сбоя системы:

  • High IRQL fault (kernel-mode)
  • Buffer overflow
  • Code overflow
  • Stack trash
  • High IRQL fault (User-mode)
  • Stack overflow
  • Hardcoded breakpoint
  • Double free

Нажмите на кнопку «Crash».

not my foult

На компьютере откроется BSoD с ошибкой, вызвавшей крах системы.

синий экран смерти

Заключение

В случае необходимости, пользователь может искусственно вызвать на компьютере «синий экран смерти» для выполнения нужных работ: проведения диагностики, создания снимков и т. п. В утилите Not My Fault имеется выбор параметров возникновения BSOD, для проведения необходимых исследований.

Как уронить Windows шестью строчками кода

Однажды один знакомый рассказал мне про одну уязвимость в Windows. А именно из-за нее можно легко вызвать синий экран смерти шестью строчками кода на Си. Причем программа не требует никаких прав администратора и вызывает только одну функцию масштабирования окна.

Немного теории

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

Например, в этом коде деление на ноль — недопустимая инструкция.

Если скомпилировать этот код без оптимизации, то мы увидим то самое окно о прекращении работы программы (конечно, компилятор выдаст warning).

Если же выполняется недопустимая инструкция в ядре системы, то все немного интереснее: мы увидим синий экран.

INT_MIN / -1

Есть еще одна исключительная инструкция — деление INT_MIN на -1.
Дело в том, что INT_MIN=−2,147,483,648=-2 31 , а INT_MAX=2,147,483,647=2 31 -1. Довольно очевидно, почему они отличаются на единицу: невозможно в int запихнуть ноль, множество положительных чисел и множество отрицательных чисел так, чтобы количество положительных и отрицательных чисел было равно.
Получается, при делении INT_MIN на -1 результат не умещается в int и процессор бросает исключение.

Следующий код, скомпилированный без оптимизации, вызывает исключительную инструкцию:

Ядро Windows

В ядре Windows принято не использовать переменные с плавающей точкой. Прямо вообще-вообще не использовать. Поэтому когда приходится работать с чем-то нецелым, используют две целочисленные переменные: числитель и знаменатель.
Также для увеличения производительности некоторые WinAPI функции, вызываемые программой, выполняются в ядре системы. Пример такой функции — ScaleWindowExtEx. Она ничего особенного не делает — функция масштабирует окно.
Прототип функции:

Сама программа

Отлично, это то, что нам нужно. Второй и третий параметры, четвертый и пятый параметры — это как раз числитель и знаменатель.
Xnum / Xdenom — масштабирование по x.
Ynum / Ydenom — масштабирование по y.
Но функция не всегда делит одно число на другое. Функция будет делить одно число на другое в случае, если разметка контекста рисования (device context) располагается справа налево. В противном случае она, видимо, будет перед делением как-то менять эти числа. Чтобы поменять разметку контекста, есть функция SetLayout.
Значит, создаем контекст рисования вызовом CreateCompatibleDC (NULL). Устанавливаем разметку контекста с помощью SetLayout. После чего вызываем функцию ScaleWindowExtEx с нужными параметрами.
Конечно, программисты Майкрософт не полные дебилы проверяют деление на ноль, и передачей третьим параметром числа ноль Windows не уронишь.
Но вот деление INT_MIN на -1 они не проверяют. Из-за чего происходит необработанное исключение в ядре системе, что приводит к синему экрану.
Такой код программы при добавлении библиотеки gdi32.lib уронит Windows:

Его можно подсократить до шести строчек для добавления пафосного заголовка:

Тут INT_MIN заменен на -2147483648, чтобы не добавлять лишнюю строчку, подключая файл limits.h. Конечно, можно код сократить до двух строчек, но тогда он уже будет совсем нечитабелен. Да и все функции на Си всегда можно сократить в одну очень-очень длинную строчку.

Система падает на Windows Vista, 7 и 8. Баг наблюдался как на 32-разрядной системе, так и на 64-разрядной (хотя на 64-разрядной не всегда этот баг наблюдается).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *