#pragma once namespace MHook_Hooks { uint64_t hookSmall(void); uint64_t hookBranch(uint64_t); uint64_t hookRip_relative(void); void hookAVX(float num, void* res); uint32_t hookRDRAND(void); uint32_t hookLoop(uint32_t num, uint32_t cnt); uint32_t hookTail_recursion(uint32_t x); }; class MHook : public AbstractHookEngine { public: bool hook_all(); bool unhook_all(); MHook() : AbstractHookEngine("MHook") { } friend uint64_t MHook_Hooks::hookSmall(void); friend uint64_t MHook_Hooks::hookBranch(uint64_t); friend uint64_t MHook_Hooks::hookRip_relative(void); friend void MHook_Hooks::hookAVX(float num, void* res); friend uint32_t MHook_Hooks::hookRDRAND(void); friend uint32_t MHook_Hooks::hookLoop(uint32_t num, uint32_t cnt); friend uint32_t MHook_Hooks::hookTail_recursion(uint32_t x); };