欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年11月12日 10:03:09   投稿:laozhang  
在本篇文章中我們給大家分享了易語言中鉤子的概念以及相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。

在本篇內(nèi)容里我們給大家詳細(xì)分析了易語言中間的鉤子概念以及HOOK與APIHOOK區(qū)別

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

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

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

而HOOK API截獲的是應(yīng)用程序?qū)ο到y(tǒng)API的調(diào)用,它在應(yīng)用程序?qū)ο到y(tǒng)API的調(diào)用之前截獲此調(diào)用動(dòng)作,讓其轉(zhuǎn)而調(diào)用我們所定義的函數(shù)(內(nèi)容可能是進(jìn)行一些操作 后再調(diào)用原系統(tǒng)API)。

關(guān)于HOOK技術(shù),微軟為我們提供了現(xiàn)成的API,有固定的使用步驟。

而對(duì)于HOOK API技術(shù),微軟并沒有向我們提供類似的API,沒有那么簡潔的步驟可供我們參考,也許是因?yàn)槲④洸⒉幌M覀冇眠@樣的手段編程,所以相對(duì)要麻煩一些。

WINDOWS的鉤子函數(shù)可以認(rèn)為是WINDOWS的主要特性之一。利用它們,您可以捕捉您自己進(jìn)程或其它進(jìn)程發(fā)生的事件。通過“鉤掛”,您可以給WINDOWS一個(gè)處理或過濾事件的回調(diào)函數(shù),該函數(shù)也叫做“鉤子函數(shù)”,當(dāng)每次發(fā)生您感興趣的事件時(shí),WINDOWS都將調(diào)用該函數(shù)。一共有兩種類型的鉤子:局部的和遠(yuǎn)程的。

局部鉤子僅鉤掛您自己進(jìn)程的事件。

遠(yuǎn)程的鉤子還可以將鉤掛其它進(jìn)程發(fā)生的事件。遠(yuǎn)程的鉤子又有兩種:

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

鉤子一共有14種,以下是它們被調(diào)用的時(shí)機(jī):

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

相關(guān)文章

  • 實(shí)例講解易語言合并整數(shù)

    實(shí)例講解易語言合并整數(shù)

    在本篇文章中小編給大家分享了關(guān)于易語言合并整數(shù)的相關(guān)知識(shí)點(diǎn)內(nèi)容,對(duì)此有興趣的朋友們學(xué)習(xí)下。
    2019-01-01
  • 易語言設(shè)置時(shí)鐘周期與周期事件實(shí)現(xiàn)運(yùn)行或停止時(shí)鐘的方法

    易語言設(shè)置時(shí)鐘周期與周期事件實(shí)現(xiàn)運(yùn)行或停止時(shí)鐘的方法

    今天小編就為大家分享一篇關(guān)于易語言設(shè)置時(shí)鐘周期與周期事件實(shí)現(xiàn)運(yùn)行或停止時(shí)鐘的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 易語言位取反操作詳解

    易語言位取反操作詳解

    在本篇內(nèi)容里我們給大家整理了關(guān)于易語言位取反實(shí)例講解內(nèi)容,有興趣的朋友們跟著學(xué)習(xí)下。
    2019-01-01
  • 易語言設(shè)置下次使用輸出文本數(shù)據(jù)時(shí)的位置

    易語言設(shè)置下次使用輸出文本數(shù)據(jù)時(shí)的位置

    今天小編就為大家分享一篇關(guān)于易語言設(shè)置下次使用輸出文本數(shù)據(jù)時(shí)的位置,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 易語言次循環(huán)和延遲循環(huán)實(shí)現(xiàn)方法

    易語言次循環(huán)和延遲循環(huán)實(shí)現(xiàn)方法

    在本篇內(nèi)容里小編給大家整理了關(guān)于易語言次循環(huán)和延遲循環(huán)實(shí)現(xiàn)方法,需要的朋友們參考下。
    2018-12-12
  • 一步一步跟我學(xué)易語言之變量的有效范圍

    一步一步跟我學(xué)易語言之變量的有效范圍

    今天小編就為大家分享一篇關(guān)于一步一步跟我學(xué)易語言之變量的有效范圍,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 易語言獲取外網(wǎng)ip方法

    易語言獲取外網(wǎng)ip方法

    在本文里小編給大家整理了關(guān)于易語言編寫獲取外網(wǎng)IP的方法代碼,需要的朋友們參考下。
    2018-11-11
  • 易語言添加指定項(xiàng)目到組合框列表尾部的方法

    易語言添加指定項(xiàng)目到組合框列表尾部的方法

    今天小編就為大家分享一篇關(guān)于易語言添加指定項(xiàng)目到組合框列表尾部的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 總結(jié)易語言幾種編譯的區(qū)別

    總結(jié)易語言幾種編譯的區(qū)別

    在本篇文章中我們給大家總結(jié)了易語言幾種編譯的區(qū)別以及相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。
    2018-10-10
  • 易語言設(shè)置窗口透明化的代碼

    易語言設(shè)置窗口透明化的代碼

    今天小編就為大家分享一篇關(guān)于易語言設(shè)置窗口透明化的代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評(píng)論