Files
hook_tests/tester/mhook.cpp

46 lines
1.1 KiB
C++

#include <Windows.h>
#include <cstdint>
#include "../third_party/mhook/mhook-lib/mhook.h"
#include "typedefs.h"
#include "abstracthook.h"
#include "mhook.h"
#pragma comment(lib, "..\\x64\\debug\\test_cases.lib")
static TypeSmall trueSmall = &_small;
static TypeBranch trueBranch = &_branch;
static TypeRip_relative trueRip_Relative = &_rip_relative;
AbstractHookEngine* g_mhook = new MHook();
uint64_t MHook_Hooks::hookSmall(void) {
g_mhook->small_ = true;
return trueSmall();
}
uint64_t MHook_Hooks::hookBranch(uint64_t x) {
g_mhook->branch = true;
return trueBranch(x);
}
uint64_t MHook_Hooks::hookRip_relative(void) {
g_mhook->rip_relative = true;
return trueRip_Relative();
}
bool MHook::hook_all(void) {
bool ret = Mhook_SetHook((PVOID*)&trueSmall, &MHook_Hooks::hookSmall);
ret |= Mhook_SetHook((PVOID*)&trueBranch, &MHook_Hooks::hookBranch);
ret |= Mhook_SetHook((PVOID*)&trueRip_Relative, &MHook_Hooks::hookRip_relative);
return ret;
}
bool MHook::unhook_all() {
return Mhook_Unhook((PVOID*)&trueSmall) &&
Mhook_Unhook((PVOID*)&trueBranch) &&
Mhook_Unhook((PVOID*)&trueRip_Relative);
}