Work on prototype for creating new datamodel
this time using Game::Game instead of DataModel::createDataModel
This commit is contained in:
parent
b06920dc93
commit
9885235a4b
|
|
@ -3,21 +3,30 @@
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include <oaidl.h>
|
#include <oaidl.h>
|
||||||
|
|
||||||
|
struct Game
|
||||||
|
{
|
||||||
|
void* padding1[26]; // 2010 has a class size of 104
|
||||||
|
};
|
||||||
|
|
||||||
|
const auto Game__initializeConstruct = (void * (__thiscall*)(void* _this, int a2))0x455D40;
|
||||||
|
|
||||||
struct DataModel
|
struct DataModel
|
||||||
{
|
{
|
||||||
void* padding1[CLASSPADDING_DATAMODEL__JOBID];
|
void* padding1[CLASSPADDING_DATAMODEL__JOBID + PADDING_STRUCT];
|
||||||
std::string jobId;
|
std::string jobId;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Http
|
struct Http
|
||||||
{
|
{
|
||||||
|
#if PADDING_STRUCT != 0
|
||||||
void* padding1[1];
|
void* padding1[1];
|
||||||
|
#endif
|
||||||
std::string alternateUrl;
|
std::string alternateUrl;
|
||||||
void* padding2[4];
|
void* padding2[3 + PADDING_STRUCT];
|
||||||
std::string url;
|
std::string url;
|
||||||
};
|
};
|
||||||
|
|
||||||
// const auto DataModel__createDataModel = (void * (__thiscall*)(int a1, char a2))ADDRESS_DATAMODEL__CREATEDATAMODEL;
|
// const auto DataModel__createDataModel = (std::shared_ptr<void>(__thiscall*)(bool startHeartbeat))ADDRESS_DATAMODEL__CREATEDATAMODEL;
|
||||||
|
|
||||||
struct Packet
|
struct Packet
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
// RobloxApp (2010)
|
// RobloxApp (2010)
|
||||||
#ifdef MFC2010
|
#ifdef MFC2010
|
||||||
#define CLASSPADDING_DATAMODEL__JOBID 729 // when compiled as debug, this must be 728
|
#define CLASSPADDING_DATAMODEL__JOBID 728
|
||||||
|
|
||||||
#define ADDRESS_DATAMODEL__GETJOBID 0x005CACC0
|
#define ADDRESS_DATAMODEL__GETJOBID 0x005CACC0
|
||||||
#define ADDRESS_STANDARDOUT__PRINT 0x0059F340
|
#define ADDRESS_STANDARDOUT__PRINT 0x0059F340
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
|
|
||||||
// RobloxApp (2011)
|
// RobloxApp (2011)
|
||||||
#ifdef MFC2011
|
#ifdef MFC2011
|
||||||
#define CLASSPADDING_DATAMODEL__JOBID 740 // when compiled as debug, this must be 739
|
#define CLASSPADDING_DATAMODEL__JOBID 739
|
||||||
|
|
||||||
#define ADDRESS_DATAMODEL__GETJOBID 0x005E70C0
|
#define ADDRESS_DATAMODEL__GETJOBID 0x005E70C0
|
||||||
#define ADDRESS_DATAMODEL__DESTRUCT 0x006002A0
|
#define ADDRESS_DATAMODEL__DESTRUCT 0x006002A0
|
||||||
|
|
@ -135,7 +135,7 @@
|
||||||
#define ADDRESS_CROBLOXCOMMANDLINEINFO__PARSEPARAM 0x0
|
#define ADDRESS_CROBLOXCOMMANDLINEINFO__PARSEPARAM 0x0
|
||||||
#define ADDRESS_CCOMMANDLINEINFO__PARSELAST 0x0
|
#define ADDRESS_CCOMMANDLINEINFO__PARSELAST 0x0
|
||||||
|
|
||||||
#define CLASSPADDING_DATAMODEL__JOBID 763 // when compiled as debug, this must be 762
|
#define CLASSPADDING_DATAMODEL__JOBID 762
|
||||||
|
|
||||||
#define ADDRESS_DATAMODEL__GETJOBID Patches::GetAddressByOffset(0x002079A0)
|
#define ADDRESS_DATAMODEL__GETJOBID Patches::GetAddressByOffset(0x002079A0)
|
||||||
#define ADDRESS_STANDARDOUT__PRINT Patches::GetAddressByOffset(0x0023A8C0)
|
#define ADDRESS_STANDARDOUT__PRINT Patches::GetAddressByOffset(0x0023A8C0)
|
||||||
|
|
@ -158,3 +158,9 @@
|
||||||
#define RR_STOP_PROCESSING_AND_DEALLOCATE 0
|
#define RR_STOP_PROCESSING_AND_DEALLOCATE 0
|
||||||
#define RR_CONTINUE_PROCESSING 1
|
#define RR_CONTINUE_PROCESSING 1
|
||||||
#define RR_STOP_PROCESSING 2
|
#define RR_STOP_PROCESSING 2
|
||||||
|
|
||||||
|
#ifdef NDEBUG
|
||||||
|
#define PADDING_STRUCT 1
|
||||||
|
#else
|
||||||
|
#define PADDING_STRUCT 0
|
||||||
|
#endif
|
||||||
Binary file not shown.
|
|
@ -1,22 +0,0 @@
|
||||||
#include "pch.h"
|
|
||||||
#include "DebugDatamodel.h"
|
|
||||||
|
|
||||||
DataModel__createDataModel_t DataModel__createDataModel = (DataModel__createDataModel_t)0; // ADDRESS_DATAMODEL__CREATEDATAMODEL;
|
|
||||||
|
|
||||||
int __fastcall DataModel__createDataModel_hook(int, int, int, bool startHeartbeat)
|
|
||||||
{
|
|
||||||
printf("DataModel::createDataModel called\n");
|
|
||||||
|
|
||||||
printf("Value of startHeartbeat: %#010x\n", startHeartbeat);
|
|
||||||
|
|
||||||
return DataModel__createDataModel(startHeartbeat);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* DataModel__createDataModel_t DataModel__createDataModel = (DataModel__createDataModel_t)ADDRESS_GAME__CONSTRUCT;
|
|
||||||
|
|
||||||
int __fastcall DataModel__createDataModel_hook(int _this)
|
|
||||||
{
|
|
||||||
printf("Game::Game called\n");
|
|
||||||
printf("Value of _this: %#010X\n", _this);
|
|
||||||
return DataModel__createDataModel(_this);
|
|
||||||
} */
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "Classes.h"
|
|
||||||
|
|
||||||
typedef int (__thiscall* DataModel__createDataModel_t)(bool startHeartbeat);
|
|
||||||
int __fastcall DataModel__createDataModel_hook(int, int, int, bool startHeartbeat);
|
|
||||||
extern DataModel__createDataModel_t DataModel__createDataModel;
|
|
||||||
|
|
||||||
// Game::Game
|
|
||||||
/* typedef int(__thiscall* DataModel__createDataModel_t)(int _this);
|
|
||||||
int __fastcall DataModel__createDataModel_hook(int _this);
|
|
||||||
extern DataModel__createDataModel_t DataModel__createDataModel; */
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
#include "pch.h"
|
||||||
|
#include "DebugGame.h"
|
||||||
|
|
||||||
|
Game__construct_t Game__construct = (Game__construct_t)0x47DBF0;
|
||||||
|
|
||||||
|
int __fastcall Game__construct_hook(Game* _this)
|
||||||
|
{
|
||||||
|
printf("Game::Game called\n");
|
||||||
|
printf("Value of _this: %p\n", _this);
|
||||||
|
return Game__construct(_this);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Classes.h"
|
||||||
|
|
||||||
|
typedef int (__thiscall* Game__construct_t)(Game* _this);
|
||||||
|
int __fastcall Game__construct_hook(Game* _this);
|
||||||
|
extern Game__construct_t Game__construct;
|
||||||
|
|
@ -72,9 +72,11 @@
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
|
@ -162,6 +164,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Config.h" />
|
<ClInclude Include="Config.h" />
|
||||||
<ClInclude Include="DebugDatamodel.h" />
|
<ClInclude Include="DebugDatamodel.h" />
|
||||||
|
<ClInclude Include="DebugGame.h" />
|
||||||
<ClInclude Include="MFCCommandLine.h" />
|
<ClInclude Include="MFCCommandLine.h" />
|
||||||
<ClInclude Include="PlayerCommandLine.h" />
|
<ClInclude Include="PlayerCommandLine.h" />
|
||||||
<ClInclude Include="RCCOutput.h" />
|
<ClInclude Include="RCCOutput.h" />
|
||||||
|
|
@ -178,6 +181,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="DebugDatamodel.cpp" />
|
<ClCompile Include="DebugDatamodel.cpp" />
|
||||||
|
<ClCompile Include="DebugGame.cpp" />
|
||||||
<ClCompile Include="dllmain.cpp" />
|
<ClCompile Include="dllmain.cpp" />
|
||||||
<ClCompile Include="MFCCommandLine.cpp" />
|
<ClCompile Include="MFCCommandLine.cpp" />
|
||||||
<ClCompile Include="LUrlParser.cpp">
|
<ClCompile Include="LUrlParser.cpp">
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,9 @@
|
||||||
<ClInclude Include="TestHttpGetPost.h">
|
<ClInclude Include="TestHttpGetPost.h">
|
||||||
<Filter>Header Files\Hooks</Filter>
|
<Filter>Header Files\Hooks</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="DebugGame.h">
|
||||||
|
<Filter>Header Files\Hooks</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="dllmain.cpp">
|
<ClCompile Include="dllmain.cpp">
|
||||||
|
|
@ -110,5 +113,8 @@
|
||||||
<ClCompile Include="TestHttpGetPost.cpp">
|
<ClCompile Include="TestHttpGetPost.cpp">
|
||||||
<Filter>Source Files\Hooks</Filter>
|
<Filter>Source Files\Hooks</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="DebugGame.cpp">
|
||||||
|
<Filter>Source Files\Hooks</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "RCCOutput.h"
|
#include "RCCOutput.h"
|
||||||
|
#include "DebugGame.h"
|
||||||
#include "Patches.h"
|
#include "Patches.h"
|
||||||
|
|
||||||
HANDLE outputHandle;
|
HANDLE outputHandle;
|
||||||
|
|
@ -35,6 +36,25 @@ void __fastcall StandardOut__print_hook(int _this, void*, int type, std::string*
|
||||||
message = reinterpret_cast<std::string*>(messagePtr);
|
message = reinterpret_cast<std::string*>(messagePtr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* if (message->compare("MakeDatamodel") == 0)
|
||||||
|
{
|
||||||
|
printf("Attempting to create DataModel...\n");
|
||||||
|
DataModel__createDataModel(true);
|
||||||
|
} */
|
||||||
|
|
||||||
|
if (message->compare("NewGame") == 0)
|
||||||
|
{
|
||||||
|
printf("Attempting to create new Game...\n");
|
||||||
|
int v2;
|
||||||
|
void* v3;
|
||||||
|
void* v4;
|
||||||
|
|
||||||
|
// v3 = operator new(104u);
|
||||||
|
v3 = new Game();
|
||||||
|
v4 = Game__initializeConstruct(v3, 0);
|
||||||
|
v2 = Game__construct_hook((Game*)v4);
|
||||||
|
}
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case 1: // RBX::MESSAGE_OUTPUT:
|
case 1: // RBX::MESSAGE_OUTPUT:
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,7 @@ void __fastcall Http_httpGetPostWinInet_hook(Http* _this, void*, bool isPost, in
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("Location of _this+40: %08X\n", (int)_this + 40);
|
printf("Location of _this+40: %08X\n", (int)_this + 40);
|
||||||
printf("Location of _this->url: %p\n", &_this->url);
|
printf("Location of _this->url: %p\n", &_this->url); */
|
||||||
|
|
||||||
printf("\n"); */
|
|
||||||
|
|
||||||
printf("Requested url: %s\n", _this->url.c_str());
|
printf("Requested url: %s\n", _this->url.c_str());
|
||||||
|
|
||||||
|
|
@ -41,17 +39,11 @@ void __fastcall Http_httpGetPostWinInet_hook(Http* _this, void*, bool isPost, in
|
||||||
std::string assetUrl = "https://assetdelivery.roblox.com/v1/asset/?" + parsedUrl.query_;
|
std::string assetUrl = "https://assetdelivery.roblox.com/v1/asset/?" + parsedUrl.query_;
|
||||||
printf("Should swap URL with: %s\n", assetUrl.c_str());
|
printf("Should swap URL with: %s\n", assetUrl.c_str());
|
||||||
|
|
||||||
// yep... same access violation i got in polygonutil.dll..........
|
std::string test = assetUrl;
|
||||||
// yaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayyyyyyyyyyyyyyyyyyyyyy
|
_this->url = test;
|
||||||
_this->url = assetUrl;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// printf("Host: %s\n", parsedUrl.host_.c_str());
|
|
||||||
// printf("Path: %s\n", parsedUrl.path_.c_str());
|
|
||||||
// printf("Query: %s\n", parsedUrl.query_.c_str());
|
|
||||||
// printf("Fragment: %s\n", parsedUrl.fragment_.c_str());
|
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
Http_httpGetPostWinInet(_this, isPost, a3, compressData, additionalHeaders, a6);
|
Http_httpGetPostWinInet(_this, isPost, a3, compressData, additionalHeaders, a6);
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
#include "Patches.h"
|
#include "Patches.h"
|
||||||
//#include "RobloxMFCHooks.h"
|
//#include "RobloxMFCHooks.h"
|
||||||
|
|
||||||
// #include "DebugDatamodel.h"
|
#include "DebugGame.h"
|
||||||
// #include "TestHttpGetPost.h"
|
// #include "TestHttpGetPost.h"
|
||||||
#include "TrustCheck.h"
|
#include "TrustCheck.h"
|
||||||
#include "VerifySignatureBase64.h"
|
#include "VerifySignatureBase64.h"
|
||||||
|
|
@ -25,8 +25,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
START_PATCH_LIST()
|
START_PATCH_LIST()
|
||||||
|
ADD_PATCH(Game__construct, Game__construct_hook)
|
||||||
// ADD_PATCH(Http_httpGetPostWinInet, Http_httpGetPostWinInet_hook)
|
// ADD_PATCH(Http_httpGetPostWinInet, Http_httpGetPostWinInet_hook)
|
||||||
// ADD_PATCH(DataModel__createDataModel, DataModel__createDataModel_hook)
|
|
||||||
|
|
||||||
ADD_PATCH(Http__trustCheck, Http__trustCheck_hook)
|
ADD_PATCH(Http__trustCheck, Http__trustCheck_hook)
|
||||||
ADD_PATCH(Crypt__verifySignatureBase64, Crypt__verifySignatureBase64_hook)
|
ADD_PATCH(Crypt__verifySignatureBase64, Crypt__verifySignatureBase64_hook)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue