Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Win7 登入流程核心原理與 WinDbg 核心除錯實戰:Winlogon、LogonUI、LSASS、RPC、MSV1_0

編輯:Windows 7 系統介紹

Windows 7 登入架構全面重設計:動態 Winlogon 進程、LogonUI 認證介面、LSASS 驗證核心、ALPC/RPC 進程間通訊、MSV1_0 本地認證套件。本文記錄 WinDbg 核心除錯全過程,從進程樹到斷點設定、堆疊追蹤、記憶體監控,深度解析密碼驗證流程。

Windows 7 登入核心進程樹

smss.exe
  ├─ autochk.exe
  ├─ smss.exe (Session 0)
  │    ├─ csrss.exe
  │    ├─ wininit.exe
  │    │    ├─ services.exe → 開機自啟動服務
  │    │    └─ lsass.exe
  │    └─ lsm.exe
  └─ smss.exe (Session 1)
       ├─ csrss.exe
       ├─ winlogon.exe
       │    └─ LogonUI.exe
       │         └─ authui.dll (真正認證 UI 邏輯)

認證流程四階段

  1. Winlogon 啟動 LogonUI 等待使用者輸入憑證。
  2. Winlogon 透過 ALPC 通知 LSASS 使用者嘗試登入。
  3. LSASS 依序查詢認證套件 (Security Packages):
    首要為 MSV1_0.dll (本地 SAM 資料庫驗證),次為 Kerberos、Schannel、WDigest 等。
  4. LSASS 返回驗證結果 給 Winlogon,成功則建立存取權杖啟動使用者 Shell (explorer.exe)。

WinDbg 核心除錯關鍵技巧

穩定附加至目標進程

!process 0 0  ← 列出所有進程,記錄目標 Cid (如 winlogon.exe)
bp nt!KiFastCallEntry "j poi(@$teb+20) = 0xCID 'gc'"  ← 替換實際 CID

追蹤 Winlogon ↔ LogonUI (authui.dll) RPC 互動

  • Winlogon 端:bp winlogon!NdrClientCall2 (避免系統其他 RPC 雜訊)。
  • 命中後觀察關鍵 RPC 介面函數:
    WluiRequestCredentials (請求憑證、阻塞等待)
    WluiDisplayStatus (顯示狀態)
    WluiReportResult (回報結果)
    WluiDisplayRequestCredentialsError (顯示錯誤訊息)
  • LogonUI 端:bp RPCRT4!Invoke → 單步追蹤至 authui.dll 實作函數。

追蹤 Winlogon ↔ LSASS (SSPI/RPC) 密碼驗證

  • Winlogon 調用 SspiCli!LsaLogonUser → RPC 呼叫 LSASS!SspiSrv!SspirLogonUser。
  • 密碼在傳輸中經 CredProtect 加密,LSASS 端以 CredUnprotect 解密。
  • 斷點 ba w1 記憶體位址+0x3e 監控明文密碼在記憶體中出現瞬間 (需極高技巧與權限)。
  • 最終驗證由 msv1_0!LsaApLogonUserEx2 完成 (SAM 資料庫雜湊比對)。

狀態機維護登入流程

  • Winlogon 使用 StateMachineSetSignal 狀態機控制登入各階段轉換。
  • 關鍵訊號:g_xWinsrv_AccessNotify_Signal (無障礙按鈕)、密碼錯誤、智慧卡插入等。

⚠️ 僅供學術研究與系統級除錯

  • 記憶體明文密碼追蹤屬高敏感操作,**嚴禁用於惡意用途**。
  • 核心除錯需開啟核心除錯模式 (bcdedit /debug on),雙機透過 Serial/USB/1394/KDNET 連線。
  • 生產環境嚴禁進行此類侵入式除錯。
Copyright © Windows教程網 All Rights Reserved