From 9e32f6402a95b820ba671836c3ed8690718e023f Mon Sep 17 00:00:00 2001 From: bottiger1 <55270538+bottiger1@users.noreply.github.com> Date: Wed, 8 May 2024 20:31:03 -0700 Subject: [PATCH 1/3] fix sdktools crash on 64 bits --- extensions/sdktools/hooks.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/sdktools/hooks.cpp b/extensions/sdktools/hooks.cpp index 79094702b3..83588c99fa 100644 --- a/extensions/sdktools/hooks.cpp +++ b/extensions/sdktools/hooks.cpp @@ -234,7 +234,7 @@ void CHookManager::OnClientConnected(int client) } } - int hookid = SH_ADD_VPHOOK(IClientMessageHandler, ProcessVoiceData, (IClientMessageHandler *)((intptr_t)(pClient) + 4), SH_MEMBER(this, &CHookManager::ProcessVoiceData), true); + int hookid = SH_ADD_VPHOOK(IClientMessageHandler, ProcessVoiceData, (IClientMessageHandler *)((intptr_t)(pClient) + sizeof(intptr_t)), SH_MEMBER(this, &CHookManager::ProcessVoiceData), true); hook.SetHookID(hookid); netProcessVoiceData.push_back(new CVTableHook(hook)); } From 98a6e111b5d8add2e58154dcf388b360f0b96563 Mon Sep 17 00:00:00 2001 From: bottiger1 <55270538+bottiger1@users.noreply.github.com> Date: Wed, 8 May 2024 20:46:52 -0700 Subject: [PATCH 2/3] remove other 32bit-isms from sdktools --- extensions/sdktools/hooks.cpp | 2 +- extensions/sdktools/vhelpers.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/sdktools/hooks.cpp b/extensions/sdktools/hooks.cpp index 83588c99fa..c758575314 100644 --- a/extensions/sdktools/hooks.cpp +++ b/extensions/sdktools/hooks.cpp @@ -584,7 +584,7 @@ bool CHookManager::SendFile(const char *filename, unsigned int transferID) #if !defined CLIENTVOICE_HOOK_SUPPORT bool CHookManager::ProcessVoiceData(CLC_VoiceData *msg) { - IClient *pClient = (IClient *)((intptr_t)(META_IFACEPTR(IClient)) - 4); + IClient *pClient = (IClient *)((intptr_t)(META_IFACEPTR(IClient)) - sizeof(intptr_t)); if (pClient == NULL) { return true; diff --git a/extensions/sdktools/vhelpers.cpp b/extensions/sdktools/vhelpers.cpp index 7d5c5545d0..ceeaa76ae5 100644 --- a/extensions/sdktools/vhelpers.cpp +++ b/extensions/sdktools/vhelpers.cpp @@ -754,7 +754,7 @@ CEntityFactoryDictionary *GetEntityFactoryDictionary() // Get real address of function // Address of signature + offset of relative offset + sizeof(int32_t) offset + relative offset - addr = (void *)((intptr_t)addr + offset + 4 + funcOffset); + addr = (void *)((intptr_t)addr + offset + sizeof(intptr_t) + funcOffset); } pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &retData, NULL, 0); From 6fecd5c32d93870f2d96b6ae1675797130b0cc7c Mon Sep 17 00:00:00 2001 From: Nick Hastings Date: Sun, 9 Jun 2024 13:08:08 -0400 Subject: [PATCH 3/3] Swap sizeof(intptr_t) for sizeof(void *) --- extensions/sdktools/hooks.cpp | 4 ++-- extensions/sdktools/vhelpers.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/sdktools/hooks.cpp b/extensions/sdktools/hooks.cpp index c758575314..706b478d69 100644 --- a/extensions/sdktools/hooks.cpp +++ b/extensions/sdktools/hooks.cpp @@ -234,7 +234,7 @@ void CHookManager::OnClientConnected(int client) } } - int hookid = SH_ADD_VPHOOK(IClientMessageHandler, ProcessVoiceData, (IClientMessageHandler *)((intptr_t)(pClient) + sizeof(intptr_t)), SH_MEMBER(this, &CHookManager::ProcessVoiceData), true); + int hookid = SH_ADD_VPHOOK(IClientMessageHandler, ProcessVoiceData, (IClientMessageHandler *)((intptr_t)(pClient) + sizeof(void *)), SH_MEMBER(this, &CHookManager::ProcessVoiceData), true); hook.SetHookID(hookid); netProcessVoiceData.push_back(new CVTableHook(hook)); } @@ -584,7 +584,7 @@ bool CHookManager::SendFile(const char *filename, unsigned int transferID) #if !defined CLIENTVOICE_HOOK_SUPPORT bool CHookManager::ProcessVoiceData(CLC_VoiceData *msg) { - IClient *pClient = (IClient *)((intptr_t)(META_IFACEPTR(IClient)) - sizeof(intptr_t)); + IClient *pClient = (IClient *)((intptr_t)(META_IFACEPTR(IClient)) - sizeof(void *)); if (pClient == NULL) { return true; diff --git a/extensions/sdktools/vhelpers.cpp b/extensions/sdktools/vhelpers.cpp index ceeaa76ae5..0dfbc08c8a 100644 --- a/extensions/sdktools/vhelpers.cpp +++ b/extensions/sdktools/vhelpers.cpp @@ -753,8 +753,8 @@ CEntityFactoryDictionary *GetEntityFactoryDictionary() int32_t funcOffset = *(int32_t *)((intptr_t)addr + offset); // Get real address of function - // Address of signature + offset of relative offset + sizeof(int32_t) offset + relative offset - addr = (void *)((intptr_t)addr + offset + sizeof(intptr_t) + funcOffset); + // Address of signature + offset of relative offset + pointer size + relative offset + addr = (void *)((intptr_t)addr + offset + sizeof(void *) + funcOffset); } pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &retData, NULL, 0);