Advertisement
Jo-Milk

SPRX Stuff C++ Jo-Milk

Jan 7th, 2018
1,639
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.44 KB | None | 0 0
  1. SPRX Stuff C++ Jo-Milk
  2.  
  3. To Fix Many undefined functions inside headers I always add those in project properties linker
  4. Additional Dependencies
  5. -------------------------------------------------------------------------------------------------------------------------------------
  6. libsn.a;libm.a;libio_stub.a;libfs_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsnc.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil_userinfo_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libhttp_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libhttp_util_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libnet_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libnetctl_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil_np_trophy_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libl10n_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil_game_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil_np_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libc.a;$(SCE_PS3_ROOT)\target\ppu\lib\libc_stub.a;$(SN_PS3_PATH)\ppu\lib\sn\libsn.a;$(SCE_PS3_ROOT)\target\ppu\lib\libio_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysmodule_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsyscall.a;$(SCE_PS3_ROOT)\target\ppu\lib\libstdc++_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\fno-exceptions\libstdc++_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\fno-exceptions\fno-rtti\libstdc++_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libgcm_sys_stub.a;$(SCE_PS3_ROOT)\host-win32\spu\lib\gcc\spu-lv2\4.1.1\libgcc.a;%(AdditionalDependencies)
  7. -------------------------------------------------------------------------------------------------------------------------------------
  8.  
  9. libsn.a;libm.a;libio_stub.a;libfs_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libvshmain_export_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsnc.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil_userinfo_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libhttp_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libhttp_util_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libnet_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libnetctl_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil_np_trophy_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libl10n_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil_game_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil_np_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libc.a;$(SCE_PS3_ROOT)\target\ppu\lib\libc_stub.a;$(SN_PS3_PATH)\ppu\lib\sn\libsn.a;$(SCE_PS3_ROOT)\target\ppu\lib\libio_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsysmodule_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libsyscall.a;$(SCE_PS3_ROOT)\target\ppu\lib\libstdc++_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\fno-exceptions\libstdc++_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\fno-exceptions\fno-rtti\libstdc++_stub.a;$(SCE_PS3_ROOT)\target\ppu\lib\libgcm_sys_stub.a;$(SCE_PS3_ROOT)\host-win32\spu\lib\gcc\spu-lv2\4.1.1\libgcc.a;%(AdditionalDependencies)
  10. -------------------------------------------------------------------------------------------------------------------------------------
  11.  
  12. #define SC_PEEK_LV2                     6
  13. #define SC_POKE_LV2                     7
  14. #define SC_PEEK_LV1                     8
  15. #define SC_POKE_LV1                     9
  16.  
  17. static inline uint64_t peekq(uint64_t addr);
  18. static inline void pokeq( uint64_t addr, uint64_t val);
  19. static inline uint64_t peek_lv1(uint64_t addr);
  20. static inline void poke_lv1( uint64_t addr, uint64_t val);
  21.  
  22. static inline uint64_t peekq(uint64_t addr) //lv2
  23. {
  24.     system_call_1(SC_PEEK_LV2, addr);
  25.     return_to_user_prog(uint64_t);
  26. }
  27. static inline void pokeq( uint64_t addr, uint64_t val) //lv2
  28. {
  29.     system_call_2(SC_POKE_LV2, addr, val);
  30. }
  31. static inline uint64_t peek_lv1(uint64_t addr)
  32. {
  33.     system_call_1(SC_PEEK_LV1, (uint64_t) addr);
  34.     return (uint64_t) p1;
  35. }
  36. static inline void poke_lv1( uint64_t addr, uint64_t val)
  37. {
  38.     system_call_2(SC_POKE_LV1, addr, val);
  39. }
  40. int console_write(const char * s)
  41. {
  42.         uint32_t len;
  43.         system_call_4(403, 0, (uint64_t) s, 32, (uint64_t) &len);
  44.         return_to_user_prog(int);
  45. }
  46. void sleep(usecond_t time)
  47. {
  48.         sys_timer_usleep(time * 1000);
  49. }
  50. sys_ppu_thread_t id;
  51. sys_ppu_thread_t create_thread(void (*entry)(uint64_t), int priority, size_t stacksize, const char* threadname)
  52. {      
  53.         if(sys_ppu_thread_create(&id, entry, 0, priority , stacksize, 0, threadname) != CELL_OK)
  54.         {
  55.                 console_write("Thread creation failed\n");    
  56.         }
  57.         else
  58.         {
  59.                 console_write("Thread created\n");    
  60.         }      
  61.     return id;
  62. }
  63.  int32_t sys_dbg_read_process_memory(uint64_t address, void *data, size_t size)//DEX READ
  64. {
  65.     system_call_4(904, (uint64_t)sys_process_getpid(), address, size, (uint64_t)data);
  66.     return_to_user_prog(int32_t);
  67. }
  68.  
  69. template<typename T>
  70. int32_t ReadProcessMemory(uint32_t address, T data, size_t size)//DEX READ
  71. {
  72.     return sys_dbg_read_process_memory(address, &data, size);
  73. }
  74.  
  75. int32_t sys_dbg_write_process_memory(uint64_t address, const void *data, size_t size)//DEX write
  76. {
  77.     system_call_4(905, (uint64_t)sys_process_getpid(), address, size, (uint64_t)data);
  78.     return_to_user_prog(int32_t);
  79. }
  80.  
  81. template<typename T>
  82. int32_t WriteProcessMemory(uint32_t address, const T value, size_t size)//DEX write
  83. {
  84.     return sys_dbg_write_process_memory(address, &value, size);
  85. }
  86.  
  87. void PS3_SetMemory(int Address,char* bytes,int length)//DEX write  
  88. {
  89.         for (int i = 0; i < length; i++)
  90.         {
  91.             WriteProcessMemory((Address + (i)),bytes[i],1);
  92.         }
  93. }
  94. void HookFunctionStart(uint32_t functionStartAddress, uint32_t newFunction, uint32_t functionStub)
  95. {
  96.     uint32_t normalFunctionStub[8], hookFunctionStub[4];
  97.     sys_dbg_read_process_memory(functionStartAddress, normalFunctionStub, 0x10);
  98.     normalFunctionStub[4] = 0x3D600000 + ((functionStartAddress + 0x10 >> 16) & 0xFFFF);
  99.     normalFunctionStub[5] = 0x616B0000 + (functionStartAddress + 0x10 & 0xFFFF);
  100.     normalFunctionStub[6] = 0x7D6903A6;
  101.     normalFunctionStub[7] = 0x4E800420;
  102.     sys_dbg_write_process_memory(functionStub, normalFunctionStub, 0x20);
  103.     hookFunctionStub[0] = 0x3D600000 + ((newFunction >> 16) & 0xFFFF);
  104.     hookFunctionStub[1] = 0x616B0000 + (newFunction & 0xFFFF);
  105.     hookFunctionStub[2] = 0x7D6903A6;
  106.     hookFunctionStub[3] = 0x4E800420;
  107.     sys_dbg_write_process_memory(functionStartAddress, hookFunctionStub, 0x10);
  108. }
  109.  
  110. int32_t HookFunction(uint32_t address, uint32_t function)
  111. {
  112.     uint32_t opcode[4];
  113.     opcode[0] = 0x3D600000 + ((function >> 16) & 0xFFFF);
  114.     opcode[1] = 0x616B0000 + (function & 0xFFFF);
  115.     opcode[2] = 0x7D6903A6;
  116.     opcode[3] = 0x4E800420;
  117.     return sys_dbg_write_process_memory(address, &opcode, 0x10);
  118. }
  119.  
  120. int32_t HookFunctionLinked(uint32_t address, uint32_t function)
  121. {
  122.     uint32_t opcode[4];
  123.     opcode[0] = 0x3D600000 + ((function >> 16) & 0xFFFF);
  124.     opcode[1] = 0x616B0000 + (function & 0xFFFF);
  125.     opcode[2] = 0x7D6903A6;
  126.     opcode[3] = 0x4E800421;
  127.     return sys_dbg_write_process_memory(address, &opcode, 0x10);
  128. }
  129.  
  130. int32_t BranchLinkedHook(uint32_t branchFrom, uint32_t branchTo)
  131. {
  132.     uint32_t branch;
  133.     if (branchTo > branchFrom)
  134.         branch = 0x48000001 + (branchTo - branchFrom);
  135.     else
  136.         branch = 0x4C000001 - (branchFrom - branchTo);
  137.     return sys_dbg_write_process_memory(branchFrom, &branch, 4);
  138. }
  139.  
  140. int32_t BranchHook(uint32_t branchFrom, uint32_t branchTo)
  141. {
  142.     uint32_t branch;
  143.     if (branchTo > branchFrom)
  144.         branch = 0x48000000 + (branchTo - branchFrom);
  145.     else
  146.         branch = 0x4C000000 - (branchFrom - branchTo);
  147.     return sys_dbg_write_process_memory(branchFrom, &branch, 4);
  148. }
  149.  
  150. const char * GetSelfUserName()
  151. {
  152.     CellUserInfoUserStat stat;
  153.     cellUserInfoGetStat(CELL_SYSUTIL_USERID_CURRENT, &stat);
  154.     return stat.name;
  155. }
  156.  
  157. const char * GetSelfOnlineName()
  158. {
  159.     SceNpOnlineName onlineName;
  160.     sceNpManagerGetOnlineName(&onlineName);
  161.     return onlineName.data;
  162. }
  163.  
  164. const char * GetSelfName()
  165. {
  166.     int connectionStatus;
  167.     sceNpManagerGetStatus(&connectionStatus);//checks if online
  168.     if (connectionStatus == SCE_NP_MANAGER_STATUS_ONLINE)
  169.         return GetSelfOnlineName();
  170.     else
  171.         return GetSelfUserName();
  172. }
  173.  
  174. /*void WriteLog(const char * logDir, const char * log) {
  175.     int fd;
  176.     if (cellFsOpen(logDir, CELL_FS_O_CREAT | CELL_FS_O_APPEND, &fd, 0, 0) == CELL_FS_SUCCEEDED){
  177.         cellFsWrite(fd, (const void*)&log, sizeof(log), 0);
  178.     }
  179. }*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement