2010-09-19 63 views
1

我需要在全局鉤子鏈功能列表中的Windows,並得到其相應的應用程序,如果有可能通過全局鉤子鏈。但我不知道如何從全局鉤鏈中檢索信息。檢索窗口

據我所知,沒有Windows API這樣做,所以我認爲我必須通過解析鉤鏈鏈接列表找到它們。問題是我不知道這個鏈接列表的數據結構,它的開始地址。

有誰知道Windows如何管理其全局鉤子鏈?我見過

+0

據我所知,沒有真正_global_鉤鏈。此外,即使桌面上的鉤鏈也不與應用程序關聯。他們在注入的DLL中調用DLL函數。 – MSalters 2010-09-20 07:38:49

+0

看看漢斯的鏈接。似乎在Windows中存在一個真正的全局鉤子鏈。 – Roozbeh 2010-09-21 18:22:55

+2

沒有記錄的方式來做到這一點。如果您開始挖掘無證材料,那麼您可能會停止在未來版本的Windows中工作。 (你也會給Windows兼容團隊做惡夢。)爲什麼你需要知道這個呢? – 2011-09-05 15:16:34

回答

3

一種方法是顯示在此blog post。它被this code引用(注意慢速服務器)。當然,瘋狂的東西,不知道這將不同的Windows版本之間移植。

+0

感謝您的幫助。我已經看過博客,它給了我一個概述,但我認爲代碼可能更有用。現在我正嘗試讀取彙編代碼並在win7下構建它。 – Roozbeh 2010-09-21 18:07:34

0

,而不是試圖走內部的Windows結構,你知道,所有窗口掛鉤必須有一個與之相關的加載模塊已被注入到目標進程;如果您試圖確保您的應用程序未被掛鉤,請枚舉已加載的模塊列表並查找不應存在的模塊。

+0

這將如何幫助你,你應該如何確定'假設'在那裏?如果我正確地解釋了他的問題,他想要的函數指針本身 – 2011-09-05 16:06:29

+0

運行的應用程序,讓你的機器上的模塊列表,那麼這些都是應該在那裏的人。 – 2011-09-05 18:06:53

+0

有沒有辦法知道'假設'在那裏。有很多應用程序在全局注入不執行窗口掛鉤的DLL。 – 2011-09-05 22:27:19