Telkin
Loading...
Searching...
No Matches
Hooks.h File Reference

Go to the source code of this file.

Classes

struct  tk::BranchHook
struct  tk::PointerHook
struct  tk::PatchHook
struct  tk::NullHook

Namespaces

namespace  tk

Macros

#define tMangle(...)
#define _tBranch3(addr, target, type)
#define _tBranch4(addr, target, sig, type)
#define tBranch(...)
#define tBranchEx(addr, targetSym, type)
#define _tPointerCode2(addr, target)
#define _tPointerCode3(addr, target, sig)
#define tPointerCode(...)
#define tPointerData(addr, target)
#define tPointerEx(addr, targetSym, isdata)
#define _tPatch_u(addr, bits, ...)
#define _tPatch_s(addr, bits, ...)
#define _tPatch_f(addr, bits, ...)
#define tPatch8u(addr, ...)
#define tPatch16u(addr, ...)
#define tPatch32u(addr, ...)
#define tPatch64u(addr, ...)
#define tPatch8s(addr, ...)
#define tPatch16s(addr, ...)
#define tPatch32s(addr, ...)
#define tPatch64s(addr, ...)
#define tPatch32f(addr, ...)
#define tPatch64f(addr, ...)
#define tPatchNop(addr)
#define tPatchBlr(addr)

Enumerations

enum class  tk::DataMagic : u32 { tk::BranchHook = 0x01C0FFEE , tk::PointerHook = 0x02C0FFEE , tk::PatchHook = 0x03C0FFEE , tk::NullHook = 0x04C0FFEE }
enum class  tk::BranchType : u32 { tk::b , tk::bl }

Variables

constexpr int tk::cHookSize = 0x20

Macro Definition Documentation

◆ tMangle

#define tMangle ( ...)
Value:
__builtin_mangle(__VA_ARGS__)

◆ _tBranch3

#define _tBranch3 ( addr,
target,
type )
Value:
tk::BranchHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::BranchHook(tk::DataMagic::BranchHook, reinterpret_cast<u32*>(addr), tMangle(target), type, 0, 0, 0, 0)
#define tMangle(...)
Definition Hooks.h:81
@ BranchHook
Definition Hooks.h:9
Definition Hooks.h:22

◆ _tBranch4

#define _tBranch4 ( addr,
target,
sig,
type )
Value:
tk::BranchHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::BranchHook(tk::DataMagic::BranchHook, reinterpret_cast<u32*>(addr), tMangle(target, sig), type, 0, 0, 0, 0)

◆ tBranch

#define tBranch ( ...)
Value:
PP_CONCAT_VAL(_tBranch, PP_NARG(__VA_ARGS__))(__VA_ARGS__)
#define PP_CONCAT_VAL(x, y)
Definition Preprocessor.h:8
#define PP_NARG(...)
Definition Preprocessor.h:31

◆ tBranchEx

#define tBranchEx ( addr,
targetSym,
type )
Value:
tk::BranchHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::BranchHook(tk::DataMagic::BranchHook, reinterpret_cast<u32*>(addr), targetSym, type, 0, 0, 0, 0)

◆ _tPointerCode2

#define _tPointerCode2 ( addr,
target )
Value:
tk::PointerHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::PointerHook(tk::DataMagic::PointerHook, reinterpret_cast<u32*>(addr), tMangle(target), false, 0, 0, 0, 0)
@ PointerHook
Definition Hooks.h:10
Definition Hooks.h:37

◆ _tPointerCode3

#define _tPointerCode3 ( addr,
target,
sig )
Value:
tk::PointerHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::PointerHook(tk::DataMagic::PointerHook, reinterpret_cast<u32*>(addr), tMangle(target, sig), false, 0, 0, 0, 0)

◆ tPointerCode

#define tPointerCode ( ...)
Value:
PP_CONCAT_VAL(_tPointerCode, PP_NARG(__VA_ARGS__))(__VA_ARGS__)

◆ tPointerData

#define tPointerData ( addr,
target )
Value:
tk::PointerHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::PointerHook(tk::DataMagic::PointerHook, reinterpret_cast<u32*>(addr), tMangle(target), true, 0, 0, 0, 0)

