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 _tBranchPin4(addr, target, type, titleid)
#define _tBranchPin5(addr, target, sig, type, titleid)
#define tBranchPin(...)
#define tBranchEx(addr, targetSym, type)
#define tBranchPinEx(addr, targetSym, type, titleid)
#define _tPointerCode2(addr, target)
#define _tPointerCode3(addr, target, sig)
#define tPointerCode(...)
#define _tPointerCodePin3(addr, target, titleid)
#define _tPointerCodePin4(addr, target, sig)
#define tPointerCode(...)
#define tPointerCodePin(...)
#define tPointerData(addr, target)
#define tPointerEx(addr, targetSym, isdata)
#define tPointerPinEx(addr, targetSym, isdata, titleid)
#define _tPatch_u(addr, bits, ...)
#define _tPatch_s(addr, bits, ...)
#define _tPatch_f(addr, bits, ...)
#define _tPatchPin_u(addr, bits, titleid, ...)
#define _tPatchPin_s(addr, bits, titleid, ...)
#define _tPatchPin_f(addr, bits, titleid, ...)
#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)
#define tPatchPin8u(addr, titleid, ...)
#define tPatchPin16u(addr, titleid, ...)
#define tPatchPin32u(addr, titleid, ...)
#define tPatchPin64u(addr, titleid, ...)
#define tPatchPin8s(addr, titleid, ...)
#define tPatchPin16s(addr, titleid, ...)
#define tPatchPin32s(addr, titleid, ...)
#define tPatchPin64s(addr, titleid, ...)
#define tPatchPin32f(addr, titleid, ...)
#define tPatchPin64f(addr, titleid, ...)
#define tPatchPinNop(addr, titleid)
#define tPatchPinBlr(addr, titleid)

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, nullptr, 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, nullptr, 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

◆ _tBranchPin4

#define _tBranchPin4 ( addr,
target,
type,
titleid )
Value:
const u64 _tPin_ ## addr = titleid; \
tk::BranchHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::BranchHook(tk::DataMagic::BranchHook, reinterpret_cast<u32*>(addr), tMangle(target), type, &_tPin_ ## addr, 0, 0, 0)

◆ _tBranchPin5

#define _tBranchPin5 ( addr,
target,
sig,
type,
titleid )
Value:
const u64 _tPin_ ## addr = titleid; \
tk::BranchHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::BranchHook(tk::DataMagic::BranchHook, reinterpret_cast<u32*>(addr), tMangle(target, sig), type, &_tPin_ ## addr, 0, 0, 0)

◆ tBranchPin

#define tBranchPin ( ...)
Value:
PP_CONCAT_VAL(_tBranchPin, PP_NARG(__VA_ARGS__))(__VA_ARGS__)

◆ 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, nullptr, 0, 0, 0)

◆ tBranchPinEx

#define tBranchPinEx ( addr,
targetSym,
type,
titleid )
Value:
const u64 _tPin_ ## addr = titleid; \
tk::BranchHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::BranchHook(tk::DataMagic::BranchHook, reinterpret_cast<u32*>(addr), targetSym, type, &_tPin_ ## addr, 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, nullptr, 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, nullptr, 0, 0, 0)

◆ tPointerCode [1/2]

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

◆ _tPointerCodePin3

#define _tPointerCodePin3 ( addr,
target,
titleid )
Value:
const u64 _tPin_ ## addr = titleid; \
tk::PointerHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::PointerHook(tk::DataMagic::PointerHook, reinterpret_cast<u32*>(addr), tMangle(target), false, &_tPin_ ## addr, 0, 0, 0)

◆ _tPointerCodePin4

#define _tPointerCodePin4 ( addr,
target,
sig )
Value:
const u64 _tPin_ ## addr = titleid; \
tk::PointerHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::PointerHook(tk::DataMagic::PointerHook, reinterpret_cast<u32*>(addr), tMangle(target, sig), false, &_tPin_ ## addr, 0, 0, 0)

◆ tPointerCode [2/2]

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

◆ tPointerCodePin

#define tPointerCodePin ( ...)
Value:
PP_CONCAT_VAL(_tPointerCodePin, 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, nullptr, 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, nullptr, 0, 0, 0)

◆ tPointerPinEx

#define tPointerPinEx ( addr,
targetSym,
isdata,
titleid )
Value:
const u64 _tPin_ ## addr = titleid; \
tk::PointerHook _tHook_ ## addr __attribute__((section(".loaderdata"))) = tk::PointerHook(tk::DataMagic::PointerHook, reinterpret_cast<u32*>(addr), targetSym, isdata, &_tPin_ ## addr, 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), nullptr, 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), nullptr, 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), nullptr, 0, 0, 0)

