Windows 7 登入架構全面重設計:動態 Winlogon 進程、LogonUI 認證介面、LSASS 驗證核心、ALPC/RPC 進程間通訊、MSV1_0 本地認證套件。本文記錄 WinDbg 核心除錯全過程,從進程樹到斷點設定、堆疊追蹤、記憶體監控,深度解析密碼驗證流程。
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 邏輯)
!process 0 0 ← 列出所有進程,記錄目標 Cid (如 winlogon.exe)
bp nt!KiFastCallEntry "j poi(@$teb+20) = 0xCID 'gc'" ← 替換實際 CID
bp winlogon!NdrClientCall2 (避免系統其他 RPC 雜訊)。WluiRequestCredentials (請求憑證、阻塞等待)WluiDisplayStatus (顯示狀態)WluiReportResult (回報結果)WluiDisplayRequestCredentialsError (顯示錯誤訊息)bp RPCRT4!Invoke → 單步追蹤至 authui.dll 實作函數。SspiCli!LsaLogonUser → RPC 呼叫 LSASS!SspiSrv!SspirLogonUser。CredProtect 加密,LSASS 端以 CredUnprotect 解密。ba w1 記憶體位址+0x3e 監控明文密碼在記憶體中出現瞬間 (需極高技巧與權限)。msv1_0!LsaApLogonUserEx2 完成 (SAM 資料庫雜湊比對)。StateMachineSetSignal 狀態機控制登入各階段轉換。g_xWinsrv_AccessNotify_Signal (無障礙按鈕)、密碼錯誤、智慧卡插入等。bcdedit /debug on),雙機透過 Serial/USB/1394/KDNET 連線。