Какая функция Win API вызывается при старте сервиса?

Тема в разделе "WASM.WIN32", создана пользователем eugenevs, 4 май 2006.

  1. eugenevs

    eugenevs New Member

    Публикаций:
    0
    Регистрация:
    4 май 2006
    Сообщения:
    6
    Какая функция Win API вызывается при старте сервиса?

    Пробовал перехватывать

    CreateProcessAsUserW (A)

    CreateProcessWithLogonW (A)

    ZwCreateProcess

    ZwCreateProcessEx

    - запуск процессов из експлорера ловит, запуск сервисов - нет.

    Заранее спасибо.
     
  2. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
    Запускается через SCM (Service Control Manager), это компонент ядра. Приложения могут отдать команду на запуск службы с помощью StartServiceA/W, но автоматический запуск управляется вроде бы самим ядром, winlogon вроде бы никаких команд по запуску служб не выполняет. Но на счёт последнего могу и ошибаться.
     
  3. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    CreateService?
     
  4. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
    CreateService?

    Эта функция добавляет новую службу в систему, а нужно перезватить запуск.

    eugenevs

    А ты случаем не отлаживать собираешься? Тогда Image File Execution Options и OllyDbg туда ставишь либо юзаешь софт-айс.
     
  5. eugenevs

    eugenevs New Member

    Публикаций:
    0
    Регистрация:
    4 май 2006
    Сообщения:
    6
    Да, запуск через SCM я представляю.

    Меня интересует какую функцию надо перехватить чтобы отслеживать все запуски сервисов, аналогично ZwCreateProcessEx в XP и выше для приложений.

    StartService ? или что то на более низком уровне есть?
     
  6. eugenevs

    eugenevs New Member

    Публикаций:
    0
    Регистрация:
    4 май 2006
    Сообщения:
    6
    Да при запуске из SCM перехват StartService работает, а если запускать сервис как net start xxxxx , то нет.

    Как быть?
     
  7. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
    Там LoadLibrary используется. Адрес функции получается динамически. А ты как перехватываешь?

    Если у тебя XP, попытайся проверить sc start xxx. Там функции прямо статически и загружаются.

    Какой метод перехвата ты используешь?
     
  8. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




    Чтобы отследить запуск сервисов надо хукать тоже самое, но в процессе services.exe. Но следует учесть, что сервис может не иметь своего процесса (несколько сервисов в одном процессе). Универсальный способ только хук на SCM функции, так как на более низком уровне все сводиться к передаче LPC сообщений процессу services.exe который уже и обрабатывает старты. Хукать саму посылку сообщений не советую, т.к. они разные в разных системах.