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을 디버그하는 경우 대상 컴퓨터의 네트워크 인증이 제대로 작동하지 않습니다.