![]() |
Re: Wie BlueScreens erzeugen?
ich hab mal mit der api NtCreateProcess einen BlueScreen erzeugt auf WinXP, einfach aufrufen mit keinen paramentern (zb. einfach 0, nil usw übergeben)
Delphi-Quellcode:
NtCreateProcess( OUT PHANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN HANDLE ParentProcess, IN BOOLEAN InheritObjectTable, IN HANDLE SectionHandle OPTIONAL, IN HANDLE DebugPort OPTIONAL, IN HANDLE ExceptionPort OPTIONAL );
|
Re: Wie BlueScreens erzeugen?
Bedenke Olli:
Der Unterschied zwischen Ich und Er! Ich muss ja nicht immer dabei gewesen sein, wenn Er einen BSOD hatte.... Es sei denn, Morcsch ist schizophren. |
Re: Wie BlueScreens erzeugen?
Zitat:
|
Re: Wie BlueScreens erzeugen?
Daniel G, danke für die Erklärung.
Bin nicht schizophren. |
Re: Wie BlueScreens erzeugen?
Zitat:
|
Re: Wie BlueScreens erzeugen?
Zitat:
|
Re: Wie BlueScreens erzeugen?
Zitat:
|
Re: Wie BlueScreens erzeugen?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Keine Ahnung was ihr dort übergeben habt, aber ich habe folgendes kleine C-Programm:
Code:
Vielleicht solltet ihr mal die Software, die ihr benutzt, besser überprüfen. Ich ahne schon, was da abgeht :mrgreen: ... 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 :roll:
#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); } So, und jetzt kommt ihr. Nachtrag: Für alle die mir nicht glauben, hier das Disassemblat des Kompilats:
Code:
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.
.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 Ich lach mich jetzt voraussichtlich erstmal in den Schlaf und schaue mir morgen dann die Ausreden an :mrgreen: 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). |
Re: Wie BlueScreens erzeugen?
Och *schnief* keine Ausreden :mrgreen:
|
Re: Wie BlueScreens erzeugen?
Liste der Anhänge anzeigen (Anzahl: 1)
oh ne ausrede moment mal
Mein Code:
Delphi-Quellcode:
Mein OS:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { NtCreateProcess( OUT PHANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN HANDLE ParentProcess, IN BOOLEAN InheritObjectTable, IN HANDLE SectionHandle OPTIONAL, IN HANDLE DebugPort OPTIONAL, IN HANDLE ExceptionPort OPTIONAL ); } procedure TForm1.Button1Click(Sender: TObject); var h: THandle; ntx: function(ProcessHandle: PChar; DesiredAccess: PChar; ObjectAttributes: PChar; ParentProcess: PChar; InheritObjectTable: BOOL; SectionHandle:PChar; DebugPort: PChar; ExceptionPort: PChar): Integer; begin h := GetModuleHandle('ntdll.dll'); ntx := GetProcAddress(h, 'NtCreateProcess'); ntx(nil, nil, nil, nil, FALSE, nil, nil, nil); end; end. Windows XP SP2 Meine CPU: 3600 MHZ, 1 GB RAM und noch ein kleines bild als beweis |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz