黃易群俠傳M脫機外掛應用程式黃易神行
5204
6

[分享] 關於外掛HOOK的模擬編程

Kingsto 發表於 2009-3-23 14:00:34 | 只看該作者 回帖獎勵 |正序瀏覽 |
關於外掛HOOK的模擬編程
前言
  Windows系統中鉤子具有相當強大的功能,通過這種技術可以對幾乎所有的Windows 系統中的消息進行攔截、監視、處理。這種技術可以廣泛應用於各種軟體,尤其是需要有監控、自動記錄等對系統進行監測功能的軟體。本文針對這個專題進行了探討,希望可以為讀者朋友們起到抛磚引玉的作用。
  一、鉤子的機制及類型
  Windows的應用程式都是基於消息驅動的,應用程式的操作都依賴於它所得到的消息的類型及內容。鉤子與Dos中斷截獲處理機制有類似之處。鉤子(Hook)Windows消息處理機制的一個平臺,通過安裝各種鉤子,應用程式可以在上面設置副程式以監視指定視窗的某種消息,並且當消息到達目標視窗之前處理它。
  在Windows中,鉤子有兩種,一種是系統鉤子(RemoteHook),它對消息的監視是整個系統範圍,另一種是線程鉤子(LocalHook),它的攔截範圍只有進程內部的消息。對於系統鉤子,其鉤子函數(HookFunction)應在Windows系統的動態連結程式庫(DLL)中實現,而對於線程鉤子來說,鉤子函數可以在DLL之中實現,也可以在相應的應用程式之中實現。這是因為當開發人員創建一個鉤子時,Windows先在系統記憶體中創建一個資料結構,該資料結構包含了鉤子的相關資訊,然後把該結構體加到已經存在的鉤子鏈表中去,並且新的鉤子將排在老的鉤子的前面。當一個事件發生時,如果安裝的是一個局部鉤子,當前進程中的鉤子函數將被調用。如果是一個遠端鉤子,系統就必須把鉤子函數插入到其他進程的位址空間,要做到這一點就要求鉤子函數必須在一個動態連結程式庫中,所以如果想要使用遠端鉤子,就必須把該鉤子函數放到動態連結程式庫中去。對於鉤子所監視的消息類型來說,Windws一共提供了如下幾種類型:如表1所示:
表一、Windows消息類型



消息類型常量標識

消息類型
適用範圍
WH_CALLWNDPROC
4
發給視窗的消息
線程或系統
WH_CALLWNDPROCRET
12
視窗返回的消息
線程或系統
WH_CBT
5
視窗變化、焦點設定等消息
線程或系統
WH_DEBUG
9
是否執行其他HookHook
線程或系統
WH_FOREGROUNDIDLE
11
前臺程式空閒
線程或系統
WH_GETMESSAGE
3
投放至消息佇列中的消息
線程或系統
WH_JOURNALPLAYBACK
1
將所記載的消息進行重播
系統
WH_JOURNALRECORD
0
監視並記錄輸入消息
系統
WH_KEYBOARD
2
鍵盤消息
線程或系統
WH_MOUSE
7
滑鼠消息
線程或系統
WH_MSGFILTER
-1
功能表捲軸、對話方塊消息
線程或系統
WH_SHELL
10
外殼程式的消息
線程或系統
WH_SYSMSGFILTER
6
所有線程的功能表捲軸、對話方塊消息
系統

  二、VB編程中鉤子的實現
  (一)鉤子函數(HOOK Function)的格式。Hook Function實際上是一個函數,如果是系統鉤子,該函數必須放在動態連結程式庫中。該函數有一定的參數格式,在VB中如下:
Private Function HookFunc(ByVal nCode As LongByVal wParam As LongByVal lParam As Long)As Long

  其中,nCode代表是什麼情況之下所產生的鉤子,隨鉤子的不同而有不同組的可能值;參數wParamlParam傳回值包括了所監視到的消息內容,它隨Hook所監視消息的種類和nCode的值不同而不同。對於用VB所設置的鉤子函數,一般的框架形式如下:
