使用Windows鉤子擷取丟失的密碼

來源:互聯網
上載者:User

簡介

幾年前我在CodeGuru 上下載了一個叫 Eureka的程式,如果你忘記了密碼,你可以用程式把密碼“取”回來。它不是密碼破解程式,相反,它利用了一個Windows的安全性漏洞來拷貝另外一個運行中的程式的密碼。我對這個程式高度興趣,決定寫一個自己的版本。後來,Windows 2000 發布,我失望地發現,微軟修補了那個漏洞,這樣一來那個程式在Windows 2000上也就不靈了。經過一番嘗試,我終於找到一個方法拷貝任何在32-位Windows 系統上運行程式的密碼。

本文例子程式:

使用方法:

PasswordSpy程式的使用非常簡單。你只要運行包含忘記了密碼的程式,再運行PasswordSpy。然後將放大鏡拖動到密碼輸入欄位上,PasswordSpy則會將密碼顯示出來。PasswordSpy程式並沒有惡意,開發它的目的只是想把密碼找回來,該程式在Win95/98 /ME and WinNT/2K/XP/Windows 2003 上測試通過。

功能說明:

除了PasswordSpy本身的用途之外,它還示範了一些有用和有趣的代碼:

單一實例應用——如果使用者啟動了PasswordSpy的第二個執行個體,系統會找到第一個執行個體,並在所有視窗的最最上層顯示出PasswordSpy介面;

Always on top——總是在最頂層,只用一行代碼就可以在你的程式中啟動和禁用這個功能;

進程間通訊——PasswordSpy 使用幾種形式的IPC,包括WM_COPYDATA訊息以及記憶體對應檔;

設定視窗鉤子——為了在Windows 2000/Windows XP中吸取密碼,你得使用在遠程進程中置入一個鉤子。

代碼實現細節:

到目前為止,PasswordSpy 程式最有趣的部分其實是使用 SetWindowsHookEx API.函數設定Windows 鉤子。利用該函數你可以將鉤子安裝到作業系統中或者某個特定的進程中。鉤子的種類有很多種,每種鉤子作用也不盡相同,用來監視特定的一組事件。當某一類事件發生時,鉤子代碼被調用。PasswordSpy使用WH_GETMESSAGE鉤子,它監視對GetMessage 和PeekMessage 的調用。關於鉤子更詳細的資訊請參考MSDN庫的SetWindowsHookEx。

我在網上、書本以及MSDN上找到幾個有關鉤子的例子,每個都至少有一個Bug。本文我用自己的方案解決了這些問題。使用Windows鉤子最難的部分是妥善儲存鉤子控制代碼。設定鉤子之前,你需要做兩件事情:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.