Advertisement
xerpi

vita hook all

Dec 26th, 2016
430
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.16 KB | None | 0 0
  1.  
  2. static unsigned int nid_table[] = {
  3.     0x03C3AC7C,
  4.     0x062A11A2,
  5.     0x10A998DE,
  6.     0x1247257A,
  7.     0x174D0333,
  8.     0x328E38B0,
  9.     0x384F6C68,
  10.     0x3F3FBF69,
  11.     0x423F26D3,
  12.     0x4DF3A37C,
  13.     0x4E6C4558,
  14.     0x628D9324,
  15.     0x63DCF2FE,
  16.     0x70C8AACE,
  17.     0x7985B164,
  18.     0x845E2115,
  19.     0x937DB4C0,
  20.     0x9A91F624,
  21.     0x9B3F7207,
  22.     0x9C8CCB66,
  23.     0xA32529B8,
  24.     0xBAD1960B,
  25.     0xC7F0DAA0,
  26.     0xCDE79889,
  27.     0xDDCF5145,
  28.     0xE1C5D95F,
  29.     0xE41B4BF8,
  30.     0xEBF4C86A,
  31.     0xFD2E0278
  32. };
  33.  
  34. #define NID_TABLE_SIZE (19)
  35. //#define NID_TABLE_SIZE (sizeof(nid_table) / sizeof(*nid_table))
  36.  
  37. static SceUID hook_uids[NID_TABLE_SIZE] = {-1, -1};
  38. static tai_hook_ref_t hook_refs[NID_TABLE_SIZE];
  39.  
  40. #define HOOK_FUNC(nid) \
  41.     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) \
  42.     { \
  43.         LOG(# nid "_hook(0x%08X, 0x%08X, 0x%08X, 0x%08X)\n", r0, r1, r2, r3); \
  44.         int i = 0; \
  45.         while (nid_table[i] != nid && i < NID_TABLE_SIZE) \
  46.             i++; \
  47.         return TAI_CONTINUE(int, hook_refs[i], r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12); \
  48.     }
  49.  
  50. HOOK_FUNC(0x062A11A2)
  51. HOOK_FUNC(0x10A998DE)
  52. HOOK_FUNC(0x1247257A)
  53. HOOK_FUNC(0x174D0333)
  54. HOOK_FUNC(0x328E38B0)
  55. HOOK_FUNC(0x384F6C68)
  56. HOOK_FUNC(0x3F3FBF69)
  57. HOOK_FUNC(0x423F26D3)
  58. HOOK_FUNC(0x4DF3A37C)
  59. HOOK_FUNC(0x4E6C4558)
  60. HOOK_FUNC(0x628D9324)
  61. HOOK_FUNC(0x63DCF2FE)
  62. HOOK_FUNC(0x70C8AACE)
  63. HOOK_FUNC(0x7985B164)
  64. HOOK_FUNC(0x845E2115)
  65. HOOK_FUNC(0x937DB4C0)
  66. HOOK_FUNC(0x9A91F624)
  67. HOOK_FUNC(0x9B3F7207)
  68. HOOK_FUNC(0x9C8CCB66)
  69. HOOK_FUNC(0xA32529B8)
  70. HOOK_FUNC(0xBAD1960B)
  71. HOOK_FUNC(0xC7F0DAA0)
  72. HOOK_FUNC(0xCDE79889)
  73. HOOK_FUNC(0xDDCF5145)
  74. HOOK_FUNC(0xE1C5D95F)
  75. HOOK_FUNC(0xE41B4BF8)
  76. HOOK_FUNC(0xEBF4C86A)
  77. HOOK_FUNC(0xFD2E0278)
  78.  
  79.  
  80. #define HOOK_FUNC_PTR(nid) \
  81.         &name ## nid ## _hook
  82.  
  83. static void *func_ptr_table[] = {
  84.     HOOK_FUNC_PTR(0x062A11A2),
  85.     HOOK_FUNC_PTR(0x10A998DE),
  86.     HOOK_FUNC_PTR(0x1247257A),
  87.     HOOK_FUNC_PTR(0x174D0333),
  88.     HOOK_FUNC_PTR(0x328E38B0),
  89.     HOOK_FUNC_PTR(0x384F6C68),
  90.     HOOK_FUNC_PTR(0x3F3FBF69),
  91.     HOOK_FUNC_PTR(0x423F26D3),
  92.     HOOK_FUNC_PTR(0x4DF3A37C),
  93.     HOOK_FUNC_PTR(0x4E6C4558),
  94.     HOOK_FUNC_PTR(0x628D9324),
  95.     HOOK_FUNC_PTR(0x63DCF2FE),
  96.     HOOK_FUNC_PTR(0x70C8AACE),
  97.     HOOK_FUNC_PTR(0x7985B164),
  98.     HOOK_FUNC_PTR(0x845E2115),
  99.     HOOK_FUNC_PTR(0x937DB4C0),
  100.     HOOK_FUNC_PTR(0x9A91F624),
  101.     HOOK_FUNC_PTR(0x9B3F7207),
  102.     HOOK_FUNC_PTR(0x9C8CCB66),
  103.     HOOK_FUNC_PTR(0xA32529B8),
  104.     HOOK_FUNC_PTR(0xBAD1960B),
  105.     HOOK_FUNC_PTR(0xC7F0DAA0),
  106.     HOOK_FUNC_PTR(0xCDE79889),
  107.     HOOK_FUNC_PTR(0xDDCF5145),
  108.     HOOK_FUNC_PTR(0xE1C5D95F),
  109.     HOOK_FUNC_PTR(0xE41B4BF8),
  110.     HOOK_FUNC_PTR(0xEBF4C86A),
  111.     HOOK_FUNC_PTR(0xFD2E0278),
  112. };
  113.  
  114. static void hooks_init()
  115. {
  116.     for (int i = 0; i < NID_TABLE_SIZE; i++)
  117.         hook_uids[i] = -1;
  118.  
  119.     for (int i = 0; i < NID_TABLE_SIZE; i++) {
  120.         hook_uids[i] = taiHookFunctionExportForKernel(KERNEL_PID,
  121.                 &hook_refs[i],
  122.                 "SceTouch",
  123.                 TAI_ANY_LIBRARY,
  124.                 nid_table[i],
  125.                 func_ptr_table[i]);
  126.         if (hook_uids[i] < 0) {
  127.             LOG("Error hooking NID 0x%08X: 0x%08X\n",
  128.                 nid_table[i], hook_uids[i]);
  129.         }
  130.  
  131.     }
  132. }
  133.  
  134. static void hooks_deinit()
  135. {
  136.     for (int i = 0; i < NID_TABLE_SIZE; i++) {
  137.         if (hook_uids[i] >= 0)
  138.             taiHookReleaseForKernel(hook_uids[i], hook_refs[i]);
  139.     }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement