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 необходимо отключить автоматическую перезагрузку, в случае отказа системы, потому что пользователь может не понять причину перезагрузки компьютера.
Для изменения настройки, нам понадобиться войти в дополнительные параметры системы. Это можно сделать несколькими способами.
- Откройте Панель управления компьютера, а затем нажмите на значок «Система» (в представлении «Мелкие значки»).
- В окне «Просмотр основных сведений о вашем компьютере» нажмите на ссылку «Дополнительные параметры системы».
- В окне «Свойства системы», во вкладке «Дополнительно», в разделе «Загрузка и восстановление» нажмите на кнопку «Параметры…».
- В окне «Загрузка и восстановление», в разделе «Отказ системы» снимите галку напротив пункта «Выполнить автоматическую перезагрузку».
- Нажмите на кнопку «ОК».
- Нажмите на клавиатуре «Win» + «R».
- В окне «Выполнить» введите команду: «systempropertiesadvanced» (без кавычек).
- Далее из окна «Свойства системы», из вкладки «Дополнительно», в разделе «Загрузка и восстановление» нажмите на «Параметры…».
- В окне «Загрузка и восстановление» отключите автоматическую перезагрузку системы, выполняемую в случае отказа системы.
- Примените эту настройку.
Как вызвать синий экран смерти в 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».
На компьютере откроется 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-разрядной не всегда этот баг наблюдается).