◆ _tPatchPin_u

#define _tPatchPin_u ( addr,
bits,
titleid,
... )
Value:
const u##bits _tPatch_Data_ ## addr [] = { __VA_ARGS__ }; \
const u64 _tPin_ ## addr = titleid; \
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), &_tPin_ ## addr, 0, 0, 0)

◆ _tPatchPin_s

#define _tPatchPin_s ( addr,
bits,
titleid,
... )
Value:
const s##bits _tPatch_Data_ ## addr [] = { __VA_ARGS__ }; \
const u64 _tPin_ ## addr = titleid; \
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), &_tPin_ ## addr, 0, 0, 0)

◆ _tPatchPin_f

#define _tPatchPin_f ( addr,
bits,
titleid,
... )
Value:
const f##bits _tPatch_Data_ ## addr [] = { __VA_ARGS__ }; \
const u64 _tPin_ ## addr = titleid; \
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), &_tPin_ ## addr, 0, 0, 0)

◆ tPatch8u

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

◆ 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:160

◆ 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:164

◆ 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:185

◆ tPatchBlr

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

◆ tPatchPin8u

#define tPatchPin8u ( addr,
titleid,
... )
Value:
_tPatchPin_u(addr, 8, titleid, __VA_ARGS__)
#define _tPatchPin_u(addr, bits, titleid,...)
Definition Hooks.h:168

◆ tPatchPin16u

#define tPatchPin16u ( addr,
titleid,
... )
Value:
_tPatchPin_u(addr, 16, titleid, __VA_ARGS__)

◆ tPatchPin32u

#define tPatchPin32u ( addr,
titleid,
... )
Value:
_tPatchPin_u(addr, 32, titleid, __VA_ARGS__)

◆ tPatchPin64u

#define tPatchPin64u ( addr,
titleid,
... )
Value:
_tPatchPin_u(addr, 64, titleid, __VA_ARGS__)

◆ tPatchPin8s

#define tPatchPin8s ( addr,
titleid,
... )
Value:
_tPatchPin_s(addr, 8, titleid, __VA_ARGS__)
#define _tPatchPin_s(addr, bits, titleid,...)
Definition Hooks.h:173

◆ tPatchPin16s

#define tPatchPin16s ( addr,
titleid,
... )
Value:
_tPatchPin_s(addr, 16, titleid, __VA_ARGS__)

◆ tPatchPin32s

#define tPatchPin32s ( addr,
titleid,
... )
Value:
_tPatchPin_s(addr, 32, titleid, __VA_ARGS__)

◆ tPatchPin64s

#define tPatchPin64s ( addr,
titleid,
... )
Value:
_tPatchPin_s(addr, 64, titleid, __VA_ARGS__)

◆ tPatchPin32f

#define tPatchPin32f ( addr,
titleid,
... )
Value:
_tPatchPin_f(addr, 32, titleid, __VA_ARGS__)
#define _tPatchPin_f(addr, bits, titleid,...)
Definition Hooks.h:178

◆ tPatchPin64f

#define tPatchPin64f ( addr,
titleid,
... )
Value:
_tPatchPin_f(addr, 64, titleid, __VA_ARGS__)

◆ tPatchPinNop

#define tPatchPinNop ( addr,
titleid )
Value:
tPatchPin32u(addr, titleid, 0x60000000)
#define tPatchPin32u(addr, titleid,...)
Definition Hooks.h:201

◆ tPatchPinBlr

#define tPatchPinBlr ( addr,
titleid )
Value:
tPatchPin32u(addr, titleid, 0x4E800020)