麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > 易語言 > 正文

詳解易語言的鉤子(鉤子HOOK與APIHOOK區別)

2024-07-21 02:55:41
字體:
來源:轉載
供稿:網友

在本篇內容里我們給大家詳細分析了易語言中間的鉤子概念以及HOOK與APIHOOK區別

鉤子 原英文名稱 Hook ,鉤子的意思是指攔截或截獲。作用就是攔截程序中交互的數據,先經過我們預定的鉤子處理接口程序,處理過后,再交還給原處理程序,或者干脆阻止,吃掉這些數據,讓原處理程序什么也得不到。

鉤子原來是Windows操作系統常用來檢查系統與程序間通信的一些數據是否到達目標時用的,為不傳之密,后來隨著一些高手們的研究,逐漸的發現了這些秘密的技術并且公布了出來。同時還有更多的人在掌握了這些技術后,用在自已的軟件開發中,實現出奇招而超過其它同類軟件的功能而贏得市場。。 鉤子技術的種類上很多.

HOOK API和HOOK技術完全不同。盡管它們都是鉤子。HOOK鉤的是消息,它在系統將消息傳遞給應用程序之前截獲它,然后進行操作、或修改消息、或停止消息 的傳遞;

而HOOK API截獲的是應用程序對系統API的調用,它在應用程序對系統API的調用之前截獲此調用動作,讓其轉而調用我們所定義的函數(內容可能是進行一些操作 后再調用原系統API)。

關于HOOK技術,微軟為我們提供了現成的API,有固定的使用步驟。

而對于HOOK API技術,微軟并沒有向我們提供類似的API,沒有那么簡潔的步驟可供我們參考,也許是因為微軟并不希望我們用這樣的手段編程,所以相對要麻煩一些。

WINDOWS的鉤子函數可以認為是WINDOWS的主要特性之一。利用它們,您可以捕捉您自己進程或其它進程發生的事件。通過“鉤掛”,您可以給WINDOWS一個處理或過濾事件的回調函數,該函數也叫做“鉤子函數”,當每次發生您感興趣的事件時,WINDOWS都將調用該函數。一共有兩種類型的鉤子:局部的和遠程的。 

局部鉤子僅鉤掛您自己進程的事件。 

遠程的鉤子還可以將鉤掛其它進程發生的事件。遠程的鉤子又有兩種: 

基于線程的 它將捕獲其它進程中某一特定線程的事件。簡言之,就是可以用來觀察其它進程中的某一特定線程將發生的事件。 
系統范圍的 將捕捉系統中所有進程將發生的事件消息。 當您創建一個鉤子時,WINDOWS會先在內存中創建一個數據結構,該數據結構包含了鉤子的相關信息,然后把該結構體加到已經存在的鉤子鏈表中去。新的鉤子將加到老的前面。當一個事件發生時,如果您安裝的是一個局部鉤子,您進程中的鉤子函數將被調用。如果是一個遠程鉤子,系統就必須把鉤子函數插入到其它進程的地址空間,要做到這一點要求鉤子函數必須在一個動態鏈接庫中,所以如果您想要使用遠程鉤子,就必須把該鉤子函數放到動態鏈接庫中去。當然有兩個例外:工作日志鉤子和工作日志回放鉤子。這兩個鉤子的鉤子函數必須在安裝鉤子的線程中。原因是:這兩個鉤子是用來監控比較底層的硬件事件的,既然是記錄和回放,所有的事件就當然都是有先后次序的。所以如果把回調函數放在DLL中,輸入的事件被放在幾個線程中記錄,所以我們無法保證得到正確的次序。故解決的辦法是:把鉤子函數放到單個的線程中,譬如安裝鉤子的線程。

鉤子一共有14種,以下是它們被調用的時機: 

WH_CALLWNDPROC 當調用SendMessage時 
WH_CALLWNDPROCRET 當SendMessage的調用返回時 
WH_GETMESSAGE 當調用GetMessage 或 PeekMessage時 
WH_KEYBOARD 當調用GetMessage 或 PeekMessage 來從消息隊列中查詢WM_KEYUP 或 WM_KEYDOWN 消息時 
WH_MOUSE 當調用GetMessage 或 PeekMessage 來從消息隊列中查詢鼠標事件消息時 
WH_HARDWARE 當調用GetMessage 或 PeekMessage 來從消息隊列種查詢非鼠標、鍵盤消息時 
WH_MSGFILTER 當對話框、菜單或滾動條要處理一個消息時。該鉤子是局部的。它時為那些有自己的消息處理過程的控件對象設計的。 
WH_SYSMSGFILTER 和WH_MSGFILTER一樣,只不過是系統范圍的 
WH_JOURNALRECORD 當WINDOWS從硬件隊列中獲得消息時 
WH_JOURNALPLAYBACK 當一個事件從系統的硬件輸入隊列中被請求時 
WH_SHELL 當關于WINDOWS外殼事件發生時,譬如任務條需要重畫它的按鈕. 
WH_CBT 當基于計算機的訓練(CBT)事件發生時 
WH_FOREGROUNDIDLE 由WINDOWS自己使用,一般的應用程序很少使用 
WH_DEBUG 用來給鉤子函數除錯


注:相關教程知識閱讀請移步到易語言教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产啊v在线观看 | 福利一区二区三区视频在线观看 | 一区二区高清视频在线观看 | 久久午夜神器 | 欧美成人高清在线 | 国产成人精品午夜视频' | 特级黄一级播放 | 宅男噜噜噜66国产在线观看 | 色淫网站免费视频 | 中文字幕欧美一区二区三区 | 国产精品视频yy9299一区 | 成年人视频免费 | 久久精品毛片 | 久久久久久久久淑女av国产精品 | av电影在线免费观看 | 国产日韩欧美一区 | 亚洲精品成人在线视频 | 斗罗破苍穹在线观看免费完整观看 | 国产精品美女一区二区 | 91九色电影 | h视频在线播放 | 黑人三级毛片 | 精品国产一区二区三区四区阿崩 | 免费一级特黄欧美大片勹久久网 | 12av毛片| 国产精品99久久久久久久vr | 中文区永久区 | 成人精品一区二区三区中文字幕 | av电影院在线观看 | 国产成人自拍小视频 | 宅男噜噜噜66国产在线观看 | 黄色片在线免费播放 | 成年人在线视频免费 | 国产女厕一区二区三区在线视 | 女人裸体让男人桶全过程 | 久久久精品视频国产 | 特级毛片全部免费播放器 | 久久久婷婷一区二区三区不卡 | 欧洲精品色 | 激情宗合网 | 国产91精品欧美 |