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).