llBeastModell

NINJA XOSC

Nov 8th, 2015
1,097
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.99 KB | None | 0 0
  1. //NINJA XOSC
  2.  
  3. typedef struct _XOSC {
  4. DWORD dwResult; // 0x00-0x04
  5. BYTE Unknown1[0x4]; // 0x04-0x08
  6. QWORD qwOperations; // 0x08-0x10
  7. BYTE Unknown2[0x8]; // 0x10-0x18
  8. DWORD dwExecutionResult; // 0x18-0x1C
  9. BYTE Unknown3[0x1C]; // 0x1C-0x38
  10. XEX_EXECUTION_ID xexExecutionId; // 0x38-0x50
  11. BYTE bCpuKeyHash[0x10]; // 0x50-0x60
  12. BYTE bKvHash[0x10]; // 0x60-0x70
  13. BYTE Unknown4[0x13]; // 0x70-0x83
  14. BYTE bKvDrivePhaseLevel; // 0x83-0x84
  15. QWORD qwXampOddMediaStuff; // 0x84-0x8C
  16. BYTE Unknown5[0x64]; // 0x8C-0xF0
  17. BYTE bKvDriveData1[0x24]; // 0xF0-0x114
  18. BYTE bKvDriveData2[0x24]; // 0x114-0x138
  19. BYTE bSerialNumber[0xC]; // 0x138-0x144
  20. WORD wUnknown1; // 0x144-0x146
  21. WORD wXamBldrBase; // 0x146-0x148
  22. WORD wXamRegion; // 0x148-0x14A
  23. WORD wXamOdd; // 0x14A-0x14C
  24. BYTE stuff6[0xC]; // 0x14C-0x158
  25. DWORD dwXamBaseFlag; // 0x158-0x15C
  26. BYTE Unknown7[0x3C]; // 0x15C-0x198
  27. QWORD qwHvProtectedFlags; // 0x198-0x1A0
  28. BYTE bConsoleID[0x5]; // 0x1A0-0x1A5
  29. BYTE Unknown8[0xB3]; // 0x1A5-0x258
  30. DWORD dwFooterMagic; // 0x2D8-0x2DC
  31. DWORD dwUnknown9; // 0x2DC-0x2E0
  32. BYTE Unknown9[0x120]; // 0x2E0-0x400
  33. } XOSC, *pXOSC;
  34.  
  35. EXTERN_C DWORD ExecuteXOSC(DWORD r3, BYTE * r4, DWORD r5, XOSC * data, DWORD size)
  36. {
  37. //Null buffer
  38. ZeroMemory(data, size);
  39.  
  40. //Alloc the buffer
  41. data = (XOSC*)XPhysicalAlloc(size, MAXULONG_PTR, NULL, PAGE_READWRITE);
  42.  
  43. //XOSC
  44. QWORD HvProtectedFlags = *((QWORD *)0x8E038678);
  45. QWORD FinalHvProtectedFlags = 4 | (((QWORD)HvProtectedFlags & 1) == 1 ? 1 : 0);
  46. DWORD ExecutionResult; XEX_EXECUTION_ID ExecutionId; XEX_EXECUTION_ID * pExecutionId;
  47.  
  48. if ((ExecutionResult = (DWORD)XamGetExecutionId(&pExecutionId)) == S_OK) {
  49. memcpy(&ExecutionId, pExecutionId, sizeof(XEX_EXECUTION_ID));
  50. //Spoof title id here
  51. }
  52.  
  53. //Write data
  54. data->dwExecutionResult = 0;
  55. data->xexExecutionId = ExecutionId;
  56. data->qwXampOddMediaStuff = 0;
  57. data->wXamBldrBase = 0xD83E;
  58. data->dwXamBaseFlag = 0x2389D3;
  59. data->qwHvProtectedFlags = FinalHvProtectedFlags;
  60. data->dwFooterMagic = 0x5F534750;
  61. memcpy(&data->bKvDrivePhaseLevel, (kvData + 0xCB9), 1);
  62. memcpy(&data->wXamRegion, (kvData + 0xC8), 2);
  63. memcpy(&data->wXamOdd, (kvData + 0x1C), 2);
  64. memcpy(data->bSerialNumber, (kvData + 0xB0), 0xC);
  65. memcpy(data->bConsoleID, (BYTE *)(kvData + 0x9CA), 5);
  66. memcpy(data->bKvDriveData1, (BYTE*)(kvData + 0xC8A), 0x24);
  67. memcpy(data->bKvDriveData2, (BYTE*)(kvData + 0xC8A), 0x24);
  68. XeCryptSha(CPUKey, 0x20, 0, 0, 0, 0, data->bCpuKeyHash, 0x14);
  69. if (XamLoaderIsTitleTerminatePending()) data->qwOperations |= 0x4000000000000000;
  70. if (XamTaskShouldExit()) data->qwOperations |= 0x2000000000000000;
  71.  
  72. //Free XOSC buffer
  73. XPhysicalFree(data);
  74.  
  75. //Notify the client
  76. Notify(L"XOSC Spoofed!");
  77.  
  78.  
  79. return ERROR_SUCCESS;
Advertisement
Add Comment
Please, Sign In to add comment