Как да причините BSOD

Всички знаят това син екран на смъртта (BSOD, Blue Screen Of Death) се появява поради грешки в ядрото. Но нали? Възможно ли е да се предизвика BSOD от потребителски режим?

Поради цялото разнообразие от причини, които водят до BSOD, е разработен специален механизъм за неговото показване (и допълнителни действия, описанието на които ще бъде пропуснато тук), които трябва да бъдат извикани. Баналността на отговора относно причината за BSOD е, че BSOD се „появява“ всеки път, когато се извика функцията на ядрото KeBugCheckEx и, независимо от източника и кода за грешка, именно тази функция се извиква от драйверите за режим на ядрото. Процесите от потребителския режим не могат да го извикат директно, но показването на BSOD все още е възможно по искане на потребителския процес.

Номерът е да се използва функцията ZwRaiseHardError с параметъра OptionShutdownSystem. Процесът трябва да има привилегия за изключване (SE_SHUTDOWN_PRIVILEGE) за успешен разговор. Примерен код: