Posted November 7, 20231 yr 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 #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); The repository @ https://github.com/vic4key/cpp-hooking.git Follow me on GitHub @ https://github.com/vic4key Regards, Vic P. Edited November 7, 20231 yr by Vic CrLf
August 21, 20241 yr On 11/7/2023 at 7:15 AM, Vic said: 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 #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); The repository @ https://github.com/vic4key/cpp-hooking.git Follow me on GitHub @ https://github.com/vic4key Regards, Vic P. Does it possible to restore the api hooked with detour? Thanks Edited August 21, 20241 yr by TRISTAN Pro
Create an account or sign in to comment