With this library, you can set up function hooking easily and write less code.
It supports both Inline hooking & IAT hooking on both 32-bit & 64-bit.
Eg. To hook/un-hook a function with the Inline Hooking technique, you only need to write codes as the following
Code:
#include "cpp-hooking/hooking.h"
// Define the hooking function
int WINAPI hkMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType)
{
lpText = L"INL Hooked";
return INLHookingManager::instance().invoke<int>(MessageBoxW, hWnd, lpText, lpCaption, uType);
}
// Perform hooking
INLHookingManager::instance().hook(MessageBoxW, hkMessageBoxW);
// Perform un-hooking
INLHookingManager::instance().unhook(MessageBoxW);
Eg. To hook/un-hook a function with the IAT Hooking technique, you only need to write codes as the following
Code:
#include "cpp-hooking/hooking.h"
// Define the hooking entry
#define Entry_MessageBoxW { "cpp-hooking.exe"s, "user32.dll"s, "MessageBoxW"s }
// Define the hooking function
int WINAPI hkMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType)
{
lpText = L"IAT Hooked";
return IATHookingManager::instance().invoke<int>(Entry_MessageBoxW, hWnd, lpText, lpCaption, uType);
}
// Perform hooking
IATHookingManager::instance().hook(Entry_MessageBoxW, hkMessageBoxW);
// Perform un-hooking
IATHookingManager::instance().unhook(Entry_MessageBoxW);
The repository @
https://github.com/vic4key/cpp-hooking.git
Follow me on GitHub @
https://github.com/vic4key
Regards,
Vic P.