Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static unsigned int nid_table[] = {
- 0x03C3AC7C,
- 0x062A11A2,
- 0x10A998DE,
- 0x1247257A,
- 0x174D0333,
- 0x328E38B0,
- 0x384F6C68,
- 0x3F3FBF69,
- 0x423F26D3,
- 0x4DF3A37C,
- 0x4E6C4558,
- 0x628D9324,
- 0x63DCF2FE,
- 0x70C8AACE,
- 0x7985B164,
- 0x845E2115,
- 0x937DB4C0,
- 0x9A91F624,
- 0x9B3F7207,
- 0x9C8CCB66,
- 0xA32529B8,
- 0xBAD1960B,
- 0xC7F0DAA0,
- 0xCDE79889,
- 0xDDCF5145,
- 0xE1C5D95F,
- 0xE41B4BF8,
- 0xEBF4C86A,
- 0xFD2E0278
- };
- #define NID_TABLE_SIZE (19)
- //#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(0x062A11A2)
- HOOK_FUNC(0x10A998DE)
- HOOK_FUNC(0x1247257A)
- HOOK_FUNC(0x174D0333)
- HOOK_FUNC(0x328E38B0)
- HOOK_FUNC(0x384F6C68)
- HOOK_FUNC(0x3F3FBF69)
- HOOK_FUNC(0x423F26D3)
- HOOK_FUNC(0x4DF3A37C)
- HOOK_FUNC(0x4E6C4558)
- HOOK_FUNC(0x628D9324)
- HOOK_FUNC(0x63DCF2FE)
- HOOK_FUNC(0x70C8AACE)
- HOOK_FUNC(0x7985B164)
- HOOK_FUNC(0x845E2115)
- HOOK_FUNC(0x937DB4C0)
- HOOK_FUNC(0x9A91F624)
- HOOK_FUNC(0x9B3F7207)
- HOOK_FUNC(0x9C8CCB66)
- HOOK_FUNC(0xA32529B8)
- HOOK_FUNC(0xBAD1960B)
- HOOK_FUNC(0xC7F0DAA0)
- HOOK_FUNC(0xCDE79889)
- HOOK_FUNC(0xDDCF5145)
- HOOK_FUNC(0xE1C5D95F)
- HOOK_FUNC(0xE41B4BF8)
- HOOK_FUNC(0xEBF4C86A)
- HOOK_FUNC(0xFD2E0278)
- #define HOOK_FUNC_PTR(nid) \
- &name ## nid ## _hook
- static void *func_ptr_table[] = {
- HOOK_FUNC_PTR(0x062A11A2),
- HOOK_FUNC_PTR(0x10A998DE),
- HOOK_FUNC_PTR(0x1247257A),
- HOOK_FUNC_PTR(0x174D0333),
- HOOK_FUNC_PTR(0x328E38B0),
- HOOK_FUNC_PTR(0x384F6C68),
- HOOK_FUNC_PTR(0x3F3FBF69),
- HOOK_FUNC_PTR(0x423F26D3),
- HOOK_FUNC_PTR(0x4DF3A37C),
- HOOK_FUNC_PTR(0x4E6C4558),
- HOOK_FUNC_PTR(0x628D9324),
- HOOK_FUNC_PTR(0x63DCF2FE),
- HOOK_FUNC_PTR(0x70C8AACE),
- HOOK_FUNC_PTR(0x7985B164),
- HOOK_FUNC_PTR(0x845E2115),
- HOOK_FUNC_PTR(0x937DB4C0),
- HOOK_FUNC_PTR(0x9A91F624),
- HOOK_FUNC_PTR(0x9B3F7207),
- HOOK_FUNC_PTR(0x9C8CCB66),
- HOOK_FUNC_PTR(0xA32529B8),
- HOOK_FUNC_PTR(0xBAD1960B),
- HOOK_FUNC_PTR(0xC7F0DAA0),
- HOOK_FUNC_PTR(0xCDE79889),
- HOOK_FUNC_PTR(0xDDCF5145),
- HOOK_FUNC_PTR(0xE1C5D95F),
- HOOK_FUNC_PTR(0xE41B4BF8),
- HOOK_FUNC_PTR(0xEBF4C86A),
- HOOK_FUNC_PTR(0xFD2E0278),
- };
- 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