here are the clientmode signatures that i'm using
you can use this for hooking createmove
WARNING: Clientmode is not used in L4D/L4D1 L4D2 Portal2
static DWORD s_ClientModeCsgo = FindSignature("client.dll", "A1 ? ? ? ? 8B 80 ? ? ? ? 5D");
if (s_ClientModeCsgo)
s_ClientMode = *(DWORD**)(s_ClientModeCsgo + 1);
if (!IsValidPointer(s_ClientMode))
{
static DWORD s_ClientModeSignature = FindSignature("client.dll", "8B 0D ? ? ? ? D9 45 0C 53 51");
if (s_ClientModeSignature)
s_ClientMode = **(DWORD***)(s_ClientModeSignature + 2);
if (!IsValidPointer(s_ClientMode))
{
static DWORD VguiScreensMode = FindSignatureInside("client.dll", "A3 ? ? ? ? E8 ? ? ? ? 8B 10 8B C8 8B 02 68 ? ? ? ? FF D0 5E 83 C4 20");
if (VguiScreensMode)
s_ClientMode = *(DWORD**)(VguiScreensMode + 1);
if (!IsValidPointer(s_ClientMode))
{
static DWORD ClientmodeFunc = FindSignatureInside("client.dll", "E8 ? ? ? ? 8B F8 85 FF 74 14 8B 37 81 C6 ? ? ? ? E8 ? ? ? ?");
if (ClientmodeFunc)
{
static DWORD CallAddr = ExtractCallAddress(ClientmodeFunc);
DbgLog(L"CreateMove function is 0x%X\n", CallAddr);
s_ClientMode = reinterpret_cast<DWORD*(*)()>(CallAddr)();
}
}
}
}