Вот, смотри, я сделал вот так:в структуре CNetGame есть указатель на RakClientInterface (pNetGame + 0x2C на R3), можешь от туда его получить и изменять указатель на метод внутри самой вмт. Либо же можешь найти адрес самой функции и хукать ее (samp.dll + 0x34AC0 на R3)
C++:
bool Hooks::HookReceive() {
void** vtable = reinterpret_cast<void**>(AVSSync::getRakClientIntf());
if (!vtable) {
return false;
}
void* receiveAddr = vtable[9];
MH_STATUS createStatus = MH_CreateHook(receiveAddr, &HookedReceive, reinterpret_cast<void**>(&originalReceive));
if (createStatus != MH_OK) {
return false;
}
MH_STATUS enableStatus = MH_EnableHook(receiveAddr);
if (enableStatus != MH_OK) {
return false;
}
std::cout << "Receive hooked successfully!" << std::endl;
return true;
}
Это правильно? getRakClientIntf() возвращает указатель на RakClientInterface*