VOID __declspec(naked) XHTTPConnectStub(...) {
__asm
{
li r3, 1
nop
nop
nop
nop
nop
nop
blr
}
}
VOID XHTTPConnectHook(SOCKET hSession, const CHAR *pcszServerName, WORD nServerPort, DWORD dwFlags) {
if (strcmp(pcszServerName, "manifest.xboxlive.com") == 0) pcszServerName = "", dwFlags = 0x000000001, nServerPort = 0x50;
XHTTPConnectStub(hSession, pcszServerName, nServerPort, dwFlags);
}
VOID __declspec(naked) XHTTPOpenRequestUsingMemoryStub(...) {
__asm
{
li r3, 2
nop
nop
nop
nop
nop
nop
blr
}
}
VOID XHTTPOpenRequestHook(SOCKET hConnect, const CHAR *pcszVerb, const CHAR *pcszObjectName, const CHAR *pcszVersion, const CHAR *pcszReferrer, const CHAR **ppReserved, DWORD dwFlags) {
if (strncmp(pcszObjectName + 0x15, "dashhome.xml", 0xC) == 0) pcszObjectName = "/assets/xdk/dashhome.xml", Globals::DashLoaded = TRUE;
if (strncmp(pcszObjectName + 0x15, "exl-HELP-on-360.xml", 0x13) == 0) pcszObjectName = "/assets/xdk/exl-HELP-on-360.xml", Globals::DashLoaded = TRUE;
if (strncmp(pcszObjectName + 0x15, "exl-GamesMarketplace.xml", 0x18) == 0) pcszObjectName = "/assets/xdk/exl-GamesMarketplace.xml", Globals::DashLoaded = TRUE;
if (strncmp(pcszObjectName + 0x15, "DashVideoMP-London.xml", 0x16) == 0) pcszObjectName = "/assets/xdk/DashVideoMP-London.xml", Globals::DashLoaded = TRUE;
XHTTPOpenRequestUsingMemoryStub(hConnect, pcszVerb, pcszObjectName, pcszVersion, pcszReferrer, ppReserved, dwFlags);
}
VOID __declspec(naked) XHTTPSendRequestStub(...) {
__asm
{
li r3, 3
nop
nop
nop
nop
nop
nop
blr
}
}
VOID XHTTPSendRequestHook(SOCKET hRequest, const CHAR *pcszHeaders, DWORD dwHeadersLength, const VOID *lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext) {
if (Globals::DashLoaded) pcszHeaders = NULL;
XHTTPSendRequestStub(hRequest, pcszHeaders, dwHeadersLength, lpOptional, dwOptionalLength, dwTotalLength, dwContext);
Globals::DashLoaded = FALSE;
}
//Hooks
Utilities::HookFunctionStart((PDWORD)0x92247B70, (PDWORD)XHTTPConnectStub, (DWORD)XHTTPConnectHook);
Utilities::HookFunctionStart((PDWORD)0x92247BC8, (PDWORD)XHTTPOpenRequestUsingMemoryStub, (DWORD)XHTTPOpenRequestHook);
Utilities::HookFunctionStart((PDWORD)0x92247C20, (PDWORD)XHTTPSendRequestStub, (DWORD)XHTTPSendRequestHook);