Add fields to client_t structs, might be useful

This commit is contained in:
Diavolo 2021-09-12 15:16:41 +02:00
parent 3f726d3d0d
commit eba1762fd0
4 changed files with 15 additions and 11 deletions

View File

@ -342,13 +342,14 @@ namespace Components
Game::NET_DeferPacketToClient(from, msg);
}
void Network::SVExecuteClientMessageStub(Game::client_t* client, Game::msg_t* msg)
void Network::SV_ExecuteClientMessageStub(Game::client_t* client, Game::msg_t* msg)
{
const char* message = Utils::String::VA("ServerID: %d, Sequence: %d, Acknowledge: %d, Sent: %d, Message: %d\n", client->serverID,
client->reliableSequence, client->reliableAcknowledge,
client->reliableSent, client->messageAcknowledge);
OutputDebugStringA(message);
if (client->reliableAcknowledge < 0 || client->reliableAcknowledge > 0xFF)
{
client->reliableAcknowledge = 0;
Game::NET_OutOfBandPrint(Game::NS_SERVER, client->netchan.remoteAddress, "disconnect");
return;
}
Utils::Hook::Call<void(Game::client_t*, Game::msg_t*)>(0x414D40)(client, msg);
}
@ -392,7 +393,8 @@ namespace Components
// Fix packets causing buffer overflow
Utils::Hook(0x6267E3, Network::NET_DeferPacketToClientStub, HOOK_CALL).install()->quick();
Utils::Hook(0x626996, Network::SVExecuteClientMessageStub, HOOK_CALL).install()->quick();
// Fix server freezer exploit
Utils::Hook(0x626996, Network::SV_ExecuteClientMessageStub, HOOK_CALL).install()->quick();
Network::Handle("resolveAddress", [](Address address, const std::string& /*data*/)
{

View File

@ -90,7 +90,7 @@ namespace Components
static void PacketErrorCheck();
static void NET_DeferPacketToClientStub(Game::netadr_t* from, Game::msg_t* msg);
static void SVExecuteClientMessageStub(Game::client_t* client, Game::msg_t* msg);
static void SV_ExecuteClientMessageStub(Game::client_t* client, Game::msg_t* msg);
};
}

View File

@ -495,10 +495,10 @@ namespace Game
typedef bool(__cdecl * NET_StringToAdr_t)(const char *s, netadr_t *a);
extern NET_StringToAdr_t NET_StringToAdr;
typedef void(__cdecl* NET_OutOfBandPrint_t)(netsrc_t sock, netadr_t adr, const char *data);
typedef void(__cdecl * NET_OutOfBandPrint_t)(netsrc_t sock, netadr_t adr, const char *data);
extern NET_OutOfBandPrint_t NET_OutOfBandPrint;
typedef void(__cdecl* NET_OutOfBandData_t)(netsrc_t sock, netadr_t adr, const char *format, int len);
typedef void(__cdecl * NET_OutOfBandData_t)(netsrc_t sock, netadr_t adr, const char *format, int len);
extern NET_OutOfBandData_t NET_OutOfBandData;
typedef void(__cdecl * Live_MPAcceptInvite_t)(_XSESSION_INFO *hostInfo, const int controllerIndex, bool fromGameInvite);

View File

@ -4665,7 +4665,9 @@ namespace Game
int messageAcknowledge; // 134760
char __pad4[1080]; // 134764
char name[16]; // 135844
char __pad5[12]; // 135860
char __pad5[4]; // 135860
int lastPacketTime; // 135864
int lastConnectTime; // 135868
int snapNum; // 135872
int __pad6; // 135876
short ping; // 135880