SetWindowsHookEx

Тема в разделе "WASM.WIN32", создана пользователем Keith, 5 фев 2005.

  1. Keith

    Keith New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    13
    Мне нужно повесить хук на все потоки определенного процесса, включая вновь создаваемые потоки.

    Что я придумал: вешать хук на все потоки в системе, а в DllMain() определять GetProcessName()'ом имя процесса и если это нужный процесс, то оставаться и следить, если не нужный, то выгружаться из него. Но я не знаю как корректно осуществить процесс выгрузки.

    Может быть у кого-то есть более практичный план реализации?
     
  2. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    мб стоит перебирать все процессы в системе, если это нужный нам процесс, то внедряем нужный нам код и т.д.?
     
  3. Keith

    Keith New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    13
    А как перебрать все процессы в системе? И как получить хэндл потока этого процесса, у которого есть очередь сообщений?

    Может быть перебрать все окна в системе и у каждого получить хэндл процесса? Но это, вроде бы, не сработает, если программа свернута в систрей.

    А можно как-нибудь запускать мой exe'шник при запуске определенного exe'шник? Только без слежений, но чтобы работало с любым exe'шником 100%. Изменять таблицу импорта нельзя.
     
  4. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    NtQuerySystemInformation есть для этого, либо юзать ToolHelp ф-ции. Почему нельзя IAT изменять?
     
  5. Keith

    Keith New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    13
    NtQuerySystemInformation не поддерживается win9x.

    IAT нельзя изменять потому, что задание такое.

    А за ToolHelp функции спасибо, правда я уже сам до них докопал.

    А не подскажете, как сделать запуск своего exe'шника, сразу после запуска определенного exe'шника? Определенный exe'шник изменять нельзя, работать должно в 9x, 2000 и XP.
     
  6. Keith

    Keith New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    13
    Вот еще какая проблема. Все потоки нужного процесса я могу перебрать, а как определить какой из потоков имеет окно? Чтобы повесить хук надо окно или нет? Или можно на любой поток вешать?
     
  7. Keith

    Keith New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    13
    Забыл сказать, что hook я вешаю на вызов API-функции.