Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#28

Re: Wie BlueScreens erzeugen?

  Alt 26. Okt 2005, 22:18
Zitat von ErazerZ:
ja .. sollte, ist es aber nicht, kannst ja testen, bei mir hats funktioniert unter WinXP SP2
Auf 2003 SP0 kracht nix. Auf XP SP1 ebenfalls nicht. Windows 2000 SP4 auch nicht. Das ist ein ziemlich repräsentativer Querschnitt durch die Systeme seit NT 4.0 - und die SPs dürften aufgrund der Konsistenz des Ergebnisses nichts daran ändern.

Keine Ahnung was ihr dort übergeben habt, aber ich habe folgendes kleine C-Programm:

Code:
#define _X86_
#define WIN32_LEAN_AND_MEAN
#define UNICODE

#include <windows.h>

#pragma optimize("gsy",on)

#pragma comment(lib,"kernel32.lib")
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"ntdll.lib")

#pragma comment(linker, "/opt:nowin98")
#pragma comment(linker, "/entry:Main")
#pragma comment(linker, "/opt:ref")
#pragma comment(linker, "/align:512")
#pragma comment(linker, "/fixed")
#pragma comment(linker, "/subsystem:windows")

#define NTSTATUS LONG

NTSYSAPI
NTSTATUS
NTAPI
NtCreateProcess(
    PHANDLE ProcessHandle,
    ACCESS_MASK DesiredAccess,
    PVOID ObjectAttributes, // POBJECT_ATTRIBUTES
    HANDLE InheritFromProcessHandle,
    BOOLEAN InheritHandles,
    HANDLE SectionHandle,
    HANDLE DebugPort,
    HANDLE ExceptionPort
  );

__declspec(naked) void __cdecl Main(void)
{
  NtCreateProcess(0, 0, 0, 0, 0, 0, 0, 0);
  MessageBox(0, L"This should never be seen! *booom*", 0, 0);
  ExitProcess(0);
}
Vielleicht solltet ihr mal die Software, die ihr benutzt, besser überprüfen. Ich ahne schon, was da abgeht ... ich denke mal, daß ihr eine Menge Progrämmchen ala Firewalls, AVs usw. oben habt. Ich habe eine saubere Installation all dieser OS. Lernt einfach mal einen BSOD zu entziffern, dann werdet ihr sehen, daß ihr mit euren Usermode-Progrämmchen das OS schwerlich crashen könnt (es gibt Ausnahmen, die aber auf falscher Parameterbearbeitung im KM beruhen und in NT 4.0 gehäuft auftraten, siehe w3seek's Kommentar). Wenn ihr im KM das OS crasht, dann seid ihr natürlich echte Helden. Weil das ist ach so schwer

So, und jetzt kommt ihr.

Nachtrag: Für alle die mir nicht glauben, hier das Disassemblat des Kompilats:
Code:
.text:00400400 start:
[color=red].text:00400400                 push   0
.text:00400402                 push   0
.text:00400404                 push   0
.text:00400406                 push   0
.text:00400408                 push   0
.text:0040040A                push   0
.text:0040040C                push   0
.text:0040040E                push   0
.text:00400410                 call   ds:NtCreateProcess[/color]
.text:00400416                 push   0
.text:00400418                 push   0
.text:0040041A                push   offset aThisShouldNeve ; "This should never be seen! *booom*"
.text:0040041F                push   0
.text:00400421                 call   ds:MessageBoxW
.text:00400427                 push   0
.text:00400429                 call   ds:ExitProcess
Noch'n Nachtrag: Ich habe das Programm aktualisiert, so daß es eine MessageBox anzeigt. Sollte ja nicht passieren bei einem BSOD. Außerdem habe ich es getestet auf Windows NT 4.0 ohne SP, auf Windows NT 3.51 (mit erstem "SP") und es kam in keinem Fall zu einem BSOD.
Ich lach mich jetzt voraussichtlich erstmal in den Schlaf und schaue mir morgen dann die Ausreden an

Im Anhang das Kompilat! Benutzung erfolgt auf eigene Gefahr!

Fazit: Weder auf NT 3.51, NT 4.0, 2000, XP noch 2003 kam es zu einem BSOD. Alle diese Systeme sind "sauber" (also keine wirklich ins System eingreifende Software).
Angehängte Dateien
Dateityp: rar bsodtest_408.rar (534 Bytes, 16x aufgerufen)
  Mit Zitat antworten Zitat