Don't use signatures to get steampipe

This commit is contained in:
TotallyNotElite 2019-05-06 18:35:36 +02:00
parent aec16604c2
commit 3585cba59d

View File

@ -80,6 +80,7 @@ template <typename T> T *BruteforceInterface(std::string name, sharedobj::Shared
return nullptr;
}
extern "C" typedef HSteamPipe (*GetHSteamPipe_t)();
extern "C" typedef HSteamUser (*GetHSteamUser_t)();
void CreateInterfaces()
@ -94,24 +95,24 @@ void CreateInterfaces()
g_IBaseClient = BruteforceInterface<IBaseClientDLL>("VClient", sharedobj::client());
g_ITrace = BruteforceInterface<IEngineTrace>("EngineTraceClient", sharedobj::engine());
g_IInputSystem = BruteforceInterface<IInputSystem>("InputSystemVersion", sharedobj::inputsystem());
uintptr_t steampipe_sig = gSignatures.GetSteamAPISignature("8D 83 ? ? ? ? 89 34 24 89 44 24 ? E8 ? ? ? ? 89 C6") + 0xE7;
typedef HSteamPipe (*GetSteamPipe)();
GetSteamPipe GetSteamPipe_fn = GetSteamPipe(steampipe_sig);
HSteamPipe sp = GetSteamPipe_fn();
logging::Info("Initing SteamAPI");
GetHSteamPipe_t GetHSteamPipe = reinterpret_cast<GetHSteamPipe_t>(dlsym(sharedobj::steamapi().lmap, "SteamAPI_GetHSteamPipe"));
HSteamPipe sp = GetHSteamPipe();
if (!sp)
{
logging::Info("Creating new Steam Pipe...");
logging::Info("Connecting to Steam User");
sp = g_ISteamClient->CreateSteamPipe();
}
logging::Info("Inited Steam Pipe");
GetHSteamUser_t func = reinterpret_cast<GetHSteamUser_t>(dlsym(sharedobj::steamapi().lmap, "SteamAPI_GetHSteamUser"));
HSteamUser su = func();
GetHSteamUser_t GetHSteamUser = reinterpret_cast<GetHSteamUser_t>(dlsym(sharedobj::steamapi().lmap, "SteamAPI_GetHSteamUser"));
HSteamUser su = GetHSteamUser();
if (!su)
{
logging::Info("Connecting to Steam User");
su = g_ISteamClient->ConnectToGlobalUser(sp);
}
logging::Info("Inited Steam User");
logging::Info("Inited SteamAPI");
g_IVModelRender = BruteforceInterface<IVModelRender>("VEngineModel", sharedobj::engine(), 16);
g_ISteamFriends = nullptr;
g_IEngineVGui = BruteforceInterface<IEngineVGui>("VEngineVGui", sharedobj::engine());