Windows 服务子系统关键模块 · 技术解析
service_core.dll 是 Windows 服务子系统中的核心动态链接库,通常位于 System32 或产品安装目录,由服务宿主进程、svchost.exe 共享实例以及厂商自研守护进程加载。它以导出函数集合的形式,向调用方提供服务注册、状态维护与控制响应能力,是应用层服务代码与内核态服务控制管理器(SCM)之间的中间层。任何依赖该模块的程序,在进程初始化阶段都必须先完成导入表解析与重定位,才能进入业务逻辑。
维护服务状态机从 SERVICE_START_PENDING、SERVICE_RUNNING 到 SERVICE_STOP_PENDING、SERVICE_STOPPED 的完整迁移,校验每一次状态变更的合法性,并向 SCM 上报 checkpoint 与 wait hint。
注册 Service Control Handler,将 SCM 下发的 SERVICE_CONTROL_STOP、PAUSE、CONTINUE、INTERROGATE、SHUTDOWN 等控制指令路由至对应回调,确保服务能够响应停止、暂停与系统关机请求。
读写 HKLM\SYSTEM\CurrentControlSet\Services 下的键值,包括 ImagePath、Start、Type、ObjectName、DependOnService,据此实现启动类型判定与依赖关系解析。
构造 LocalSystem、NetworkService、LocalService 等账户的安全描述符,执行访问令牌校验与 SID 比对,防止低权限进程越权控制服务。
通过 ALPC、命名管道与 RPC 通道与服务宿主及 SCM 交换控制报文,并借助事件日志与 ETW 上报加载失败、超时、句柄异常等诊断信息。