Какая функция Win API вызывается при старте сервиса? Пробовал перехватывать CreateProcessAsUserW (A) CreateProcessWithLogonW (A) ZwCreateProcess ZwCreateProcessEx - запуск процессов из експлорера ловит, запуск сервисов - нет. Заранее спасибо.
Запускается через SCM (Service Control Manager), это компонент ядра. Приложения могут отдать команду на запуск службы с помощью StartServiceA/W, но автоматический запуск управляется вроде бы самим ядром, winlogon вроде бы никаких команд по запуску служб не выполняет. Но на счёт последнего могу и ошибаться.
CreateService? Эта функция добавляет новую службу в систему, а нужно перезватить запуск. eugenevs А ты случаем не отлаживать собираешься? Тогда Image File Execution Options и OllyDbg туда ставишь либо юзаешь софт-айс.
Да, запуск через SCM я представляю. Меня интересует какую функцию надо перехватить чтобы отслеживать все запуски сервисов, аналогично ZwCreateProcessEx в XP и выше для приложений. StartService ? или что то на более низком уровне есть?
Да при запуске из SCM перехват StartService работает, а если запускать сервис как net start xxxxx , то нет. Как быть?
Там LoadLibrary используется. Адрес функции получается динамически. А ты как перехватываешь? Если у тебя XP, попытайся проверить sc start xxx. Там функции прямо статически и загружаются. Какой метод перехвата ты используешь?
Чтобы отследить запуск сервисов надо хукать тоже самое, но в процессе services.exe. Но следует учесть, что сервис может не иметь своего процесса (несколько сервисов в одном процессе). Универсальный способ только хук на SCM функции, так как на более низком уровне все сводиться к передаче LPC сообщений процессу services.exe который уже и обрабатывает старты. Хукать саму посылку сообщений не советую, т.к. они разные в разных системах.