1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00
cnc-ddraw/inc/hook.h

151 lines
6.9 KiB
C
Raw Normal View History

2019-03-19 06:57:49 +01:00
#ifndef HOOK_H
#define HOOK_H
#include <windows.h>
2020-10-13 09:20:52 +02:00
2023-09-26 10:41:20 +02:00
#define HOOK_SKIP_2 0x00000001l
#define HOOK_LOCAL_ONLY 0x00000002l
2021-08-06 02:07:50 +02:00
2023-10-23 12:16:44 +02:00
typedef struct HOOKLISTDATA {
char function_name[32];
PROC new_function;
PROC* function;
DWORD flags;
PROC org_function;
HMODULE mod;
} HOOKLISTDATA;
typedef struct HOOKLIST { char module_name[32]; HOOKLISTDATA data[35]; } 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);
2022-10-18 22:21:42 +02:00
typedef HWND(WINAPI* GETTOPWINDOWPROC)(HWND);
2022-10-19 05:08:22 +02:00
typedef HWND(WINAPI* GETFOREGROUNDWINDOWPROC)();
2022-10-02 18:41:06 +02:00
typedef BOOL(WINAPI* STRETCHBLTPROC)(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
2024-05-25 07:29:30 +02:00
typedef BOOL(WINAPI* BITBLTPROC)(HDC, int, int, int, int, HDC, int, int, DWORD);
2022-10-15 18:28:23 +02:00
2022-10-03 12:19:15 +02:00
typedef int (WINAPI* SETDIBITSTODEVICEPROC)(
HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, const VOID*, const BITMAPINFO*, UINT);
2022-10-15 18:28:23 +02:00
2022-10-05 22:33:53 +02:00
typedef int (WINAPI* STRETCHDIBITSPROC)(
HDC, int, int, int, int, int, int, int, int, const VOID*, const BITMAPINFO*, UINT, DWORD);
2022-10-15 18:28:23 +02:00
2024-05-30 03:00:23 +02:00
typedef BOOL (WINAPI* SETFOREGROUNDWINDOWPROC)(HWND);
2021-06-11 20:30:43 +02:00
typedef HHOOK(WINAPI* SETWINDOWSHOOKEXAPROC)(int, HOOKPROC, HINSTANCE, DWORD);
2023-02-27 18:25:28 +01:00
typedef BOOL(WINAPI* PEEKMESSAGEAPROC)(LPMSG, HWND, UINT, UINT, UINT);
typedef BOOL(WINAPI* GETMESSAGEAPROC)(LPMSG, HWND, UINT, UINT);
2024-05-30 03:00:23 +02:00
typedef BOOL(WINAPI* GETWINDOWPLACEMENTPROC)(HWND, WINDOWPLACEMENT*);
typedef BOOL(WINAPI* SETWINDOWPLACEMENTPROC)(HWND, const WINDOWPLACEMENT*);
2024-06-10 00:02:39 +02:00
typedef BOOL(WINAPI* ENUMDISPLAYSETTINGSAPROC)(LPCSTR, DWORD, DEVMODEA*);
typedef SHORT(WINAPI* GETKEYSTATEPROC)(int);
typedef SHORT(WINAPI* GETASYNCKEYSTATEPROC)(int);
2023-02-27 18:25:28 +01:00
2020-09-19 11:23:06 +02:00
typedef int (WINAPI* GETDEVICECAPSPROC)(HDC, int);
2023-08-16 14:21:26 +02:00
typedef HFONT(WINAPI* CREATEFONTINDIRECTAPROC)(CONST LOGFONT*);
typedef HFONT(WINAPI* CREATEFONTAPROC)(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCTSTR);
2024-12-15 00:46:44 +01:00
typedef UINT(WINAPI* GETSYSTEMPALETTEENTRIESPROC)(HDC, UINT, UINT, LPPALETTEENTRY);
2024-12-15 02:01:08 +01:00
typedef HPALETTE(WINAPI* SELECTPALETTEPROC)(HDC, HPALETTE, BOOL);
2024-12-15 20:17:26 +01:00
typedef UINT (WINAPI* REALIZEPALETTEPROC)(HDC);
2024-12-15 00:46:44 +01:00
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);
typedef FARPROC(WINAPI* GETPROCADDRESSPROC)(HMODULE, LPCSTR);
2022-10-15 18:28:23 +02:00
typedef BOOL(WINAPI* GETDISKFREESPACEAPROC)(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
typedef DWORD(WINAPI* GETVERSIONPROC)(void);
typedef BOOL(WINAPI* GETVERSIONEXAPROC)(LPOSVERSIONINFOA);
typedef HRESULT(WINAPI* COCREATEINSTANCEPROC)(REFCLSID, LPUNKNOWN, DWORD, REFIID, LPVOID*);
2024-06-01 23:04:06 +02:00
typedef MCIERROR(WINAPI* MCISENDCOMMANDAPROC)(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR);
typedef LPTOP_LEVEL_EXCEPTION_FILTER(WINAPI* SETUNHANDLEDEXCEPTIONFILTERPROC)(LPTOP_LEVEL_EXCEPTION_FILTER);
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;
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;
2022-10-18 22:21:42 +02:00
extern GETTOPWINDOWPROC real_GetTopWindow;
2022-10-19 05:08:22 +02:00
extern GETFOREGROUNDWINDOWPROC real_GetForegroundWindow;
2022-10-02 18:41:06 +02:00
extern STRETCHBLTPROC real_StretchBlt;
2024-05-25 07:29:30 +02:00
extern BITBLTPROC real_BitBlt;
2022-10-03 12:19:15 +02:00
extern SETDIBITSTODEVICEPROC real_SetDIBitsToDevice;
2022-10-05 22:33:53 +02:00
extern STRETCHDIBITSPROC real_StretchDIBits;
extern SETFOREGROUNDWINDOWPROC real_SetForegroundWindow;
2021-06-06 19:03:38 +02:00
extern SETWINDOWSHOOKEXAPROC real_SetWindowsHookExA;
2023-02-27 18:25:28 +01:00
extern PEEKMESSAGEAPROC real_PeekMessageA;
extern GETMESSAGEAPROC real_GetMessageA;
2024-05-30 03:00:23 +02:00
extern GETWINDOWPLACEMENTPROC real_GetWindowPlacement;
extern SETWINDOWPLACEMENTPROC real_SetWindowPlacement;
2024-06-10 00:02:39 +02:00
extern ENUMDISPLAYSETTINGSAPROC real_EnumDisplaySettingsA;
extern GETKEYSTATEPROC real_GetKeyState;
extern GETASYNCKEYSTATEPROC real_GetAsyncKeyState;
extern GETDEVICECAPSPROC real_GetDeviceCaps;
2023-08-16 14:21:26 +02:00
extern CREATEFONTINDIRECTAPROC real_CreateFontIndirectA;
extern CREATEFONTAPROC real_CreateFontA;
2024-12-15 00:46:44 +01:00
extern GETSYSTEMPALETTEENTRIESPROC real_GetSystemPaletteEntries;
2024-12-15 02:01:08 +01:00
extern SELECTPALETTEPROC real_SelectPalette;
2024-12-15 20:17:26 +01:00
extern REALIZEPALETTEPROC real_RealizePalette;
extern LOADLIBRARYAPROC real_LoadLibraryA;
extern LOADLIBRARYWPROC real_LoadLibraryW;
extern LOADLIBRARYEXAPROC real_LoadLibraryExA;
2020-09-19 11:23:06 +02:00
extern LOADLIBRARYEXWPROC real_LoadLibraryExW;
extern GETPROCADDRESSPROC real_GetProcAddress;
2022-10-15 18:28:23 +02:00
extern GETDISKFREESPACEAPROC real_GetDiskFreeSpaceA;
extern GETVERSIONPROC real_GetVersion;
extern GETVERSIONEXAPROC real_GetVersionExA;
extern COCREATEINSTANCEPROC real_CoCreateInstance;
2024-06-01 23:04:06 +02:00
extern MCISENDCOMMANDAPROC real_mciSendCommandA;
extern SETUNHANDLEDEXCEPTIONFILTERPROC real_SetUnhandledExceptionFilter;
2019-03-19 06:57:49 +01:00
2020-10-13 09:20:52 +02:00
extern BOOL g_hook_active;
extern HOOKLIST g_hook_hooklist[];
2019-03-19 06:57:49 +01:00
2024-06-02 22:17:26 +02:00
void hook_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);
2023-09-26 10:41:20 +02:00
void hook_patch_iat_list(HMODULE hmod, BOOL unhook, HOOKLIST* hooks, BOOL is_local);
2021-08-06 02:07:50 +02:00
void hook_create(HOOKLIST* hooks, BOOL initial_hook);
2021-06-11 20:30:43 +02:00
void hook_revert(HOOKLIST* hooks);
2019-03-19 06:57:49 +01:00
#endif