Private Function HookFunc(ByVal nCode As LongByVal wParam As LongByVal lParam As Long)As Long
 Select case of nCode
  CSOL木馬網站●e<0:hookfunc=callnexthookex(hHookFuncnCodewParamlParam)
  case1:處理過程1:HookFunc=X1
  case2:處理過程2:HookFunc=X1
  ……
 end select
end Function
收藏收藏 分享分享 讚 幹 分享分享 FB分享
回覆

使用道具 舉報


隨火 當前離線
UID
1294953
熱心
214 值
嘉獎
0 次
違規
0 次
在線時間
6 小時
經驗
14 點
積分
14
精華
0
最後登錄
2011-4-5
閱讀權限
10
註冊時間
2009-8-20
論壇幣
78 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 1
7
隨火 2009-9-1 09:37:43
謝謝你無私的分享
寫的好詳細喔
回覆

使用道具 舉報

wskj 當前離線
UID
1292496
熱心
38 值
嘉獎
0 次
違規
0 次
在線時間
9 小時
經驗
33 點
積分
33
精華
0
最後登錄
2009-9-4
閱讀權限
20
註冊時間
2009-8-16
論壇幣
66 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
6
wskj 2009-8-16 17:32:38
這東西的確很難懂啊               YCT47B
回覆

使用道具 舉報

maid2009 當前離線
UID
1280577
熱心
13 值
嘉獎
0 次
違規
0 次
在線時間
1 小時
經驗
13 點
積分
13
精華
0
最後登錄
2009-7-30
閱讀權限
10
註冊時間
2009-7-30
論壇幣
26 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 1
5
maid2009 2009-8-4 08:53:54
好深奧,應該努力把它看懂YCT42B YCT42B YCT45B YCT45B YCT45B
回覆

使用道具 舉報

jaydiy 當前離線
UID
1140322
熱心
50 值
嘉獎
0 次
違規
0 次
在線時間
17 小時
經驗
54 點
積分
54
精華
0
最後登錄
2009-12-16
閱讀權限
20
註冊時間
2009-2-22
論壇幣
533 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
jaydiy 2009-8-2 18:22:57
謝謝分享~可以監視windows的訊息
                                            
好像有助益寫出更好的程式
回覆

使用道具 舉報

superemm 當前離線
UID
1022928
熱心
10 值
嘉獎
0 次
違規
0 次
在線時間
0 小時
經驗
6 點
積分
27
精華
0
最後登錄
2018-8-7
閱讀權限
20
註冊時間
2008-9-14
論壇幣
5 幣
聯合幣
6 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
superemm 2009-7-6 19:14:49
謝謝老大~~~~~~~~~~~~~~~~~~~~~~~~~
回覆

使用道具 舉報

卍小乂樟卍 當前離線
UID
1063218
熱心
402 值
嘉獎
0 次
違規
0 次
在線時間
503 小時
經驗
387 點
積分
387
精華
0
最後登錄
2013-7-14
閱讀權限
25
註冊時間
2008-11-4
論壇幣
5 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
800 點
查看詳細資料
Rank: 3
卍小乂樟卍 2009-7-4 15:51:01
謝謝大大的無私分享YCT45B
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊


手機版 | Archiver | 外掛聯合國

GMT+8, 2024-12-1 07:55 , Processed in 0.058524 second(s), 19 queries , Memcache On.

版權說明:
  本站不會製作、經銷、代理外掛程式。僅免費提供外掛程式下載前之掃毒及掃木馬等安全檢測驗證,協助會員遠離盜號危險程式。本站所有資料均來自網際網路收集整理,說明文字暨下載連結轉載自原程 式開發站。站上出現之公司名稱、遊戲名稱、程式等,商標及著作權,均歸各公司及程式原創所有,本站程式所有權歸外掛聯合國所有。本程式所有權歸外掛聯合國所有.......

回頂部
第二步?
第三步?