I tried to write program which throws BSOD after clicking a button in Delphi:
procedure RtlAdjustPrivilege(var Privilege: Integer; var bEnablePrivilege: Boolean; var IsThreadPrivilege: Boolean; var PreviousValue: PBoolean) stdcall; external 'ntdll.dll' name 'RtlAdjustPrivilege';
procedure NtRaiseHardError(var ErrorStatus: UInt64;var NumberOfParameters: UInt64; var UnicodeStringParameterMask: UInt64; var IntPtr: UInt64; var ValidResponseOption: UInt64; var Response: PLongInt) stdcall; external 'ntdll.dll' name 'NtRaiseHardError';
var bl, a, b: Boolean;
var I: Integer;
var Res: LongInt;
var Pb: PBoolean;
var c, d, e, f, g: UInt64;
var PRes: PLongInt;
procedure TForm4.Button1Click(Sender: TObject);
begin
I := 19;
a := True;
b := False;
Pb := @bl;
RtlAdjustPrivilege(I, a, b, pb);
c := 3221225595;
d := 0;
e := 0;
f := 0;
g := 6;
PRes := @Res;
NtRaiseHardError(c,d,e,f,g, PRes);
end;
But after clicking button nothing happens, I wonder where I made the mistake, here is the code, I rewrite this answer in Delphi
EDIT:
Now code looks like this, but still nothing
procedure RtlAdjustPrivilege(var Privilege: Integer; var bEnablePrivilege: Boolean; var IsThreadPrivilege: Boolean; var PreviousValue: PBoolean) stdcall; external 'ntdll.dll' name 'RtlAdjustPrivilege';
procedure NtRaiseHardError(var ErrorStatus: UInt64;var NumberOfParameters: UInt64; var UnicodeStringParameterMask: Pointer; var IntPtr: Pointer; var ValidResponseOption: UInt64; var Response: PLongInt) stdcall; external 'ntdll.dll' name 'NtRaiseHardError';
var bl, a, b: Boolean;
var I: Integer;
var Res: LongInt;
var Pb: PBoolean;
var c, d, g: UInt64;
var e, f: Pointer;
var PRes: PLongInt;
procedure TForm4.Button1Click(Sender: TObject);
begin
I := 19;
a := True;
b := False;
Pb := @bl;
RtlAdjustPrivilege(I, a, b, pb);
c := $C000007B;
d := 0;
e := nil;
f := nil;
g := 6;
PRes := @Res;
NtRaiseHardError(c,d,e,f,g, PRes);
end;
Okay should be like this
function RtlAdjustPrivilege(Privilege: Integer; bEnablePrivilege: Boolean; IsThreadPrivilege: Boolean; PreviousValue: PBoolean): Integer stdcall; external 'ntdll.dll' name 'RtlAdjustPrivilege';
function NtRaiseHardError(ErrorStatus: UInt64; NumberOfParameters: Integer; UnicodeStringParameterMask: Pointer; IntPtr: Pointer; ValidResponseOption: Integer; Response: PLongInt): Integer stdcall; external 'ntdll.dll' name 'NtRaiseHardError';
var bl: Boolean;
var Res: LongInt;
procedure TForm4.Button1Click(Sender: TObject);
begin
RtlAdjustPrivilege(19, True, False, @bl);
NtRaiseHardError($C000007B,0,nil,nil,6,@Res);
end;