国产乱人视频免费观看网站,九九精品视频在线观看,九九久re8在线精品视频,日韩久久精品五月综合

<menu id="zjelp"></menu>

    <th id="zjelp"><tbody id="zjelp"><form id="zjelp"></form></tbody></th>
    <small id="zjelp"><menuitem id="zjelp"></menuitem></small>
  • <small id="zjelp"></small>

    <address id="zjelp"></address>
    <address id="zjelp"></address>
    我的Hook學(xué)習(xí)筆記

    我的Hook學(xué)習(xí)筆記

    ID:39617469

    大小:49.50 KB

    頁數(shù):9頁

    時間:2019-07-07

    我的Hook學(xué)習(xí)筆記_第1頁
    我的Hook學(xué)習(xí)筆記_第2頁
    我的Hook學(xué)習(xí)筆記_第3頁
    我的Hook學(xué)習(xí)筆記_第4頁
    我的Hook學(xué)習(xí)筆記_第5頁
    資源描述:

    《我的Hook學(xué)習(xí)筆記》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

    1、我的Hook學(xué)習(xí)筆記????rivershan(原作)關(guān)鍵字????Hook、鉤子、VC++、DLL???????????????????????????????????????????關(guān)于Hook?一、基本概念:???鉤子(Hook),是Windows消息處理機制的一個平臺,應(yīng)用程序可以在上面設(shè)置子程以監(jiān)視指定窗口的某種消息,而且所監(jiān)視的窗口可以是其他進程所創(chuàng)建的。當(dāng)消息到達后,在目標窗口處理函數(shù)之前處理它。鉤子機制允許應(yīng)用程序截獲處理window消息或特定事件。???鉤子實際上是一個處理消息的程序段,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當(dāng)特定的消息發(fā)出,在沒有到達目的窗口前,鉤子程序就先捕獲

    2、該消息,亦即鉤子函數(shù)先得到控制權(quán)。這時鉤子函數(shù)即可以加工處理(改變)該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強制結(jié)束消息的傳遞。二、運行機制:1、鉤子鏈表和鉤子子程:???每一個Hook都有一個與之相關(guān)聯(lián)的指針列表,稱之為鉤子鏈表,由系統(tǒng)來維護。這個列表的指針指向指定的,應(yīng)用程序定義的,被Hook子程調(diào)用的回調(diào)函數(shù),也就是該鉤子的各個處理子程。當(dāng)與指定的Hook類型關(guān)聯(lián)的消息發(fā)生時,系統(tǒng)就把這個消息傳遞到Hook子程。一些Hook子程可以只監(jiān)視消息,或者修改消息,或者停止消息的前進,避免這些消息傳遞到下一個Hook子程或者目的窗口。最近安裝的鉤子放在鏈的開始,而最早安裝的鉤子放在最后

    3、,也就是后加入的先獲得控制權(quán)。?Windows并不要求鉤子子程的卸載順序一定得和安裝順序相反。每當(dāng)有一個鉤子被卸載,Windows便釋放其占用的內(nèi)存,并更新整個Hook鏈表。如果程序安裝了鉤子,但是在尚未卸載鉤子之前就結(jié)束了,那么系統(tǒng)會自動為它做卸載鉤子的操作。???鉤子子程是一個應(yīng)用程序定義的回調(diào)函數(shù)(CALLBACKFunction),不能定義成某個類的成員函數(shù),只能定義為普通的C函數(shù)。用以監(jiān)視系統(tǒng)或某一特定類型的事件,這些事件可以是與某一特定線程關(guān)聯(lián)的,也可以是系統(tǒng)中所有線程的事件。???鉤子子程必須按照以下的語法:???LRESULTCALLBACKHookProc?(??intn

    4、Code,?????WPARAMwParam,?????LPARAMlParam????);HookProc是應(yīng)用程序定義的名字。nCode參數(shù)是Hook代碼,Hook子程使用這個參數(shù)來確定任務(wù)。這個參數(shù)的值依賴于Hook類型,每一種Hook都有自己的Hook代碼特征字符集。wParam和lParam參數(shù)的值依賴于Hook代碼,但是它們的典型值是包含了關(guān)于發(fā)送或者接收消息的信息。2、鉤子的安裝與釋放:???使用API函數(shù)SetWindowsHookEx()把一個應(yīng)用程序定義的鉤子子程安裝到鉤子鏈表中。SetWindowsHookEx函數(shù)總是在Hook鏈的開頭安裝Hook子程。當(dāng)指定類型的H

    5、ook監(jiān)視的事件發(fā)生時,系統(tǒng)就調(diào)用與這個Hook關(guān)聯(lián)的Hook鏈的開頭的Hook子程。每一個Hook鏈中的Hook子程都決定是否把這個事件傳遞到下一個Hook子程。Hook子程傳遞事件到下一個Hook子程需要調(diào)用CallNextHookEx函數(shù)。???HHOOKSetWindowsHookEx(     intidHook,?????//鉤子的類型,即它處理的消息類型     HOOKPROClpfn,??//鉤子子程的地址指針。如果dwThreadId參數(shù)為0?????//或是一個由別的進程創(chuàng)建的線程的標識,?????//lpfn必須指向DLL中的鉤子子程。?????//除此以外,lpf

    6、n可以指向當(dāng)前進程的一段鉤子子程代碼。?????//鉤子函數(shù)的入口地址,當(dāng)鉤子鉤到任何消息后便調(diào)用這個函數(shù)。     HINSTANCEhMod,?//應(yīng)用程序?qū)嵗木浔?。標識包含lpfn所指的子程的DLL。?????//如果dwThreadId標識當(dāng)前進程創(chuàng)建的一個線程,?????//而且子程代碼位于當(dāng)前進程,hMod必須為NULL。?????//可以很簡單的設(shè)定其為本應(yīng)用程序的實例句柄?!    WORDdwThreadId//與安裝的鉤子子程相關(guān)聯(lián)的線程的標識符。?????//如果為0,鉤子子程與所有的線程關(guān)聯(lián),即為全局鉤子。     ???????????);  函數(shù)成功則返回鉤

    7、子子程的句柄,失敗返回NULL。  以上所說的鉤子子程與線程相關(guān)聯(lián)是指在一鉤子鏈表中發(fā)給該線程的消息同時發(fā)送給鉤子子程,且被鉤子子程先處理。???在鉤子子程中調(diào)用得到控制權(quán)的鉤子函數(shù)在完成對消息的處理后,如果想要該消息繼續(xù)傳遞,那么它必須調(diào)用另外一個SDK中的API函數(shù)CallNextHookEx來傳遞它,以執(zhí)行鉤子鏈表所指的下一個鉤子子程。這個函數(shù)成功時返回鉤子鏈中下一個鉤子過程的返回值,返回值的類型依賴于鉤子的類型。

    當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

    此文檔下載收益歸作者所有

    當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
    溫馨提示:
    1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
    2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
    3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
    4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。