mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Moved every pattern to IDetour interface. This allows for debugging patterns scans more easily, and create threads during pattern searching (Operation is now fired in APIENTRY). Also cleaned up some unused code/extraneous comments. Slightly increased performance by purging duplicate patterns. Made variable search less dependent from other results (except if pattern-to-scan results is within the same header)
92 lines
3.9 KiB
C++
92 lines
3.9 KiB
C++
#pragma once
|
|
#include "squirrel/sqapi.h"
|
|
|
|
inline CMemory p_Script_Remote_BeginRegisteringFunctions;
|
|
inline auto Script_Remote_BeginRegisteringFunctions = p_Script_Remote_BeginRegisteringFunctions.RCast<void* (*)(void)>();
|
|
|
|
inline CMemory p_RestoreRemoteChecksumsFromSaveGame;
|
|
inline auto RestoreRemoteChecksumsFromSaveGame = p_RestoreRemoteChecksumsFromSaveGame.RCast<void* (*)(void* a1, void* a2)>();
|
|
|
|
/* CHANGE THESE WHEN SWITCHING TO PYLONV2 TO UNSIGNED AGAIN!*/
|
|
#ifndef CLIENT_DLL
|
|
inline int32_t* g_nServerRemoteChecksum = nullptr;
|
|
#endif // !CLIENT_DLL
|
|
#ifndef DEDICATED
|
|
inline int32_t* g_nClientRemoteChecksum = nullptr;
|
|
#endif // !DEDICATED
|
|
|
|
namespace VSquirrel
|
|
{
|
|
namespace SHARED
|
|
{
|
|
SQRESULT SDKNativeTest(HSQUIRRELVM v);
|
|
SQRESULT GetSDKVersion(HSQUIRRELVM v);
|
|
}
|
|
#ifndef CLIENT_DLL
|
|
namespace SERVER
|
|
{
|
|
SQRESULT GetNumHumanPlayers(HSQUIRRELVM v);
|
|
SQRESULT GetNumFakeClients(HSQUIRRELVM v);
|
|
}
|
|
#endif // !CLIENT_DLL
|
|
#ifndef DEDICATED
|
|
namespace CLIENT
|
|
{
|
|
}
|
|
namespace UI
|
|
{
|
|
SQRESULT GetServerName(HSQUIRRELVM v);
|
|
SQRESULT GetServerPlaylist(HSQUIRRELVM v);
|
|
SQRESULT GetServerMap(HSQUIRRELVM v);
|
|
SQRESULT GetServerCount(HSQUIRRELVM v);
|
|
SQRESULT GetPromoData(HSQUIRRELVM v);
|
|
SQRESULT SetEncKeyAndConnect(HSQUIRRELVM v);
|
|
SQRESULT CreateServerFromMenu(HSQUIRRELVM v);
|
|
SQRESULT JoinPrivateServerFromMenu(HSQUIRRELVM v);
|
|
SQRESULT GetPrivateServerMessage(HSQUIRRELVM v);
|
|
SQRESULT ConnectToIPFromMenu(HSQUIRRELVM v);
|
|
SQRESULT GetAvailableMaps(HSQUIRRELVM v);
|
|
}
|
|
#endif // !DEDICATED
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
class HSqInit : public IDetour
|
|
{
|
|
virtual void GetAdr(void) const
|
|
{
|
|
std::cout << "| FUN: Remote_BeginRegisteringFunctions : 0x" << std::hex << std::uppercase << p_Script_Remote_BeginRegisteringFunctions.GetPtr() << std::setw(nPad) << " |" << std::endl;
|
|
std::cout << "| FUN: RestoreRemoteChecksumsFromSaveGame : 0x" << std::hex << std::uppercase << p_RestoreRemoteChecksumsFromSaveGame.GetPtr() << std::setw(nPad) << " |" << std::endl;
|
|
#ifndef CLIENT_DLL
|
|
std::cout << "| VAR: g_nServerRemoteChecksum : 0x" << std::hex << std::uppercase << g_nServerRemoteChecksum << std::setw(0) << " |" << std::endl;
|
|
#endif // !CLIENT_DLL
|
|
#ifndef DEDICATED
|
|
std::cout << "| VAR: g_nClientRemoteChecksum : 0x" << std::hex << std::uppercase << g_nClientRemoteChecksum << std::setw(0) << " |" << std::endl;
|
|
#endif // !DEDICATED
|
|
std::cout << "+----------------------------------------------------------------+" << std::endl;
|
|
}
|
|
virtual void GetFun(void) const
|
|
{
|
|
p_Script_Remote_BeginRegisteringFunctions = g_mGameDll.FindPatternSIMD(reinterpret_cast<rsig_t>("\x48\x83\xEC\x28\x83\x3D\x00\x00\x00\x00\x00\x74\x10"), "xxxxxx?????xx");
|
|
p_RestoreRemoteChecksumsFromSaveGame = g_mGameDll.FindPatternSIMD(reinterpret_cast<rsig_t>("\x48\x89\x4C\x24\x00\x41\x54\x48\x83\xEC\x40"), "xxxx?xxxxxx");
|
|
|
|
Script_Remote_BeginRegisteringFunctions = p_Script_Remote_BeginRegisteringFunctions.RCast<void* (*)(void)>(); /*48 83 EC 28 83 3D ?? ?? ?? ?? ?? 74 10*/
|
|
RestoreRemoteChecksumsFromSaveGame = p_RestoreRemoteChecksumsFromSaveGame.RCast<void* (*)(void* a1, void* a2)>(); /*48 89 4C 24 ?? 41 54 48 83 EC 40*/
|
|
}
|
|
virtual void GetVar(void) const
|
|
{
|
|
#ifndef CLIENT_DLL
|
|
g_nServerRemoteChecksum = p_RestoreRemoteChecksumsFromSaveGame.Offset(0x1C0).FindPatternSelf("48 8D 15", CMemory::Direction::DOWN, 150).ResolveRelativeAddressSelf(0x3, 0x7).RCast<int32_t*>();
|
|
#endif // !CLIENT_DLL
|
|
#ifndef DEDICATED
|
|
g_nClientRemoteChecksum = p_Script_Remote_BeginRegisteringFunctions.Offset(0x0).FindPatternSelf("89 05", CMemory::Direction::DOWN, 150).ResolveRelativeAddressSelf(0x2, 0x6).RCast<int32_t*>();
|
|
#endif // !DEDICATED
|
|
}
|
|
virtual void GetCon(void) const { }
|
|
virtual void Attach(void) const { }
|
|
virtual void Detach(void) const { }
|
|
};
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
REGISTER(HSqInit);
|