По каким признакам из реестра SvcHost.exe запускает некоторые сервисы с типом "Share process" (0x20) в отдельном процессе с аргументом "-s <Имя-Сервиса>" в конце командной строки?
Пример:
— сервис LSM запускается в отдельном процессе,
— а сервисы DcomLaunch, Power и ещё несколько — в одном общем процессе.
Или признак запуска SvcHost.exe берёт не из реестра, а при запуске из .DLL через какие-то параметры?
Интересуют только сервисы с типом "Share process" (0x20)!
Re: Запуск сервисов SvcHost.exe в отдельном процессе
Здравствуйте, nodir.temir, Вы писали:
NT>По каким признакам из реестра SvcHost.exe запускает некоторые сервисы с типом "Share process" (0x20) в отдельном процессе с аргументом "-s <Имя-Сервиса>" в конце командной строки?
NT>Или признак запуска SvcHost.exe берёт не из реестра, а при запуске из .DLL через какие-то параметры?
Ключ командной строки прописан в реестре в параметре ImagePath в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\имя службы
Всего существует три ключа:
-k — запуск в групповом режиме
-s — запуск единичного процесса
-p — режим защиты от атак на уязвимости
Объединение в группы описано в реестре в HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost
Здравствуйте, Maniacal, Вы писали:
NT>>По каким признакам из реестра SvcHost.exe запускает некоторые сервисы с типом "Share process" (0x20) в отдельном процессе с аргументом "-s <Имя-Сервиса>" в конце командной строки?
NT>>Или признак запуска SvcHost.exe берёт не из реестра, а при запуске из .DLL через какие-то параметры?
M>Ключ командной строки прописан в реестре в параметре ImagePath в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\имя службы M>Всего существует три ключа: M>-k — запуск в групповом режиме M>-s — запуск единичного процесса M>-p — режим защиты от атак на уязвимости M>Объединение в группы описано в реестре в HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost
M>https://ab57.ru/svchost.html
Ключ "-s" никогда явно не задаётся в реестре в параметре ImagePath.
SvcHost.exe сам добавляет ключ "-s" при запуске сервиса группового режима, но в отдельном процессе.
Ещё раз, пример с сервисами LSM и DcomLaunch.
В реестре они имеют одинаковые настройки.
В "HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost" они объединены в одну группу "DcomLaunch" как:
"
Power
LSM
BrokerInfrastructure
PlugPlay
DcomLaunch
SystemEventsBroker
DeviceInstall
".
Но при этом LSM запускается в отдельном процессе как "C:\Windows\system32\svchost.exe -k DcomLaunch -p -s LSM".
А остальные сервисы группы — в одном "расшаренном" процессе.
Re[3]: Запуск сервисов SvcHost.exe в отдельном процессе
Здравствуйте, nodir.temir, Вы писали:
NT>Ещё раз, пример с сервисами LSM и DcomLaunch. NT>В реестре они имеют одинаковые настройки. NT>... NT>Но при этом LSM запускается в отдельном процессе как "C:\Windows\system32\svchost.exe -k DcomLaunch -p -s LSM". NT>А остальные сервисы группы — в одном "расшаренном" процессе.
У сервисов могут быть другие "индивидуальные" настройки, например SID (per-service SID, write-restricted SID, etc) или набор привилегий.
Поэтому SCM запускает их в отдельных процессах. Например, сравните вывод команды "sc qprivs" (вывод списка привилегий) для служб LSM и
Power — он различается.
Re[4]: Запуск сервисов SvcHost.exe в отдельном процессе
Здравствуйте, okman, Вы писали:
O>У сервисов могут быть другие "индивидуальные" настройки, например SID (per-service SID, write-restricted SID, etc) или набор привилегий. O>Поэтому SCM запускает их в отдельных процессах. Например, сравните вывод команды "sc qprivs" (вывод списка привилегий) для служб LSM и O>Power — он различается.
Да, RequiredPrivileges у LSM пустой оказывается.
Ещё LSM зависит от DComLaunch.
Видимо, ещё есть факторы для запуска в отдельном процессе.
Ладно, всем спасибо.