◆ tPointerEx

#define tPointerEx ( addr,
targetSym,
isdata )
Value:
tk::PointerHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::PointerHook(tk::DataMagic::PointerHook, reinterpret_cast<u32*>(addr), targetSym, isdata, 0, 0, 0, 0)

◆ _tPatch_u

#define _tPatch_u ( addr,
bits,
... )
Value:
const u##bits _tPatch_Data_ ## addr [] = { __VA_ARGS__ }; \
tk::PatchHook _tPatch_ ## addr __attribute__((section(".loaderdata"))) = tk::PatchHook(tk::DataMagic::PatchHook, reinterpret_cast<u32*>(addr), sizeof(_tPatch_Data_##addr) / sizeof(u##bits), bits, reinterpret_cast<const void*>(&_tPatch_Data_##addr), 0, 0, 0, 0)
@ PatchHook
Definition Hooks.h:11
Definition Hooks.h:52

◆ _tPatch_s

#define _tPatch_s ( addr,
bits,
... )
Value:
const s##bits _tPatch_Data_ ## addr [] = { __VA_ARGS__ }; \
tk::PatchHook _tPatch_ ## addr __attribute__((section(".loaderdata"))) = tk::PatchHook(tk::DataMagic::PatchHook, reinterpret_cast<u32*>(addr), sizeof(_tPatch_Data_##addr) / sizeof(u##bits), bits, reinterpret_cast<const void*>(&_tPatch_Data_##addr), 0, 0, 0, 0)

◆ _tPatch_f

#define _tPatch_f ( addr,
bits,
... )
Value:
const f##bits _tPatch_Data_ ## addr [] = { __VA_ARGS__ }; \
tk::PatchHook _tPatch_ ## addr __attribute__((section(".loaderdata"))) = tk::PatchHook(tk::DataMagic::PatchHook, reinterpret_cast<u32*>(addr), sizeof(_tPatch_Data_##addr) / sizeof(u##bits), bits, reinterpret_cast<const void*>(&_tPatch_Data_##addr), 0, 0, 0, 0)

◆ tPatch8u

#define tPatch8u ( addr,
... )
Value:
_tPatch_u(addr, 8, __VA_ARGS__)
#define _tPatch_u(addr, bits,...)
Definition Hooks.h:117

◆ tPatch16u

#define tPatch16u ( addr,
... )
Value:
_tPatch_u(addr, 16, __VA_ARGS__)

◆ tPatch32u

#define tPatch32u ( addr,
... )
Value:
_tPatch_u(addr, 32, __VA_ARGS__)

◆ tPatch64u

#define tPatch64u ( addr,
... )
Value:
_tPatch_u(addr, 64, __VA_ARGS__)

◆ tPatch8s

#define tPatch8s ( addr,
... )
Value:
_tPatch_s(addr, 8, __VA_ARGS__)
#define _tPatch_s(addr, bits,...)
Definition Hooks.h:121

◆ tPatch16s

#define tPatch16s ( addr,
... )
Value:
_tPatch_s(addr, 16, __VA_ARGS__)

◆ tPatch32s

#define tPatch32s ( addr,
... )
Value:
_tPatch_s(addr, 32, __VA_ARGS__)

◆ tPatch64s

#define tPatch64s ( addr,
... )
Value:
_tPatch_s(addr, 64, __VA_ARGS__)

◆ tPatch32f

#define tPatch32f ( addr,
... )
Value:
_tPatch_f(addr, 32, __VA_ARGS__)
#define _tPatch_f(addr, bits,...)
Definition Hooks.h:125

◆ tPatch64f

#define tPatch64f ( addr,
... )
Value:
_tPatch_f(addr, 64, __VA_ARGS__)

◆ tPatchNop

#define tPatchNop ( addr)
Value:
tPatch32u(addr, 0x60000000)
#define tPatch32u(addr,...)
Definition Hooks.h:131

◆ tPatchBlr

#define tPatchBlr ( addr)
Value:
tPatch32u(addr, 0x4E800020)