首页
/
每日頭條
/
科技
/
delphi開發中間件
delphi開發中間件
更新时间:2026-03-27 09:26:50

我的理想是能夠寫出一個可以永不封号的遊戲外G

嗯,所以需要學習Windows下編程,最近好不容易有一點點空餘時間,抓緊時間讀書【Delphi下深入Windows編程】,人醜就該多讀書

鈎子原理

定義:

消息鈎子是創建鈎子時在Windows的消息處理鍊中插入一個函數,一旦鈎子安裝成功,就可以監控消息,那麼向所有應用程序發送的消息都會先經過此函數

安裝鈎子之前的Windows消息執行流程

delphi開發中間件(Delphi下深入Windows編程之鈎子原理一)1

安裝鈎子之後

delphi開發中間件(Delphi下深入Windows編程之鈎子原理一)2

注意

系統鈎子程序必須是動态鍊接庫DLL,不能在可執行文件EXE中完成,這是因為可執行文件在其他進程(另一個可執行文件)中是不可見的,無法實現鈎子功能,然而DLL卻可以映射到其他進程的空間中去

兩個問題:鈎子的分類、鈎子安裝的順序

  • 鈎子有多種,分别用于捕獲某一特定類型或某一範圍的消息,例如鍵盤消息、鼠标消息等
  • 對于每種類型的鈎子由系統來維護一個鈎子鍊,最近安裝的鈎子放在鍊的開始,而最先安裝的鈎子放在最後,也就是後加入的鈎子先獲得控制權
挂鈎

這一步其實很容易實現,我們需要使用Windows API 函數,隻是這個函數的參數有點多,但是萬幸不需要我每一個都構造出來,挂鈎函數SetWindowsHookEx 将安裝應用程序定義的鈎子過程到鈎子鍊中

function SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: DWORD): HHOOK; stdcall;

參數說明

  • idHook:指定安裝鈎子的類型,這是最麻煩的一個參數,其取值如下

delphi開發中間件(Delphi下深入Windows編程之鈎子原理一)3

  • lpfn :指定鈎子函數的地址,與鈎子函數類型有關
  • hMod: 指定毀掉函數的實例,在Delphi中一般設置為HInstance
  • dwThreadId:參數指定了線程ID。鈎子函數能夠監視由dwThreadId參數定義的線程,或者系統中所有的線程。使用它來過濾并在系統或窗口處理之前處理特定的消息。如果該值為零,表示這個挂鈎可以在所有的線程内調用
鈎子鍊

得到控制權的鈎子在得到控制權之後,如果想要改消息繼續傳遞給下一個鈎子,那麼它必須調用CallNextHookEx函數來傳遞它,否則建議直接返回0

挂鈎函數的參數都與挂鈎函數的類型有關,但是都有一個相同點:nCode 參數的值可以用來調用挂鈎鍊中的下一個挂鈎函數,調用下一個挂鈎函數要用到 CallNextHookEx 函數,其聲明如下:

Result:=CallNextHookEx(hhk:HHook;nCode:Integer;wParam:WPARAM;lParam:LPARAM);

參數說明:

  • hhk 是當前鈎子句柄,由建立鈎子時SetWindowsHookEx的返回值
  • nCode 用于調用下一個挂鈎函數
  • wParam、lParam都是挂鈎類型和挂鈎函數有關的參數
摘鈎

如果要撤銷當前已安裝的鈎子,則要調用另外一個函數 UnhookWindowsHookEx。函數聲明如下:

UnhookWindowsHookEx( hhk:HHook{待撤銷的鈎子句柄} ):BOOL;

如果主程序調用 UnhookWindowsHookEx 函數把DLL 注入其他進程後,在不同的操作系統下有可能并不會立即退出某些不活動的進程,因此,建議使用SendMessage 向所有進程廣播一條消息,從而使DLL完全退出所有的進程,如:SendMessage(HWND,BROADCAST,WM_SETINGCNANGE,0,0)

此次分享沒有代碼實現,所有的技術都是先有理論,後有技術實現,代碼實現後續篇章補上

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
投影屏幕尺寸介紹
投影屏幕尺寸介紹
1、投影幕的尺寸主要取決于使用空間的面積和觀衆人數的多少,以及位置的安放。首要的原則是選擇适合觀衆的...
2026-03-27
蘋果手機網絡不好怎麼辦
蘋果手機網絡不好怎麼辦
1、開關飛行模式首先打開飛行模式,然後等待大約5秒後再關閉飛行模式。這樣可以解決信号不好和沒有信号的...
2026-03-27
鴻蒙還是屬于安卓嗎
鴻蒙還是屬于安卓嗎
演示機型:華為P40系統版本:HarmonyOS2.0鴻蒙不屬于安卓。鴻蒙系統、安卓系統、ios系統是并列關系,都是操作系統。鴻蒙系統并不是基于安卓,但有采用安卓同樣的Linux内核,從而實現兼容安卓應用實現過度。在未來實現鴻蒙端的APP成熟後,将會去掉linux内核,隻保留鴻蒙微内核,可以實現最終理想上的智能終端分布式系統。鴻蒙OS有三大特點:1、面向未來發展趨勢開發的系統,比谷歌微軟出發點高遠
2026-03-27
即熱式飲水機優缺點是什麼
即熱式飲水機優缺點是什麼
1、優點:加熱迅速。即熱式熱水器它的功率普遍較大一些,在進行使用的時候隻要打開水龍頭幾秒鐘之後他就恩那個實現對水流的加熱,這樣就能有溫度适宜的熱水供應了。2、節能省電。即熱式熱水器在使用時無需提前進行預熱,因此也就沒有預熱時熱量的散失,需要多少熱水就放多少熱水,它沒有儲水式熱水器多加熱的剩餘熱水的能...
2026-03-27
自動擋下坡可以挂空擋嗎
自動擋下坡可以挂空擋嗎
1、在《中華人民共和國道路交通安全法》裡面明文規定:汽車下坡時不準空擋滑行和熄火空檔滑行。在考駕照路考的時候所列出的扣分項目中也規定空檔滑行3秒以上,考試不合格。2、當汽車下坡空檔滑行時,由于重力的作用,汽車的速度會逐漸增加,這是非常危險的。為了控制車速,我們就要頻繁的踩刹車,當刹車過于頻繁、超過了...
2026-03-27
Copyright 2023-2026 - www.tftnews.com All Rights Reserved