Skip to content

7. System Initialization & Services (wininit.exe, services.exe) ​

Процесс инициализации (wininit.exe) запускается дочерним экземпляром smss.exe в изолированной Сессии 0. Он подготавливает оконную среду для фоновых процессов и запускает три демона: SCM (services.exe), LSASS (lsass.exe) и lsm.exe.


7.1 Архитектура Сессии 0 (Session 0 Isolation) ​

Начиная с Windows Vista, все системные службы изолированы в Сессии 0 без прямого доступа к экрану пользователя:

[ smss.exe (Session 0) ]
           │
           ▼
   [ wininit.exe ]
           │
           ├── CreateWindowStationW("WinSta0") -> Создание базовой оконной станции
           ├── CreateDesktopW("Winlogon") -> Защищенный десктоп
           │
           ├── [ 1. services.exe ] -> Service Control Manager (SCM)
           │       ├── Инициализация RPC-сервера диспетчера служб
           │       ├── Загрузка драйверов типа SERVICE_SYSTEM_START
           │       └── Запуск фоновых служб типа SERVICE_AUTO_START (RPCSS, DcomLaunch, EventLog)
           │
           ├── [ 2. lsass.exe ] -> Local Security Authority Subsystem (LSASS)
           │       ├── Инициализация базы SAM
           │       ├── Загрузка пакетов безопасности SSP/AP (Kerberos, NTLM, Schannel)
           │       └── Создание защищенных токенов доступа (Tokens / SIDs)
           │
           └── [ 3. lsm.exe ] -> Local Session Manager
                   └── Управление жизненным циклом сессий RDP и локальных терминалов

7.2 Декомпилированный C-код функций wininit и services ​

Целевая сборка: Windows 10 22H2 x64 (Build 10.0.19045.2965). Имена внутренних функций и RVA-адреса зависят от версии сборки.
Конвенция вызовов (x64 ABI): Аннотации конвенций вызовов (__fastcall, __stdcall, __cdecl) воспроизводят декораторы типов декомпилятора Hex-Rays / IDA Pro. В архитектуре Windows x64 действует единый системный Microsoft x64 ABI (передача параметров через RCX, RDX, R8, R9, выделение Shadow Space).


1. Точка входа wininit.exe: WinMain ​

WinMainwininit.exe
IRQL: Ring 3 (Win32)Session 0 OrchestratorInternal
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
Главная функция `wininit.exe`. Создает оконную станцию `WinSta0`, защищенный рабочий стол `Winlogon`, регистрирует статус критического системного процесса через `RtlSetProcessIsCritical` и последовательно запускает `services.exe`, `lsass.exe` и `lsm.exe`.

2. Диспетчер служб: SvcctrlMain / wmain (services.exe) ​

SvcctrlMainservices.exe
IRQL: Ring 3 (Win32)Service Control ManagerInternal
void __fastcall SvcctrlMain(void)
Кем вызывается:wmain
Главная функция Service Control Manager (SCM), вызываемая из `wmain`. Инициализирует базу данных служб `ScInitDatabase`, создает глобальный объект SCM `ScCreateScManagerObject`, поднимает RPC-интерфейс `ScEnableRpcInterface` (`\RPC Control\ntsvcs`), запускает UMDF-драйверы `InitWudfDriverManager`, настраивает события автозапуска `ScCreateAutoStartEvents` и инициирует запуск служб через `ScAutoStartServices`.

3. Автозапуск системных служб: ScAutoStartServices (services.exe) ​

ScAutoStartServicesservices.exe
IRQL: Ring 3 (Win32)Service SpawningInternal
unsigned int __fastcall ScAutoStartServices(int *pIsSetupInProgress)
Кем вызывается:SvcctrlMain
Выполняет упорядоченный запуск всех служб с типом запуска `SERVICE_AUTO_START` с учетом групп порядка загрузки (Service Group Order) и зависимостей между службами.

Interactive documentation of Windows NT (Build 10.0.19045.2965 x64) • Source Code