Спасибо за быстрый ответ.
Для 14333 есть функция,
Код:
protected override bool NormalCheck(uint opcode)
{
return (opcode & 0x2322) == 8738 && opcode != 57919 && opcode != 26159;
}
Нахожу место, где чекается в IDA получаю
Код:
//----- (00485940) --------------------------------------------------------
char __thiscall NetClient__ProcessMessage(void *this, int a2, int a3, int a4)
{
int v4; // ebx@1
void *v5; // edi@1
unsigned int v6; // esi@1
char result; // al@2
unsigned int v8; // eax@3
int v9; // ecx@6
++dword_D36C28;
v4 = a3;
v5 = this;
CDataStore__GetInt16(a3, (int)&a3);
v6 = (unsigned __int16)a3;
if ( (a3 & 0x2399) == 0x301 )
{
result = NetClient__JAMClientDispatch(v5, 0, a2, a3, v4);
}
else
{
(*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v5 + 72))(v5, (unsigned __int16)a3);
v8 = v6 & 1 | ((v6 & 0x1C | (((unsigned __int8)(v6 & 0xC0) | ((v6 & 0x1C00 | (v6 >> 1) & 0x6000) >> 2)) >> 1)) >> 1);
if ( (v6 & 0x2322) == 0x2222 && v6 != 0xE23F && v6 != 0x662F && (v9 = *((_DWORD *)v5 + v8 + 344)) != 0 )
result = ((int (__cdecl *)(_DWORD, unsigned int, int, int))(v9 - ((v6 | (v6 << 16)) ^ 0x62A3A31D)))(
*((_DWORD *)v5 + v8 + 2392),
v6,
a2,
v4);
else
result = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 24))(v4);
}
return result;
}
в v8 походу считается наш оффсет
Правильно ли, что в *((_DWORD *)v5 + v8 + 2392) будет как раз адрес обработчика?