Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static unsigned int nid_table[] = {
- 0x012EAE3A,
- 0x04440622,
- 0x08DD4C7C,
- 0x10A2CA25,
- 0x13CDFC43,
- 0x169A1D58,
- 0x1B9C5D14,
- 0x26531526,
- 0x2CF6D7E2,
- 0x2D94EAEA,
- 0x39401BEA,
- 0x3AD3D0A1,
- 0x41194411,
- 0x609EA489,
- 0x6134DFBE,
- 0x93B5635B,
- 0x9F0ACAF9,
- 0xA3FE877B,
- 0xAB364C23,
- 0xB18370C2,
- 0xBD59D652,
- 0xD7889B91,
- 0xDC8671EA,
- 0xE0C1DB92,
- 0xED25DFDC,
- 0xF0704CF3,
- 0xFF082DF0
- };
- //#define NID_TABLE_SIZE (24)
- #define NID_TABLE_SIZE (sizeof(nid_table) / sizeof(*nid_table))
- static SceUID hook_uids[NID_TABLE_SIZE] = {-1, -1};
- static tai_hook_ref_t hook_refs[NID_TABLE_SIZE];
- #define HOOK_FUNC(nid) \
- int name ## nid ## _hook(int r0, int r1, int r2, int r3, int r4, int r5, int r6, int r7, int r8, int r9, int r10, int r11, int r12) \
- { \
- LOG(# nid "_hook(0x%08X, 0x%08X, 0x%08X, 0x%08X)\n", r0, r1, r2, r3); \
- int i = 0; \
- while (nid_table[i] != nid && i < NID_TABLE_SIZE) \
- i++; \
- return TAI_CONTINUE(int, hook_refs[i], r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12); \
- }
- HOOK_FUNC(0x012EAE3A)
- HOOK_FUNC(0x04440622)
- HOOK_FUNC(0x08DD4C7C)
- HOOK_FUNC(0x10A2CA25)
- HOOK_FUNC(0x13CDFC43)
- HOOK_FUNC(0x169A1D58)
- HOOK_FUNC(0x1B9C5D14)
- HOOK_FUNC(0x26531526)
- HOOK_FUNC(0x2CF6D7E2)
- HOOK_FUNC(0x2D94EAEA)
- HOOK_FUNC(0x39401BEA)
- HOOK_FUNC(0x3AD3D0A1)
- HOOK_FUNC(0x41194411)
- HOOK_FUNC(0x609EA489)
- HOOK_FUNC(0x6134DFBE)
- HOOK_FUNC(0x93B5635B)
- HOOK_FUNC(0x9F0ACAF9)
- HOOK_FUNC(0xA3FE877B)
- HOOK_FUNC(0xAB364C23)
- HOOK_FUNC(0xB18370C2)
- HOOK_FUNC(0xBD59D652)
- HOOK_FUNC(0xD7889B91)
- HOOK_FUNC(0xDC8671EA)
- HOOK_FUNC(0xE0C1DB92)
- HOOK_FUNC(0xED25DFDC)
- HOOK_FUNC(0xF0704CF3)
- HOOK_FUNC(0xFF082DF0)
- #define HOOK_FUNC_PTR(nid) \
- &name ## nid ## _hook
- static void *func_ptr_table[] = {
- HOOK_FUNC_PTR(0x012EAE3A),
- HOOK_FUNC_PTR(0x04440622),
- HOOK_FUNC_PTR(0x08DD4C7C),
- HOOK_FUNC_PTR(0x10A2CA25),
- HOOK_FUNC_PTR(0x13CDFC43),
- HOOK_FUNC_PTR(0x169A1D58),
- HOOK_FUNC_PTR(0x1B9C5D14),
- HOOK_FUNC_PTR(0x26531526),
- HOOK_FUNC_PTR(0x2CF6D7E2),
- HOOK_FUNC_PTR(0x2D94EAEA),
- HOOK_FUNC_PTR(0x39401BEA),
- HOOK_FUNC_PTR(0x3AD3D0A1),
- HOOK_FUNC_PTR(0x41194411),
- HOOK_FUNC_PTR(0x609EA489),
- HOOK_FUNC_PTR(0x6134DFBE),
- HOOK_FUNC_PTR(0x93B5635B),
- HOOK_FUNC_PTR(0x9F0ACAF9),
- HOOK_FUNC_PTR(0xA3FE877B),
- HOOK_FUNC_PTR(0xAB364C23),
- HOOK_FUNC_PTR(0xB18370C2),
- HOOK_FUNC_PTR(0xBD59D652),
- HOOK_FUNC_PTR(0xD7889B91),
- HOOK_FUNC_PTR(0xDC8671EA),
- HOOK_FUNC_PTR(0xE0C1DB92),
- HOOK_FUNC_PTR(0xED25DFDC),
- HOOK_FUNC_PTR(0xF0704CF3),
- HOOK_FUNC_PTR(0xFF082DF0),
- };
- static void hooks_init()
- {
- for (int i = 0; i < NID_TABLE_SIZE; i++)
- hook_uids[i] = -1;
- for (int i = 0; i < NID_TABLE_SIZE; i++) {
- hook_uids[i] = taiHookFunctionExportForKernel(KERNEL_PID,
- &hook_refs[i],
- "SceTouch",
- TAI_ANY_LIBRARY,
- nid_table[i],
- func_ptr_table[i]);
- if (hook_uids[i] < 0) {
- LOG("Error hooking NID 0x%08X: 0x%08X\n",
- nid_table[i], hook_uids[i]);
- }
- }
- }
- static void hooks_deinit()
- {
- for (int i = 0; i < NID_TABLE_SIZE; i++) {
- if (hook_uids[i] >= 0)
- taiHookReleaseForKernel(hook_uids[i], hook_refs[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement