diff --git a/Hook.cpp b/Hook.cpp deleted file mode 100644 index 6457d33..0000000 --- a/Hook.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "Hook.hpp" - -namespace Hook -{ - //--- default constructor - Detour::Detour(uintptr_t addrToHook, uintptr_t jmpTo) - : HookAddress(addrToHook), DetourAddress(jmpTo) - { - //finish the shellcode by adding the address to jmp to - *(uintptr_t*)(jmpCode + OFFSET_TO_ADDRESS) = jmpTo; - //save old bytes - memcpy(originalBytes, (void*)HookAddress, JMP_CODE_SIZE); - //install the hook. - InstallHook(); - } - - Detour::~Detour() - {UninstallHook();} - - void Detour::InstallHook() - { - //install the hook. - WriteToReadOnly(HookAddress, (void *)jmpCode, JMP_CODE_SIZE); - isHookInstalled = true; - } - - void Detour::UninstallHook() - { - //write the original bytes back. - WriteToReadOnly(HookAddress, originalBytes, JMP_CODE_SIZE); - isHookInstalled = false; - } - - uintptr_t Detour::GetHookAddress() - {return HookAddress;} - - uintptr_t Detour::GetDetourAddress() - {return DetourAddress;} - - bool Detour::IsInstalled() - {return isHookInstalled;} -} \ No newline at end of file diff --git a/hook.cpp b/hook.cpp new file mode 100644 index 0000000..3b06168 --- /dev/null +++ b/hook.cpp @@ -0,0 +1,42 @@ +#include "hook.hpp" + +namespace hook +{ + //--- default constructor + detour::detour(void* addr_to_hook, void* jmp_to_addr) + : hook_addr((std::uintptr_t)addr_to_hook), detour_addr((std::uintptr_t)jmp_to_addr) + { + //finish the shellcode by adding the address to jmp to + *(uintptr_t*)(jmp_code + OFFSET_TO_ADDRESS) = (std::uintptr_t)jmp_to_addr; + //save old bytes + memcpy(org_bytes, (void*)hook_addr, JMP_CODE_SIZE); + //install the hook. + install(); + } + + detour::~detour() + {uninstall();} + + void detour::install() + { + //install the hook. + write_to_readonly((void *)hook_addr, jmp_code, JMP_CODE_SIZE); + hook_installed = true; + } + + void detour::uninstall() + { + //write the original bytes back. + write_to_readonly((void *)hook_addr, org_bytes, JMP_CODE_SIZE); + hook_installed = false; + } + + uintptr_t detour::hook_address() + {return hook_addr;} + + uintptr_t detour::detour_address() + {return detour_addr;} + + bool detour::installed() + {return hook_installed;} +} \ No newline at end of file