Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Invoke Blue Screen of Death using Managed Code

Tags:

Just curious here: is it possible to invoke a Windows Blue Screen of Death using .net managed code under Windows XP/Vista? And if it is possible, what could the example code be?

Just for the record, this is not for any malicious purpose, I am just wondering what kind of code it would take to actually kill the operating system as specified.

like image 836
Matthew Ruston Avatar asked Nov 10 '08 14:11

Matthew Ruston


People also ask

How do you trigger the Blue Screen of Death?

How do I manually trigger a BSOD? If you don't have a scroll lock key on your laptop, you can usually activate it by holding down the Fn key and then double-tapping the C, K, S, or F6 key. If you enter the keys correctly, your computer will bluescreen right away.

How do I force a blue screen?

Close the Registry Editor and restart your computer in order for the changes to take effect. Force a Blue Screen. You can do this by holding down the furthest most right "Control" key then pressing the "Scroll Lock" key twice. Once this is completed, a blue screen should pop up.

How do I force a blue screen in Windows 10?

You can trigger a Windows 10 BSoD (or GSoD) in 3 steps: Open Command Prompt, and choose "Run as administrator" Type in the following command: TASKKILL /IM svchost.exe /F. Press Enter.


2 Answers

The keyboard thing is probably a good option, but if you need to do it by code, continue reading...

You don't really need anything to barf, per se, all you need to do is find the KeBugCheck(Ex) function and invoke that.

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

For manually initiated crashes, you want to used 0xE2 (MANUALLY_INITIATED_CRASH) or 0xDEADDEAD (MANUALLY_INITIATED_CRASH1) as the bug check code. They are reserved explicitly for that use.

However, finding the function may prove to be a bit tricky. The Windows DDK may help (check Ntddk.h) - I don't have it available at the moment, and I can't seem to find decisive info right now - I think it's in ntoskrnl.exe or ntkrnlpa.exe, but I'm not sure, and don't currently have the tools to verify it.

You might find it easier to just write a simple C++ app or something that calls the function, and then just running that.

Mind you, I'm assuming that Windows doesn't block you from accessing the function from user-space (.NET might have some special provisions). I have not tested it myself.

like image 78
Michael Madsen Avatar answered Nov 07 '22 14:11

Michael Madsen


I do not know if it really works and I am sure you need Admin rights, but you could set the CrashOnCtrlScroll Registry Key and then use a SendKeys to send CTRL+Scroll Lock+Scroll Lock.

But I believe that this HAS to come from the Keyboard Driver, so I guess a simple SendKeys is not good enough and you would either need to somehow hook into the Keyboard Driver (sounds really messy) or check of that CrashDump has an API that can be called with P/Invoke.

http://support.microsoft.com/kb/244139

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
Name: CrashOnCtrlScroll
Data Type: REG_DWORD
Value: 1
Restart

like image 39
Michael Stum Avatar answered Nov 07 '22 12:11

Michael Stum