0%

全局钩子注入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include <Windows.h>

// C C++混用 声明
#ifdef __cplusplus
extern "C" {
#endif
_declspec(dllexport) void OnHook();
_declspec(dllexport) void OffHook();
#ifdef __cplusplus
}
#endif

HHOOK g_hook = NULL; //定义一个全局钩子遍历
HINSTANCE instance = NULL;

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
instance = hModule;
MessageBoxA(0,"text", "title", 0);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}


LRESULT CALLBACK getMsgProc(int code, WPARAM wparam, LPARAM lparam) {
return CallNextHookEx(g_hook, code, wparam, lparam);
}

void OnHook() {
g_hook = SetWindowsHookEx(WH_GETMESSAGE, getMsgProc, instance, 0);
}
void OffHook() {
UnhookWindowsHookEx(g_hook);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <Windows.h>

typedef void(*hookOn)(); //定义一个函数指针
typedef void(*hookOff)();
void main() {
HMODULE hmod = LoadLibraryA("hookdll.dll");
hookOn hook_on = (hookOn)GetProcAddress(hmod, "OnHook");
hookOff hook_off = (hookOff)GetProcAddress(hmod, "OffHook");

hook_on();
system("pause");
hook_off();
}

欢迎关注我的其它发布渠道

------------- 💖 🌞 本 文 结 束 😚 感 谢 您 的 阅 读 🌞 💖 -------------