记一次Windows下使用MinHook的过程

MinHook是一个轻量级开源Hook库,支持Windows平台32位/64位程序对API和普通函数进行运行时拦截与替换,具有高性能、低内存占用和简易集成特点。‌‌‌(摘自百度)

废话不多说,直接上代码

 1 #include <iostream>
 2 #include <Windows.h>
 3 #include "MinHook/include/MinHook.h"
 4 
 5 typedef int(WINAPI* fMessageBoxA)(HWND,LPCSTR,LPCSTR,UINT);
 6 
 7 fMessageBoxA pMessageBoxA = NULL;
 8 
 9 //定义自己的Hook函数
10 int WINAPI HookMessageBoxA(HWND hwnd, LPCSTR l1, LPCSTR l2, UINT l3)
11 {
12     return pMessageBoxA(hwnd, "Hello MinHook!", l2, l3);
13 }
14 
15 int main()
16 {
17 
18     MH_Initialize();
19 
20     //创建Hook钩子
21     MH_CreateHook(&MessageBoxA, &HookMessageBoxA, (LPVOID*)&pMessageBoxA);
22 
23     //未HOOK
24     MessageBoxA(NULL,"你好!","title",NULL);
25 
26     //启用HOOK
27     MH_EnableHook(&MessageBoxA);
28 
29     //启用HOOK后
30     MessageBoxA(NULL, "你好!", "title", NULL);
31 
32     //禁用HOOK
33     MH_DisableHook(&MessageBoxA);
34 
35     //禁用HOOK后
36     MessageBoxA(NULL, "你好2!", "title", NULL);
37 
38 
39     MH_Uninitialize();
40 
41 }

HOOK之前出现弹窗

image

 确定后,执行HOOK后出现弹窗

image

  再次确定后,禁用HOOK后出现弹窗

image

 

代码文件结构

image

 

image

 https://github.com/TsudaKageyu/minhook

posted @ 2025-12-08 08:48  Tony.Jia  阅读(7)  评论(0)    收藏  举报