Показать сообщение отдельно

  #455  
Старый 06.08.2007, 21:04
LEE_ROY
Постоянный
Регистрация: 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.
 
Ответить с цитированием