Bluescreen-Funktion aufrufen?

5 Antworten

Das wird nicht funktionieren, auch wenn du die Einspruchsadresse der Funktion kennen solltest, weil sich diese im Kernel-Space (Ring 0) befindet, und dein Programm aber im User-Space läuft.

Wenn dein Programm versuchen sollte, diese Funktion aufzurufen, bekommst du eine Exception um die Ohren gehauen, und dein Prozess wird gekillt. Mehr als einen Programmabsturz wirst du also nicht auslösen können.

Aaaaber, du kannst dir selbst eine Funktion bluescreen() schreiben, in der du irgendwelche Schweinereien machst, die im Kernelspace laufen, und dort einen Call auf einen Nullpointer durchführen, eine Division durch Null ausführen, usw. usf.

Dafür musst du entweder eine ungepatchte Sicherheitslücke im Kernel oder in Treibern ausnutzen, oder dir einen primitiven Treiber selber schreiben, der besagte Funktionalität für dein Programm bereit stellt. (Treiber laufen ebenfalls wie der Kernel im Ring 0!)

Bis WindowsME konnte man einfach fopen("c:\con\con.exe", "r"); aufrufen, und damit einen Bluescreen aufrufen, aber bei neueren Windowsen geht das leider nicht mehr.

Du könntest auch - wie auf vielen Internetseiten beschrieben - den Prozess "csrss.exe" killen, aber für all diese Methoden benötigst du Adminrechte!

Ohne Adminrechte wirst du auf modernen Windows-Versionen wohl keinen BlueScreen zuverlässig auslösen können! :)

Nein, du kannst ihn natürlich über verschiedene Wege fokusieren, dieser hat dann aber nicht einen gewollten Inhalt, sondern die jewelige Exception.

Das Ganze sollte so auch nicht gehen, immerhin handelt es sich hier um ein Windowsfehler, der Windows vorbehalten ist, bastel für dein Programm halt ein anderes Fehlerausgabesystem oder kopiere es, ist ja optisch nicht gerade herausfordernd.

Bei Windows 7 lässt sich zwar ein BSOD provozieren, aber das geht nur in Kombination mit einem Registry-Eintrag und einer anschliessenden Tastenkombination. Da wird dann eine Exception über die Tastaturschnittstelle ausgelöst. Ist, soweit ich weiß, auch die einzige Möglichkeit einen BSOD manuell auszulösen.

Ansonsten bleibt nur der Hinweis von TeeTier

Was möchtest Du wissen?