所謂「星號密碼查看器」(如 Bullet)能將輸入框中的掩碼(●●●)還原為明文。實測發現:對普通網頁、傳統軟體有效;對 QQ 等加強保護的輸入框則無法獲取明文,甚至無法捕獲輸入行為。
密碼輸入框本質是一個 Windows 子窗口,其顯示星號是因為設置了 EM_SETPASSWORDCHAR 消息屬性。查看器的核心手段是:
SetWindowsHookEx),監聽用戶點擊行為。GetClassName 驗證類名為 "Edit" 且樣式含 ES_PASSWORD)。EM_SETPASSWORDCHAR 消息,將密碼字符設置為 0(即移除掩碼),使明文顯示。WM_GETTEXT)獲取明文密碼。EM_SETPASSWORDCHAR 機制。ES_PASSWORD 之外的保護(如輸入法保護模式),阻止外部消息修改屬性或讀取文本。密碼在本地輸入框以明文存在於進程內存中,僅顯示時被掩碼。網絡傳輸時應經過 TLS 加密,查看器僅攻擊「本地顯示層」,而非網絡傳輸層。
ES_PASSWORD 並子類化窗口過濾 EM_SETPASSWORDCHAR 消息。理解底層消息機制,才能真正看清「星號背後的真相」,也能構建更安全的輸入體驗。