Имитация BlueScreen - PullRequest
       20

Имитация BlueScreen

8 голосов
/ 20 марта 2009

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

Моя проблема, это способ вызвать синий экран? Может быть, с помощью вызова WindowsAPI (может быть ZeroMemory?).

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

Компьютер, на котором я тестирую этот компьютер, рассчитан на такие вещи, как этот ха-ха.

кстати, я использую язык C \ C ++. Спасибо

Ответы [ 8 ]

12 голосов
/ 20 марта 2009

Вы можете настроить сбой машины при нажатии клавиши (Ctrl-ScrollLock)

Поскольку иногда кажется, что это не работает на некоторых системах с клавиатурами USB, вы также можете получить средства отладки для Windows, установить отладчик ядра и использовать команду ".crash" BugCheck.

6 голосов
/ 20 марта 2009

Чтобы вызвать BSOD, драйвер, работающий в режиме ядра, должен вызвать его. Если вы действительно хотите это сделать, вы можете написать драйвер, который предоставляет KeBugCheck для пользовательского режима.

http://msdn.microsoft.com/en-us/library/ms801640.aspx

Спасибо Андрею ниже за указание на эту утилиту:

http://download.sysinternals.com/files/NotMyFault.zip

4 голосов
/ 20 марта 2009

Если вы убьете процесс csrss, вы получите синий экран довольно быстро.

1 голос
/ 23 сентября 2009

Прежде всего, я бы посоветовал вам использовать виртуальную машину для проверки BSOD на. Это позволит вам сохранить резервную копию на случай, если BSOD нанесет некоторый ущерб системе. Вот совет о том, как сгенерировать BSOD , просто нажав CTRL + SCROLLLOCK + SCROLLLOCK .

Существует ли Windows API для его создания? Нет, согласно этой статье . Тем не менее, если вы вызовете определенные API с недопустимыми данными, они все равно могут вызвать сбой в ядре, что приведет к вашему BSOD.

1 голос
/ 20 марта 2009

Если вы хотите смоделировать тяжелый сбой, такой как синий экран, вам, скорее всего, придется дернуть шнур питания. НЕ рекомендуется.

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

0 голосов
/ 13 октября 2013

Запустить процесс как критик и выйти http://waleedassar.blogspot.co.uk/2012/03/rtlsetprocessiscritical.html

0 голосов
/ 07 февраля 2013

Если вы не хотите писать код (драйвер, IOCTL ...), вы можете использовать DiskCryptor . Обратите внимание, что шифрование диска не требуется.

Просто нужно установить драйвер:

dcinst.exe -setup

А затем сгенерируйте bsod с помощью консоли DC:

dccon.exe -bsod

0 голосов
/ 20 марта 2009

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

...