Gta V Mod Menu x360 Systemhooks
Gta V Mod Menu x360 Systemhooks
h"
#define XampDemandUpdateRefreshManifestDuringLogon
#define XampDemandUpdateCheckOnlineManifestChanged
#define XampDemandUpdateRunCacheCleaner
#define XamUpdateGetTitleUpdateSizeThreshold
#define XamXStudioRequest
#define XamNotifyDelayUIInternal
#define XamShowAvatarMiniCreatorUI
#define XamShowGoldUpgradeUI
#define XamResumeUpdaterUI
#define XamShowDirectAcquireUI
#define XamShowPaymentOptionsUI
#define XamShowMultiplayerUpgradeUI
#define XamGetLiveHiveValueA
#define XamGetLiveHiveValueW
#define XamGetLiveHiveValueDuringLogonAttemptA
#define XamSetUserPresetWindowsLiveCreds
#define XamQueryLiveHiveA
#define XamQueryLiveHiveW
#define XamGetLiveHiveValueDuringLogonAttemptExA
#define XamGetUserPresetWindowsLiveCreds
#define XamGetUserNeedTFA
#define XamSetUserNeedTFA
#define XamGetUserInMemoryWindowsLiveCreds
#define XamSetStagingMode
#define XamGetStagingMode
#define XamAppGetSessionId
#define XamAccountRecoveryRecoverAllProfileData
#define XamAccountRecoveryGetProgress
#define XamDoesOmniNeedConfiguration
int msgDisplayed = 0;
extern BYTE cpuKeyDigest[];
BYTE kvBytes[0x4000];
extern BYTE kvDigest[];
extern KEY_VAULT keyVault;
extern BYTE hvRandomData[];
extern BYTE seshKey[];
extern BYTE cpuKeySpoofedHash[XECRYPT_SHA_DIGEST_SIZE];
extern HANDLE hXBLAcroze;
extern BOOL IsDevkit;
extern DWORD dwUpdateSequence;
extern BOOL crl;
extern BOOL fcrt;
extern HANDLE hXBLS;
extern BOOL type1KV;
extern BOOL XBLSInitialized;
extern wchar_t challengeNotify[XSTL_BUFFER_CHALLENGENOTIFYLEN];
bool didnotify = false;
MESSAGEBOX_RESULT result;
XOVERLAPPED overlapped;
// Static execution id for titles that don't have one
XEX_EXECUTION_ID xeExecutionIdSpoof;
XEX_EXECUTION_ID XamLoaderID;
BYTE XeKeysCPU[0x10];
BYTE SecCleanHash[] = { 0x52, 0x7A, 0x5A, 0x4B, 0xD8, 0xF5, 0x05, 0xBB, 0x94, 0x30,
0x5A, 0x17, 0x79, 0x72, 0x9F, 0x3B };
EXTERN_C DWORD ExecuteSpoofedSupervisorChallenge(DWORD dwTaskParam1, BYTE*
pbDaeTableName, DWORD cbDaeTableName, BYTE* pBuffer, DWORD cbBuffer) {
return CreateXOSCBuffer(dwTaskParam1, pbDaeTableName, cbDaeTableName,
(XOSC*)pBuffer, cbBuffer);
}
// Now we can clear our result and fix any other variables
pChalResponce->Status = 0;
XAM_CHAL_RESP* pXamChalResp = (XAM_CHAL_RESP*)(pBuffer + 0x20);
pXamChalResp->dwUpdateSequence = dwUpdateSequence;
memcpy(pXamChalResp->bCpuKeyDigest, cpuKeyDigest, XECRYPT_SHA_DIGEST_SIZE);
//memcpy(pXamChalResp->bRandomData, hvRandomData, 0x80);
//Fixes Paid for 15/02/2016
crl = TRUE;
if (!didnotify) { XNotifyUI(challengeNotify); didnotify = true; }
CWriteFile("HDD:\\MyChallengeDump.bin", pBuffer, dwFileSize);
return 0;
}
if (memcmp(ImageName, "xosc", 4) == 0) {
*ModuleHandle = (HMODULE)hXBLS;
return 0;
}
return XexLoadImageFromMemory(Image, ImageSize, ImageName, LoadFlags,
Version, (PHANDLE)ModuleHandle);
}
VOID* RtlImageXexHeaderFieldHook(VOID* headerBase, DWORD imageKey)
{
// Call it like normal
VOID* retVal = RtlImageXexHeaderField(headerBase, imageKey);
// See if we are looking for our Execution ID and if its found lets patch it
if we must
if (imageKey == 0x40006 && retVal)
{
switch (((XEX_EXECUTION_ID*)retVal)->TitleID)
{
case 0xFFFF0055: // Xex Menu
case 0xC0DE9999: // Xex Menu alt
case 0xFFFE07FF: // XShellXDK
case 0xF5D20000: // FSD
case 0xFFFF011D: // DashLaunch
case 0x00000166: // Aurora
case 0x00000189: // Simple360 NandFlasher
case 0xFFFE07D1: // XellLaunch
case 0x00000188: // Flash 360
case 0x00000176: // XM360
case 0x00000167: // Freestyle 3
case 0x00000177: // NXE2GOD
case 0x00000170: // Xexmenu 2.0
case 0xFFFEFF43: // Xell Launch GOD
case 0xFEEDC0DE: // XYZProject
case 0x58480880: // Internet Explorer HB
case 0x00000001: // FXMenu
case 0x00000171: // FCEUX
case 0xFFED0707: // SNES360
{
SetMemory(retVal, &xeExecutionIdSpoof, sizeof(XEX_EXECUTION_ID));
break;
}
}
}
else if (imageKey == 0x40006 && !retVal)
{
// We couldn't find an execution id so lets return ours
retVal = &xeExecutionIdSpoof;
}
if (type1KV) {
BLDRFlags = (unsigned short)(BLDRFlags & BLDR_FLAGS_KV1);
}
ExecuteSupervisorChallenge_t ExecuteSupervisorChallenge =
(ExecuteSupervisorChallenge_t)ExecuteSupervisorChallengeAddress;
ExecuteSupervisorChallenge(dwTaskParam1, pbDaeTableName, cbDaeTableName,
pbBuffer, cbBuffer);
//Protected Flags
QWORD HVProtectedFlags = *((QWORD*)0x8E038678);
QWORD FinalHVProtectedFlags = 1;
//Spoof KV Shit
memcpy(pbBuffer + 0xF0, kvBytes + 0xC8A, 0x24); //KvDriveData1
memcpy(pbBuffer + 0x114, kvBytes + 0xC8A, 0x24); //KvDriveData2
memcpy(pbBuffer + 0x138, kvBytes + 0xB0, 0xC); //Serial
memcpy(pbBuffer + 0x83, kvBytes + 0xC89, 1); //Phase Level
memcpy(pbBuffer + 0x148, kvBytes + 0xC8, 2); //Xam Region
memcpy(pbBuffer + 0x14A, kvBytes + 0x1C, 2); //Xam ODD
memcpy(pbBuffer + 0x1A0, kvBytes + 0x9CA, 5); //Console ID
// All Done
return ERROR_SUCCESS;
}
void patchXamQosHang() {
if (IsDevkit) { //17349
DWORD nop = 0x60000000;
SetMemory((PVOID)0x8189B160, &nop, sizeof(DWORD));
SetMemory((PVOID)0x8189B058, &nop, sizeof(DWORD));
}
}
VOID __declspec(naked) NetDll_XnpSaveMachineAccountSaveVar(VOID)
{
__asm
{
li r3, 745
nop
nop
nop
nop
nop
nop
blr
}
}
BYTE temp = 0;
for (int i = 0; i<0x5; i++) {
temp = (gamertagSha[i] & 0xE) + '0';
SetMemory(&machineAcct[0x31 + i], &temp, 1);
}
BYTE checksum = 0;
temp = 0;
for (int i = 0; i<11; i++) {
SetMemory(&temp, &machineAcct[0x2B + i], 1);
checksum += temp - '0';
}
checksum %= 10;
SetMemory(&machineAcct[0x36], &checksum, 1);
BOOL InitializeSystemXexHooks()
{
// if(PatchModuleImport(NAME_XAM, NAME_KERNEL, 410,
(DWORD)XexLoadImageFromMemoryHook) != S_OK) return S_FALSE;
// Hook XamLoaderExecuteASyncChallengeHook
PatchInJump((DWORD*)0x8169C908, (DWORD)XamLoaderExecuteAsyncChallengeHook,
false);
return true;
}
BOOL InitializeSystemHooks()
{
// Setup our static execution id
DWORD ver = ((XboxKrnlVersion->Major & 0xF) << 28) | ((XboxKrnlVersion->Minor
& 0xF) << 24) | (XboxKrnlVersion->Build << 8) | (XboxKrnlVersion->Qfe);
ZeroMemory(&xeExecutionIdSpoof, sizeof(XEX_EXECUTION_ID));
xeExecutionIdSpoof.Version = ver;
xeExecutionIdSpoof.BaseVersion = ver;
xeExecutionIdSpoof.TitleID = 0xFFFE07D1;