Bonjour à tous,
je suis en train de réaliser une petite dll permettant de récupérer les messages qui circule au sein d'une application. Cette dll est injecter dans l'application mais le hook de réception des message ne semble pas fonctionner...
Point d'entrée de la DLL
et le hook :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { Hook::DllInstance = hModule; switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH : Log::Write("DLL_PROCESS_ATTACH"); Hook::InstallHook_CBT(); Hook::InstallHook_CALLWNDPROC(); break; case DLL_THREAD_ATTACH : Log::Write("DLL_THREAD_ATTACH"); break; case DLL_THREAD_DETACH : Log::Write("DLL_THREAD_DETACH"); break; case DLL_PROCESS_DETACH : Log::Write("DLL_PROCESS_DETACH"); Hook::UninstallHook_CBT(); Hook::UninstallHook_CALLWNDPROC(); break; } return (true); }
Mon fichier de Hook ressemble à cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 HHOOK Hook::HookCbt = NULL; HHOOK Hook::HookCallWndProc = NULL; HINSTANCE Hook::DllInstance = NULL; LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam) { HWND hWnd = (HWND)wParam; if (!hWnd) return 0; if (nCode == HCBT_MINMAX) { } else if (nCode == HCBT_ACTIVATE) { } else if (nCode == HCBT_CLICKSKIPPED) { } else if (nCode == HCBT_CREATEWND) { Log::Write("Create Windows"); } else if (nCode == HCBT_DESTROYWND) { } else if (nCode == HCBT_SETFOCUS) { } return (CallNextHookEx(Hook::HookCbt, nCode, wParam, lParam)); } LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode < 0) { return CallNextHookEx(Hook::HookCallWndProc, nCode, wParam, lParam); } CWPSTRUCT *msg = (CWPSTRUCT *)lParam; Log::Write(nCode); if (nCode == WM_SETTEXT) { Log::Write((char *)lParam); } return CallNextHookEx(Hook::HookCallWndProc, nCode, wParam, lParam); } void Hook::InstallHook_CBT() { if (Hook::HookCbt == NULL) { Hook::HookCbt = SetWindowsHookEx(WH_CBT, CBTProc, Hook::DllInstance, 0); if (Hook::HookCbt == NULL) Log::Write("ERROR - UNABLE TO INSTALL CBT HOOK"); else Log::Write("CBT HOOK INSTALL SUCCESSFULLY"); } } void Hook::UninstallHook_CBT() { if (Hook::HookCbt != NULL) { UnhookWindowsHookEx(Hook::HookCbt); } } void Hook::InstallHook_CALLWNDPROC() { if (Hook::HookCallWndProc == NULL) { Hook::HookCallWndProc = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, Hook::DllInstance, 0); if (Hook::HookCallWndProc == NULL) Log::Write("ERROR - UNABLE TO INSTALL CALLWNDPROC HOOK"); else Log::Write("CALLWNDPROC HOOK INSTALL SUCCESSFULLY"); } } void Hook::UninstallHook_CALLWNDPROC() { if (Hook::HookCbt != NULL) { UnhookWindowsHookEx(Hook::HookCallWndProc); } }
[17:11:59] - DLL_PROCESS_ATTACH
[17:11:59] - CBT HOOK INSTALL SUCCESSFULLY
[17:11:59] - CALLWNDPROC HOOK INSTALL SUCCESSFULLY
[17:11:59] - DLL_THREAD_DETACH
[17:12:19] - DLL_THREAD_ATTACH
[17:12:21] - DLL_THREAD_ATTACH
[17:12:21] - DLL_THREAD_ATTACH
[17:12:27] - DLL_THREAD_ATTACH
[17:12:27] - DLL_THREAD_ATTACH
[17:12:27] - DLL_THREAD_ATTACH
[17:12:27] - DLL_THREAD_DETACH
[17:12:27] - DLL_THREAD_DETACH
[17:12:30] - DLL_THREAD_ATTACH
[17:12:30] - DLL_THREAD_ATTACH
[17:12:31] - DLL_THREAD_DETACH
[17:12:31] - DLL_THREAD_DETACH
[17:12:31] - DLL_THREAD_ATTACH
[17:12:31] - DLL_THREAD_ATTACH
[17:12:31] - DLL_THREAD_DETACH
[17:12:31] - DLL_THREAD_DETACH
[17:12:42] - DLL_THREAD_ATTACH
[17:12:42] - DLL_THREAD_ATTACH
[17:12:42] - DLL_THREAD_DETACH
[17:12:42] - DLL_THREAD_DETACH
[17:12:58] - DLL_THREAD_DETACH
[17:13:18] - DLL_THREAD_DETACH
[17:13:18] - DLL_THREAD_DETACH
[17:13:18] - DLL_THREAD_DETACH
[17:13:18] - DLL_THREAD_DETACH
[17:13:18] - DLL_THREAD_DETACH
[17:13:18] - DLL_THREAD_DETACH
[17:13:18] - DLL_THREAD_DETACH
[17:13:18] - DLL_THREAD_DETACH
[17:18:55] - DLL_PROCESS_ATTACH
.....
Si quelqu'un a une idée... vu que les nCode des messages ne se logue pas ... je suis preneur ^^
Merci d'avance,
Cordialement,
NeoKript
Partager