interfaces.cpp: always load CGlobalVarsBase* from found pointer
It fixes problem with cathook pointing to invalid CGlobalVarsBase when injected too early (through LD_PRELOAD)
This commit is contained in:
parent
3343fe6c89
commit
8f3b63e61c
@ -67,7 +67,8 @@ extern IBaseClientDLL *g_IBaseClient;
|
|||||||
extern IEngineTrace *g_ITrace;
|
extern IEngineTrace *g_ITrace;
|
||||||
extern IVModelInfoClient *g_IModelInfo;
|
extern IVModelInfoClient *g_IModelInfo;
|
||||||
extern IInputSystem *g_IInputSystem;
|
extern IInputSystem *g_IInputSystem;
|
||||||
extern CGlobalVarsBase *g_GlobalVars;
|
extern CGlobalVarsBase **rg_GlobalVars;
|
||||||
|
#define g_GlobalVars (*rg_GlobalVars)
|
||||||
extern IPrediction *g_IPrediction;
|
extern IPrediction *g_IPrediction;
|
||||||
extern IGameMovement *g_IGameMovement;
|
extern IGameMovement *g_IGameMovement;
|
||||||
extern IInput *g_IInput;
|
extern IInput *g_IInput;
|
||||||
|
@ -31,7 +31,7 @@ IBaseClientDLL *g_IBaseClient = nullptr;
|
|||||||
IEngineTrace *g_ITrace = nullptr;
|
IEngineTrace *g_ITrace = nullptr;
|
||||||
IVModelInfoClient *g_IModelInfo = nullptr;
|
IVModelInfoClient *g_IModelInfo = nullptr;
|
||||||
IInputSystem *g_IInputSystem = nullptr;
|
IInputSystem *g_IInputSystem = nullptr;
|
||||||
CGlobalVarsBase *g_GlobalVars = nullptr;
|
CGlobalVarsBase **rg_GlobalVars = nullptr;
|
||||||
IPrediction *g_IPrediction = nullptr;
|
IPrediction *g_IPrediction = nullptr;
|
||||||
IGameMovement *g_IGameMovement = nullptr;
|
IGameMovement *g_IGameMovement = nullptr;
|
||||||
IInput *g_IInput = nullptr;
|
IInput *g_IInput = nullptr;
|
||||||
@ -127,8 +127,7 @@ void CreateInterfaces()
|
|||||||
// FIXME SIGNATURE
|
// FIXME SIGNATURE
|
||||||
g_ISteamFriends = g_ISteamClient->GetISteamFriends(su, sp, "SteamFriends002");
|
g_ISteamFriends = g_ISteamClient->GetISteamFriends(su, sp, "SteamFriends002");
|
||||||
}
|
}
|
||||||
// g_GlobalVars = **(reinterpret_cast<CGlobalVarsBase ***>((uintptr_t) 11 + gSignatures.GetClientSignature("55 89 E5 83 EC ? 8B 45 08 8B 15 ? ? ? ? F3 0F 10")));
|
rg_GlobalVars = *reinterpret_cast<CGlobalVarsBase ***>(gSignatures.GetClientSignature("8B 15 ? ? ? ? F3 0F 10 88 D0 08 00 00") + 2);
|
||||||
g_GlobalVars = **reinterpret_cast<CGlobalVarsBase ***>(gSignatures.GetClientSignature("8B 15 ? ? ? ? F3 0F 10 88 D0 08 00 00") + 2);
|
|
||||||
g_IPrediction = BruteforceInterface<IPrediction>("VClientPrediction", sharedobj::client());
|
g_IPrediction = BruteforceInterface<IPrediction>("VClientPrediction", sharedobj::client());
|
||||||
g_IGameMovement = BruteforceInterface<IGameMovement>("GameMovement", sharedobj::client());
|
g_IGameMovement = BruteforceInterface<IGameMovement>("GameMovement", sharedobj::client());
|
||||||
IF_GAME(IsTF2())
|
IF_GAME(IsTF2())
|
||||||
|
Reference in New Issue
Block a user