From 178aeeb3fda5361a1b93a22b96c9f4a7e494ca17 Mon Sep 17 00:00:00 2001 From: PixieCore <41352111+IcePixelx@users.noreply.github.com> Date: Thu, 21 Jul 2022 20:36:47 +0200 Subject: [PATCH] Use GetVirtualMethodTable for VTable consts. --- r5dev/common/netmessages.h | 6 ++---- r5dev/materialsystem/cmaterialglue.h | 3 +-- r5dev/materialsystem/cshaderglue.h | 4 ++-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/r5dev/common/netmessages.h b/r5dev/common/netmessages.h index 3943f88f..51452942 100644 --- a/r5dev/common/netmessages.h +++ b/r5dev/common/netmessages.h @@ -81,10 +81,8 @@ class HMM_Heartbeat : public IDetour virtual void GetVar(void) const { // We get the actual address of the vtable here, not the class instance. - g_pSVC_Print_VTable = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x74\x1E\x48\x8D\x05\x00\x00\x00\x00\x89\x5F\x08"), "xxxxx????xxx").FindPatternSelf("48 8D").ResolveRelativeAddressSelf(0x3, 0x7); - // 74 1E 48 8D 05 ? ? ? ? 89 5F 08 - g_pSVC_UserMessage_VTable = g_mGameDll.FindPatternSIMD(reinterpret_cast("\xE8\x00\x00\x00\x00\x48\x85\xFF\x74\x65"), "x????xxxxx").FindPatternSelf("48 8D").ResolveRelativeAddressSelf(0x3, 0x7); - // E8 ? ? ? ? 48 85 FF 74 65 + g_pSVC_Print_VTable = g_mGameDll.GetVirtualMethodTable(".?AVSVC_Print@@"); + g_pSVC_UserMessage_VTable = g_mGameDll.GetVirtualMethodTable(".?AVSVC_UserMessage@@"); } virtual void GetCon(void) const { } virtual void Attach(void) const { } diff --git a/r5dev/materialsystem/cmaterialglue.h b/r5dev/materialsystem/cmaterialglue.h index dd3740de..4d64dd9a 100644 --- a/r5dev/materialsystem/cmaterialglue.h +++ b/r5dev/materialsystem/cmaterialglue.h @@ -72,8 +72,7 @@ class VMaterialGlue : public IDetour virtual void GetVar(void) const { } virtual void GetCon(void) const { - g_pMaterialGlueVTable = g_mGameDll.FindPatternSIMD(reinterpret_cast("\xB9\x00\x00\x00\x00\x48\x8D\x05\x00\x00\x00\x00\x48\x8D\x15\x00\x00\x00\x00"), "x????xxx????xxx????") - .FindPatternSelf("48 8D ?? ?? ?? ?? 01").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); /*B9 ? ? ? ? 48 8D 05 ? ? ? ? 48 8D 15 ? ? ? ?*/ + g_pMaterialGlueVTable = g_mGameDll.GetVirtualMethodTable(".?AVCMaterialGlue@@"); } virtual void Attach(void) const { } virtual void Detach(void) const { } diff --git a/r5dev/materialsystem/cshaderglue.h b/r5dev/materialsystem/cshaderglue.h index ac9b9625..c7ab890c 100644 --- a/r5dev/materialsystem/cshaderglue.h +++ b/r5dev/materialsystem/cshaderglue.h @@ -45,8 +45,8 @@ class VShaderGlue : public IDetour virtual void GetFun(void) const { // We get it here in GetFun because we grab other functions with it, it's more efficient. - CShaderGlue_VTable = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x8D\x05\x00\x00\x00\x00\x48\x89\x01\xC3\xCC\xCC\xCC\xCC\xCC\x48\x85\xD2"), "xxx????xxxxxxxxxxxx").ResolveRelativeAddressSelf(0x3, 0x7); - g_pCShaderGlue_VTable = CShaderGlue_VTable.RCast(); /*48 8D 05 ? ? ? ? 48 89 01 C3 CC CC CC CC CC 48 85 D2*/ + CShaderGlue_VTable = g_mGameDll.GetVirtualMethodTable(".?AVCShaderGlue@@"); + g_pCShaderGlue_VTable = CShaderGlue_VTable.RCast(); CShaderGlue_SetupShader = CShaderGlue_VTable.WalkVTable(4).RCast(); }