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.
Note: This library uses the Vutils INL/IAT Hooking backend.
Eg. To hook/un-hook a function with the Inline Hooking
technique, you only need to write codes as the following
#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
#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);
See doc comments in the code files inside the cpp-hooking folder.
- Installed Vutils library
- Copy the cpp-hooking folder to your solution then
#include "cpp-hooking\hooking.h"
- Enjoy
- Merge to Vutils library