2.3 Hook: Handle & Memory Patching - gottyduke/DKUtil GitHub Wiki
HookHandle
HookHandle
class is the result object of a succesful DKUtil::Hook
operation(except relocation hooks). HookHandle
is used to access the hook specific data and enable/disable the hook that created it.
HookHandle handle;
// hook control
handle->Enable();
handle->Disable();
Memory Structure
DKUtil::Hook
supports a few ways of passing memory patches/data to the hook. Using example of mov rcx, qword ptr [rsp+0x20]
:
struct XbyakPatch : Xbyak::CodeGenerator
{
XbyakPatch
{
mov(rcx, rsp[0x20]);
}
};
DKUtil::Patch DKUPatch {
"\x48\x8B\x4C\x24\x20"; // data pointer
5, // size
};
std::array<std::uint8_t, 5> RawPatch{ 0x48, 0x8B, 0x4C, 0x24, 0x20 };
The DKUtil::Hook
functions are overloaded to accept above memory structure pointers.