
06.08.2007, 21:04
|
|
Постоянный
Регистрация: 09.11.2006
Сообщений: 639
С нами:
10265091
Репутация:
541
|
|
Код:
library Hook;
uses
Windows,
AdvApiHook,
NativeAPI;
var
TrueZwTerminateProcess:Function (ProcessHandle:dword;
ExitStatus:dword):NTStatus;stdcall;
//
function NewZwTerminateProcess (ProcessHandle:dword;
ExitStatus:dword):NTStatus;stdcall;
var
pid: DWORD;
MyHandle: DWORD;
begin
pid:=GetProcessId('Explorer.EXE'); //так для примера :)
MyHandle:=OpenProcess(PROCESS_ALL_ACCESS, false,pid);
if MyHandle = ProcessHandle
then
MessageBox(0, 'Нашёлся :)', 'Проверка', MB_ICONINFORMATION or MB_OK)
else
TrueZwTerminateProcess(ProcessHandle, ExitStatus);
end;
procedure LibraryProc (Reason : integer);
begin
case Reason of
DLL_PROCESS_ATTACH : //событие присоединения к процессу
begin
//ставим хук
HookProc('ntdll.dll', 'ZwTerminateProcess', @NewZwTerminateProcess, @TrueZwTerminateProcess);
end;
DLL_PROCESS_DETACH :
//Отсоединение от процесса
// снимаем хук
begin
UnhookCode(@TrueZwTerminateProcess);
end;
end;
end;
begin
DllProc := LibraryProc;
DllProc (DLL_PROCESS_ATTACH);
end.
|
|
|