调试 WinLogon

WinLogon 是一个用户模式进程,用于处理交互式用户登录和注销的任务,并处理 CTRL+ALT+DELETE 的所有实例。

从内核调试器控制 NTSD

调试 WinLogon 的最简单方法是使用 NTSD 并从内核调试器控制它

启用 WinLogon 调试

由于需要将用户模式调试器输出重定向到内核调试器,因此需要设置内核调试连接。 请参阅 设置调试

若要将调试器附加到 WinLogon,必须完成注册表,以便从启动进程开始调试。 若要设置 WinLogon 调试,请将 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\WinLogon.EXE\Debugger 设置为:

ntsd -d -x -g 

-d 选项将控制权传递给内核调试器。 -x 选项会导致调试器将访问冲突捕获为第二次机会异常。 -g 选项会导致 WinLogon 进程在附件之后运行。 如果要在Winlogon.exe开始前开始调试 (例如,如果要设置初始断点) ,请不要添加 -g

此外,应将 winlogon.exe 键下的 GlobalFlag 值设置为REG_DWORD“0x000400F0”。 这会设置堆检查和FLG_ENABLE_KDEBUG_SYMBOL_LOAD。 但是,由于第二个标志仅影响内核调试器,因此在启动调试器之前,还必须将符号复制到目标计算机。

注册表更改需要重新启动才能生效。

执行调试

下次重新启动后,调试器将自动进入 WinLogon。

有关如何继续的说明,请参阅 从内核调试器控制User-Mode调试器

你必须将符号路径设置为主计算机上的某个位置或网络上的某个其他位置。 调试 WinLogon 时,目标计算机上的网络身份验证将无法正常工作。