179 lines
6.7 KiB
C
179 lines
6.7 KiB
C
#pragma once
|
|
|
|
#define MFC2010
|
|
#define PLAYERBUILD
|
|
#define ARBITERBUILD
|
|
|
|
// when PLAYERBUILD is defined, the following changes occur for 2010 and 2012 only:
|
|
// the -jobId arg is parsed
|
|
|
|
// when ARBITERBUILD is defined, the following changes occur:
|
|
// DataModel->getJobId is hooked
|
|
// StandardOut->print is hooked
|
|
// Network::RakNetAddressToString is hooked
|
|
// -jobId arg becomes available
|
|
// HTTP requests and output messages are logged to a file
|
|
|
|
// RobloxApp (2010)
|
|
#ifdef MFC2010
|
|
#define CLASSPADDING_DATAMODEL__JOBID 729 // when compiled as debug, this must be 728
|
|
|
|
#define ADDRESS_DATAMODEL__GETJOBID 0x005CACC0
|
|
#define ADDRESS_STANDARDOUT__PRINT 0x0059F340
|
|
#define ADDRESS_NETWORK__RAKNETADDRESSTOSTRING 0x004FC1A0
|
|
#define ADDRESS_HTTP__TRUSTCHECK 0x005A2680
|
|
#define ADDRESS_CRYPT__VERIFYSIGNATUREBASE64 0x0079ECF0
|
|
|
|
#define ADDRESS_SERVERREPLICATOR__PROCESSPACKET 0x00507420
|
|
#define ADDRESS_RAKNET__BITSTREAM 0x004DBF00
|
|
|
|
// MFC specific definitions
|
|
#define CLASSLOCATION_CROBLOXAPP 0x00BFF898
|
|
#define CLASSLOCATION_CAPP 0x00405D20
|
|
|
|
#define CLASSPADDING_CROBLOXDOC__WORKSPACE 40
|
|
|
|
#define ADDRESS_CAPP__CREATEGAME 0x00405D20
|
|
#define ADDRESS_CAPP__ROBLOXAUTHENTICATE 0x00408060
|
|
#define ADDRESS_CROBLOXAPP__INITINSTANCE 0x00452900
|
|
#define ADDRESS_CROBLOXAPP__CREATEDOCUMENT 0x0044F6E0
|
|
#define ADDRESS_CWORKSPACE__EXECURLSCRIPT 0x0047EC10
|
|
#define ADDRESS_CROBLOXCOMMANDLINEINFO__PARSEPARAM 0x00450AC0
|
|
#define ADDRESS_CCOMMANDLINEINFO__PARSELAST 0x007A80A0
|
|
|
|
// RakNet packet definitions
|
|
#define ID_REQUEST_CHARACTER 96
|
|
#define ID_SUBMIT_TICKET 104
|
|
#endif
|
|
|
|
// RobloxApp (2011)
|
|
#ifdef MFC2011
|
|
#define CLASSPADDING_DATAMODEL__JOBID 740 // when compiled as debug, this must be 739
|
|
|
|
#define ADDRESS_DATAMODEL__GETJOBID 0x005E70C0
|
|
#define ADDRESS_STANDARDOUT__PRINT 0x005B25E0
|
|
#define ADDRESS_NETWORK__RAKNETADDRESSTOSTRING 0x0
|
|
#define ADDRESS_HTTP__TRUSTCHECK 0x005B7050
|
|
#define ADDRESS_CRYPT__VERIFYSIGNATUREBASE64 0x00809EC0
|
|
|
|
// MFC specific definitions
|
|
#define CLASSLOCATION_CROBLOXAPP 0x00CBA8A0
|
|
#define CLASSLOCATION_CAPP 0x00406D80
|
|
|
|
#define CLASSPADDING_CROBLOXDOC__WORKSPACE 45
|
|
|
|
#define ADDRESS_CAPP__CREATEGAME 0x00406D80
|
|
#define ADDRESS_CAPP__ROBLOXAUTHENTICATE 0x00409050
|
|
#define ADDRESS_CROBLOXAPP__INITINSTANCE 0x004613C0
|
|
#define ADDRESS_CROBLOXAPP__CREATEDOCUMENT 0x0045D030
|
|
#define ADDRESS_CWORKSPACE__EXECURLSCRIPT 0x0049FC90
|
|
#define ADDRESS_CROBLOXCOMMANDLINEINFO__PARSEPARAM 0x0045EE50
|
|
#define ADDRESS_CCOMMANDLINEINFO__PARSELAST 0x0081354A
|
|
|
|
#define ID_DATA 129
|
|
#define ID_SUBMIT_TICKET 135
|
|
#endif
|
|
|
|
// RobloxApp/RobloxPlayer (2012)
|
|
#ifdef MFC2012
|
|
#define ADDRESS_HTTP__TRUSTCHECK 0x006D5D20
|
|
#define ADDRESS_CRYPT__VERIFYSIGNATUREBASE64 0x009B1D20
|
|
#endif
|
|
|
|
// RobloxPlayerBeta (2012)
|
|
#ifdef PLAYER2012
|
|
// so 2012's a bit different
|
|
// VMProtect likes to offset the memory locations randomly on startup
|
|
// so defining the addresses here are a bit weird
|
|
|
|
// say the beginning of the program is located at 0x00BF1000
|
|
// and you have a trust check hook that's, for example, located at 0x00DF20A0
|
|
|
|
// VMProtect is offsetting the memory location from 0x00000000 - 0x00FF0000
|
|
// so the 0x00BF0000 in 0x00BF1000 is actually an offset
|
|
|
|
// with that offset, the address you'd have to put for your trust check hook will be 0x00DF20A0 - 0x00BF0000 = 0x002020A0
|
|
// and you just put that address into the function
|
|
|
|
#define CLASSPADDING_DATAMODEL__JOBID 763 // when compiled as debug, this must be 762
|
|
|
|
#define ADDRESS_DATAMODEL__GETJOBID Patches::GetAddressByOffset(0x002079A0)
|
|
#define ADDRESS_STANDARDOUT__PRINT Patches::GetAddressByOffset(0x0023A8C0)
|
|
#define ADDRESS_NETWORK__RAKNETADDRESSTOSTRING 0x0
|
|
#define ADDRESS_HTTP__TRUSTCHECK Patches::GetAddressByOffset(0x002020A0)
|
|
#define ADDRESS_CRYPT__VERIFYSIGNATUREBASE64 Patches::GetAddressByOffset(0x00526330)
|
|
|
|
// Player specific definitions
|
|
#define ADDRESS_APPLICATION__PARSEARGUMENTS Patches::GetAddressByOffset(0x00004E60)
|
|
#endif
|
|
|
|
// RobloxStudioBeta (2012)
|
|
#ifdef STUDIO2012
|
|
#define ADDRESS_HTTP__TRUSTCHECK Patches::GetAddressByOffset(0x001931A0)
|
|
#define ADDRESS_CRYPT__VERIFYSIGNATUREBASE64 Patches::GetAddressByOffset(0x004CD250)
|
|
#endif
|
|
|
|
// RakNet definitions
|
|
// these are extracted from the 2016 source, but they're probably shifted 2 up compared to 2010 and 2011
|
|
// some of these probably dont even exist in 2010 and 2011
|
|
// i'll check later
|
|
|
|
// TODO: move all of these to an enum (2012 and newer are offset by +2)
|
|
|
|
// Stock RakNet definitions
|
|
// #define ID_CONNECTION_REQUEST_ACCEPTED 14
|
|
// #define ID_CONNECTION_ATTEMPT_FAILED 15
|
|
// #define ID_ALREADY_CONNECTED 16
|
|
// #define ID_NEW_INCOMING_CONNECTION 17
|
|
// #define ID_NO_FREE_INCOMING_CONNECTIONS 18
|
|
// #define ID_DISCONNECTION_NOTIFICATION 19
|
|
// #define ID_CONNECTION_LOST 20
|
|
// #define ID_CONNECTION_BANNED 21
|
|
// #define ID_INVALID_PASSWORD 22
|
|
// #define ID_INCOMPATIBLE_PROTOCOL_VERSION 23
|
|
// #define ID_TIMESTAMP 27
|
|
|
|
// ROBLOX-specific RakNet definitions
|
|
// #define ID_SET_GLOBALS 127
|
|
// #define ID_TEACH_DESCRIPTOR_DICTIONARIES 128
|
|
// #define ID_DATA 129
|
|
// #define ID_REQUEST_MARKER 130
|
|
// #define ID_SUBMIT_TICKET 135
|
|
|
|
// according to the 2016 source, here's all the enums that practically do the same thing in Replicator.cpp:
|
|
// ID_PHYSICS_TOUCHES
|
|
// ID_SCHEMA_SYNC
|
|
// ID_TEACH_DESCRIPTOR_DICTIONARIES
|
|
// ID_DATA
|
|
// ID_CLUSTER
|
|
// ID_SET_GLOBALS
|
|
|
|
// in the 2016 source there's an extra enum between ID_SUBMIT_TICKET and ID_REQUEST_MARKER
|
|
// in 2011, ID_REQUEST_MARKER is 130 and ID_SUBMIT_TICKET is 135
|
|
// but in the 2016 source, ID_REQUEST_MARKER is 132 and ID_SUBMIT_TICKET is 138
|
|
|
|
/* #define ID_TEACH_DESCRIPTOR_DICTIONARIES 130
|
|
#define ID_DATA 131
|
|
#define ID_REQUEST_MARKER 132
|
|
#define ID_PHYSICS 133
|
|
#define ID_PHYSICS_TOUCHES 134
|
|
#define ID_CHAT_ALL 135
|
|
#define ID_CHAT_TEAM 136
|
|
#define ID_REPORT_ABUSE 137
|
|
#define ID_SUBMIT_TICKET 138
|
|
#define ID_CHAT_GAME 139
|
|
#define ID_CHAT_PLAYER 140
|
|
#define ID_CLUSTER 141
|
|
#define ID_PROTOCAL_MISMATCH 142
|
|
#define ID_SPAWN_NAME 143
|
|
#define ID_PROTOCOL_SYNC 144
|
|
#define ID_SCHEMA_SYNC 145
|
|
#define ID_PLACEID_VERIFICATION 146
|
|
#define ID_DICTIONARY_FORMAT 147
|
|
#define ID_HASH_MISMATCH 148
|
|
#define ID_SECURITYKEY_MISMATCH 149
|
|
#define ID_REQUEST_STATS 150 */
|
|
|
|
#define RR_STOP_PROCESSING_AND_DEALLOCATE 0
|
|
#define RR_CONTINUE_PROCESSING 1
|
|
#define RR_STOP_PROCESSING 2 |