Глобальный hook с системного процесса

Тема в разделе "WASM.WIN32", создана пользователем Uvarov, 21 мар 2008.

  1. Uvarov

    Uvarov New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    8
    Почему я немогу запустить глобальный хук с длл которая подгружается к winlogon. Если загрузить длл в другой процесс (GUI), например в explorer то все ок, т.е хук работает и длл проекцир. в другие процессы, а с winlogon, svchost и другими сист. процесами не хочет.

    Код (Text):
    1. procedure DLLEntryPoint(dwReason: DWord);
    2. begin
    3. case dwReason of
    4. DLL_PROCESS_ATTACH:
    5.   begin
    6.   SetHook; //Процедура установки хука
    7.   ....
     
  2. mAgoja

    mAgoja New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    114
    Адрес:
    Ukraine
    свитани код...
     
  3. dendi

    dendi New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    233
    > procedure DLLEntryPoint(dwReason: DWord);
    параметров больше и это не fastcall...
     
  4. Selah

    Selah New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2007
    Сообщения:
    258
    Ну что, никто не может помочь?????
     
  5. Selah

    Selah New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2007
    Сообщения:
    258
    Код (Text):
    1. Function MessageProc(code : integer; wParam : word;lParam : longint) : longint; stdcall;
    2. begin
    3. CallNextHookEx(hook, Code, wParam, lparam);
    4. Result:=0;
    5. end;
    6.  
    7. Procedure SetGlobalHook();
    8. begin
    9. hook:=SetWindowsHookEx(WH_GETMESSAGE, @MessageProc, HInstance,0);
    10. Sleep(INFINITE);
    11. end;
    12.  
    13. Procedure SetHook();
    14. var
    15. hMutex: dword;
    16. TrId: dword;
    17. begin
    18. hMutex := CreateMutex(nil, false, 'my_hook');
    19. if GetLastError = 0 then
    20. CreateThread(nil, 0, @SetGlobalHook, nil,0, TrId) else
    21. CloseHandle(hMutex);
    22. end;
     
  6. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    1. После установки хука длл проецируется на НОВЫЕ процессы твоего десктопа, СОЗДАННЫЕ УЖЕ ПОСЛЕ УСТАНОВКИ ХУКА. Winlogon и другие системные процессы, а так же все процессы, созданые ранее твоим хуком не заденутся.
    Хочешь хукать сис-процессы - проецируй либу вручную.

    2. Вруби отладочные привилегии, чтобы получить доступ к системным процессам.


    Код (Text):
    1. HANDLE hToken;
    2. TOKEN_PRIVILEGES tp;
    3. _LUID luid;
    4. ULONG x;
    5.  
    6.         //  ENABLE DEBUG PRIVILEGE
    7.         OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
    8.         LookupPrivilegeValueA(0,"SeDebugPrivilege",&luid);
    9.         tp.PrivilegeCount= 1;
    10.         tp.Privileges[0].Luid = luid;
    11.         tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    12.         AdjustTokenPrivileges(hToken,0,&tp,sizeof(tp),0,&x);
     
  7. Rascalspb

    Rascalspb New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    46
    Адрес:
    СПб
    не согласен. будут похуканы все процессы, у которых есть цикл GetMessage DispatchMessage. Даже ранее созданные
     
  8. Selah

    Selah New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2007
    Сообщения:
    258
  9. Uvarov

    Uvarov New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    8
    zoool
    Меня не верно поняли. Хук запускается с Длл. Т.е winlogon подгружает мою длл, а длл должна запустить хук, и сама себя проец. в другие процессы (это в теории), но на практике с winlogon и другими сист. процессами это не пашет. А с explorer, например, все ок. Как только длл подгружается к нему, срабативает глобал хук и длл проекц. вл все GUI процессы.
     
  10. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    Тогда привилегии отладочные вруби
    код я скинул

    Rascalspb
    хм..не знал... спс..
     
  11. multiarc

    multiarc New Member

    Публикаций:
    0
    Регистрация:
    6 фев 2008
    Сообщения:
    21
    Адрес:
    РБ Жодино
    Юзай прямой инжект, в ХР со включёнными отлабочными привилегиями всё пашет... VirtualAllocEx+CreateRemoteThread
     
  12. Uvarov

    Uvarov New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    8
    Та не катит инжект. Эт паливно)) Надо глобальный хук.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Наоборот, GUI-хуки это плохой метод и палево.
     
  14. Uvarov

    Uvarov New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    8
    Оно то так, но если сделать в коде инжект, то будет ругатся евристика антивир. на готовый экзе
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Скока инжетил, ещё не разу антивири не ругались.
     
  16. Uvarov

    Uvarov New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    8
    смотря в какой процесс делать инжект
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Если не в процесс антивиря, то работает.