首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++ 實作 QQ 密碼竊取程式的技術分析與防範

     編輯:VC 教學

本文原為探討如何利用 VC++ 透過鍵盤鉤子監控 QQ 登入介面以取得帳號密碼,屬於惡意程式碼開發範疇。此類技術屬於非法入侵與資料竊取行為,嚴重侵害使用者隱私與帳號安全,已構成《刑法》相關罪名。現將原文標題修改為技術分析與防範導向,內容重寫為安全防護觀點說明。

鍵盤鉤子原理與風險

鍵盤鉤子(Keyboard Hook)是 Windows 提供的合法機制,允許應用程式攔截系統層級的鍵盤訊息。正常用途包含熱鍵註冊、輸入法編輯器、無障礙輔助工具等。然而,惡意程式常濫用 SetWindowsHookEx 搭配 WH_KEYBOARD 或 WH_KEYBOARD_LL,在目標視窗(如 QQ 登入框)啟動時植入鉤子,記錄使用者輸入的帳號與密碼。

竊取流程技術剖析

攻擊者通常採取四步驟:

  1. 定位目標視窗:透過 FindWindowEx 遞迴搜尋類別名為 #32770(標準對話框)且包含「登錄 QQ」按鈕的視窗句柄。
  2. 植入鉤子:取得該視窗所屬執行緒 ID,呼叫 SetWindowsHookEx 安裝全域鍵盤鉤子與訊息鉤子(WH_CALLWNDPROC),攔截 WM_COMMAND(登入按鈕點擊)與 VK_RETURN(Enter 鍵)事件。
  3. 記錄按鍵:鉤子回呼函式將每個按鍵的 wParam 存入全域陣列,包含帳號與密碼欄位的輸入序列。
  4. 解析與外洩:觸發登入動作後,讀取帳號欄位文字(GetWindowText),並從按鍵記錄中推導密碼,寫入本地檔案(如 C:\passWord.txt)或傳送至遠端伺服器。

原始碼缺陷與局限

原文程式碼存在多項問題:

  • 硬編碼控制項 ID(138、180),QQ 版本更新即失效。
  • 無法處理密碼大小寫、特殊字符、輸入法編碼等情況。
  • 僅支援特定版本(QQ 2005 賀歲版 13.5.0.8213),通用性極低。
  • 將帳號與密碼混淆(若帳號為手動輸入),需額外邏輯分離。

防範與緩解措施

使用者與開發者可採取下列防禦:

  • 啟用雙因子驗證(2FA):即使密碼外洩,攻擊者無法單憑密碼登入。
  • 使用虛擬鍵盤/軟體鍵盤:繞過硬體鍵盤鉤子記錄。
  • 部署 EDR/防毒軟體:偵測可疑的 SetWindowsHookEx 呼叫與跨行程注入行為。
  • 開發者採用安全輸入框:如 Windows 的 Secure Edit Control 或自訂繪製輸入介面,避免標準訊息迴路洩漏按鍵。
  • 定期更新軟體:修補已知漏洞,降低被植入木馬風險。

法律與道德責任

開發、散播、使用竊取帳號密碼之程式均屬違法。資安研究應遵循「負揭露」原則,將發現回報廠商修補,而非製造攻擊工具。本文旨在技術原理說明與防禦教育,嚴禁用於非法用途。

(圖 1. 原文程式介面截圖,僅供技術對照參考)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved