vmprotect
Известный
- 382
- 242
написал фулл функцию но коннект не происходит на сервероффсет от самп.длл должен идти
C++:
using CNetGame__UpdateNetwork = void(__thiscall *)(void* _this);
kthook::kthook_simple<CNetGame__UpdateNetwork>CNetGame__UpdateNetwork_Hook;
void CNetGame__UpdateNetwork__HOOK(const decltype(CNetGame__UpdateNetwork_Hook)& hook, void* _this) {
Packet* packet = nullptr;
uint8_t* localdata = nullptr;
uint8_t state{};
for (packet = sampapi::v037r3::RefNetGame()->m_pRakClient->Receive();
packet && packet->data;
packet = sampapi::v037r3::RefNetGame()->m_pRakClient->Receive())
{
localdata = packet->data;
if (*localdata == 40)
state = localdata[5];
switch (state) {
case 12: {
sampapi::v037r3::RefNetGame()->Packet_AuthKey(packet);
break;
}
case 29: {
sampapi::v037r3::RefChat()->AddMessage(0xFFFFFFFF, "Сервер не отвечает. Повторяем подключение");
sampapi::v037r3::RefNetGame()->m_nGameState = 1;
break;
}
case 31: {
sampapi::v037r3::RefChat()->AddMessage(0xFFFFFFFF, "Сервер не отвечает. Повторяем подключение");
break;
}
case 32: {
sampapi::v037r3::RefNetGame()->Packet_DisconnectionNotification(packet);
break;
}
case 33: {
sampapi::v037r3::RefNetGame()->Packet_ConnectionLost(packet);
break;
}
case 34: {
sampapi::v037r3::RefNetGame()->Packet_ConnectionSucceeded(packet);
break;
}
case 35: {
sampapi::v037r3::RefChat()->AddMessage(0xFFFFFFFF, "Не удалось инициализировать шифрование.");
break;
}
case 36: {
sampapi::v037r3::RefChat()->AddMessage(0xFFFFFFFF, "Вы забанены на этом сервере.");
break;
}
case 37: {
sampapi::v037r3::RefChat()->AddMessage(0xFFFFFFFF, "Неправильный пароль.");
sampapi::v037r3::RefNetGame()->m_pRakClient->Disconnect(0, 0);
break;
}
case 200: {
sampapi::v037r3::RefNetGame()->Packet_VehicleSync(packet);
break;
}
case 203: {
sampapi::v037r3::RefNetGame()->Packet_AimSync(packet);
break;
}
case 206: {
sampapi::v037r3::RefNetGame()->Packet_BulletSync(packet);
break;
}
case 207: {
sampapi::v037r3::RefNetGame()->Packet_PlayerSync(packet);
break;
}
case 208: {
sampapi::v037r3::RefNetGame()->Packet_MarkersSync(packet);
break;
}
case 209: {
sampapi::v037r3::RefNetGame()->Packet_UnoccupiedSync(packet);
break;
}
case 210: {
sampapi::v037r3::RefNetGame()->Packet_TrailerSync(packet);
break;
}
case 211: {
sampapi::v037r3::RefNetGame()->Packet_PassengerSync(packet);
break;
}
default:
break;
}
sampapi::v037r3::RefNetGame()->m_pRakClient->DeallocatePacket(packet);
}
return hook.call_trampoline(_this);
}
void hooks::install_tormoz_updatenetwork_hook() {
CNetGame__UpdateNetwork_Hook.set_dest(SampBase + 0xAF20);
CNetGame__UpdateNetwork_Hook.set_cb(&CNetGame__UpdateNetwork__HOOK);
CNetGame__UpdateNetwork_Hook.install();
}