2019-03-19 06:57:49 +01:00
|
|
|
#ifndef HOOK_H
|
|
|
|
#define HOOK_H
|
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
#define WIN32_LEAN_AND_MEAN
|
2019-03-19 06:57:49 +01:00
|
|
|
#include <windows.h>
|
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
|
2021-06-11 20:30:43 +02:00
|
|
|
typedef struct HOOKLISTDATA { char function_name[32]; PROC new_function; PROC* function; } HOOKLISTDATA;
|
|
|
|
typedef struct HOOKLIST { char module_name[32]; BOOL enabled; HOOKLISTDATA data[24]; } HOOKLIST;
|
2020-10-19 16:37:12 +02:00
|
|
|
|
2021-06-11 20:30:43 +02:00
|
|
|
typedef BOOL(WINAPI* GETCURSORPOSPROC)(LPPOINT);
|
2019-03-19 06:57:49 +01:00
|
|
|
typedef BOOL(WINAPI* CLIPCURSORPROC)(const RECT*);
|
|
|
|
typedef int (WINAPI* SHOWCURSORPROC)(BOOL);
|
2021-06-11 20:30:43 +02:00
|
|
|
typedef HCURSOR(WINAPI* SETCURSORPROC)(HCURSOR);
|
|
|
|
typedef BOOL(WINAPI* GETWINDOWRECTPROC)(HWND, LPRECT);
|
|
|
|
typedef BOOL(WINAPI* GETCLIENTRECTPROC)(HWND, LPRECT);
|
|
|
|
typedef BOOL(WINAPI* CLIENTTOSCREENPROC)(HWND, LPPOINT);
|
|
|
|
typedef BOOL(WINAPI* SCREENTOCLIENTPROC)(HWND, LPPOINT);
|
|
|
|
typedef BOOL(WINAPI* SETCURSORPOSPROC)(int, int);
|
|
|
|
typedef HWND(WINAPI* WINDOWFROMPOINTPROC)(POINT);
|
|
|
|
typedef BOOL(WINAPI* GETCLIPCURSORPROC)(LPRECT);
|
|
|
|
typedef BOOL(WINAPI* GETCURSORINFOPROC)(PCURSORINFO);
|
2019-03-19 06:57:49 +01:00
|
|
|
typedef int (WINAPI* GETSYSTEMMETRICSPROC)(int);
|
2021-06-11 20:30:43 +02:00
|
|
|
typedef BOOL(WINAPI* SETWINDOWPOSPROC)(HWND, HWND, int, int, int, int, UINT);
|
|
|
|
typedef BOOL(WINAPI* MOVEWINDOWPROC)(HWND, int, int, int, int, BOOL);
|
|
|
|
typedef LRESULT(WINAPI* SENDMESSAGEAPROC)(HWND, UINT, WPARAM, LPARAM);
|
|
|
|
typedef LONG(WINAPI* SETWINDOWLONGAPROC)(HWND, int, LONG);
|
|
|
|
typedef LONG(WINAPI* GETWINDOWLONGAPROC)(HWND, int);
|
|
|
|
typedef BOOL(WINAPI* ENABLEWINDOWPROC)(HWND, BOOL);
|
|
|
|
typedef HWND(WINAPI* CREATEWINDOWEXAPROC)(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
|
|
|
|
typedef BOOL(WINAPI* DESTROYWINDOWPROC)(HWND);
|
2021-05-29 21:40:21 +02:00
|
|
|
typedef int (WINAPI* MAPWINDOWPOINTSPROC)(HWND, HWND, LPPOINT, UINT);
|
2021-08-04 15:24:16 +02:00
|
|
|
typedef BOOL (WINAPI* SHOWWINDOWPROC)(HWND, int);
|
2021-06-11 20:30:43 +02:00
|
|
|
typedef HHOOK(WINAPI* SETWINDOWSHOOKEXAPROC)(int, HOOKPROC, HINSTANCE, DWORD);
|
2020-09-19 11:23:06 +02:00
|
|
|
typedef int (WINAPI* GETDEVICECAPSPROC)(HDC, int);
|
2021-06-11 20:30:43 +02:00
|
|
|
typedef HMODULE(WINAPI* LOADLIBRARYAPROC)(LPCSTR);
|
|
|
|
typedef HMODULE(WINAPI* LOADLIBRARYWPROC)(LPCWSTR);
|
|
|
|
typedef HMODULE(WINAPI* LOADLIBRARYEXAPROC)(LPCSTR, HANDLE, DWORD);
|
|
|
|
typedef HMODULE(WINAPI* LOADLIBRARYEXWPROC)(LPCWSTR, HANDLE, DWORD);
|
2021-08-02 17:27:19 +02:00
|
|
|
typedef HRESULT(WINAPI* COCREATEINSTANCEPROC)(REFCLSID, LPUNKNOWN, DWORD, REFIID, LPVOID*);
|
2019-03-19 06:57:49 +01:00
|
|
|
|
|
|
|
extern GETCURSORPOSPROC real_GetCursorPos;
|
|
|
|
extern CLIPCURSORPROC real_ClipCursor;
|
|
|
|
extern SHOWCURSORPROC real_ShowCursor;
|
|
|
|
extern SETCURSORPROC real_SetCursor;
|
|
|
|
extern GETWINDOWRECTPROC real_GetWindowRect;
|
|
|
|
extern GETCLIENTRECTPROC real_GetClientRect;
|
|
|
|
extern CLIENTTOSCREENPROC real_ClientToScreen;
|
|
|
|
extern SCREENTOCLIENTPROC real_ScreenToClient;
|
|
|
|
extern SETCURSORPOSPROC real_SetCursorPos;
|
|
|
|
extern WINDOWFROMPOINTPROC real_WindowFromPoint;
|
|
|
|
extern GETCLIPCURSORPROC real_GetClipCursor;
|
|
|
|
extern GETCURSORINFOPROC real_GetCursorInfo;
|
|
|
|
extern GETSYSTEMMETRICSPROC real_GetSystemMetrics;
|
|
|
|
extern SETWINDOWPOSPROC real_SetWindowPos;
|
|
|
|
extern MOVEWINDOWPROC real_MoveWindow;
|
|
|
|
extern SENDMESSAGEAPROC real_SendMessageA;
|
|
|
|
extern SETWINDOWLONGAPROC real_SetWindowLongA;
|
2021-06-04 22:46:15 +02:00
|
|
|
extern GETWINDOWLONGAPROC real_GetWindowLongA;
|
2019-08-06 04:37:06 +02:00
|
|
|
extern ENABLEWINDOWPROC real_EnableWindow;
|
|
|
|
extern CREATEWINDOWEXAPROC real_CreateWindowExA;
|
|
|
|
extern DESTROYWINDOWPROC real_DestroyWindow;
|
2021-05-29 21:40:21 +02:00
|
|
|
extern MAPWINDOWPOINTSPROC real_MapWindowPoints;
|
2021-08-04 15:24:16 +02:00
|
|
|
extern SHOWWINDOWPROC real_ShowWindow;
|
2021-06-06 19:03:38 +02:00
|
|
|
extern SETWINDOWSHOOKEXAPROC real_SetWindowsHookExA;
|
2020-09-17 05:49:36 +02:00
|
|
|
extern GETDEVICECAPSPROC real_GetDeviceCaps;
|
2020-09-22 07:08:14 +02:00
|
|
|
extern LOADLIBRARYAPROC real_LoadLibraryA;
|
|
|
|
extern LOADLIBRARYWPROC real_LoadLibraryW;
|
|
|
|
extern LOADLIBRARYEXAPROC real_LoadLibraryExA;
|
2020-09-19 11:23:06 +02:00
|
|
|
extern LOADLIBRARYEXWPROC real_LoadLibraryExW;
|
2021-08-02 17:27:19 +02:00
|
|
|
extern COCREATEINSTANCEPROC real_CoCreateInstance;
|
2019-03-19 06:57:49 +01:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
extern int g_hook_method;
|
|
|
|
extern BOOL g_hook_active;
|
2019-03-19 06:57:49 +01:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
void hook_init();
|
2021-05-14 01:24:46 +02:00
|
|
|
void hook_early_init();
|
2020-10-13 09:20:52 +02:00
|
|
|
void hook_exit();
|
2020-10-20 05:59:41 +02:00
|
|
|
void hook_patch_iat(HMODULE hmod, BOOL unhook, char* module_name, char* function_name, PROC new_function);
|
2021-06-11 20:30:43 +02:00
|
|
|
void hook_patch_iat_list(HMODULE hmod, BOOL unhook, HOOKLIST* hooks);
|
|
|
|
void hook_create(HOOKLIST* hooks);
|
|
|
|
void hook_revert(HOOKLIST* hooks);
|
2019-03-19 06:57:49 +01:00
|
|
|
|
|
|
|
#endif
|