Porque é que uma só camada não chega
A maioria dos anticheats de FiveM apoia-se numa única camada de deteção: ou uma stack no cliente que procura DLLs injetadas, APIs com hooks e assinaturas de menus conhecidos, ou uma stack no servidor que valida eventos e rejeita transições impossíveis do estado de jogo. Cada camada tem o seu modo de falha conhecido. Um AC só de cliente falha no momento em que um cheat esconde o loader das verificações por assinatura. Um AC só de servidor falha no momento em que um cheat respeita a superfície legal de eventos mas usa hacks do lado do cliente (silent aim, ESP, wallhacks) que nunca disparam um evento no servidor. Deteção de camada dupla significa que a camada que vê o cheat apanha-o, e a que não o vê produz na mesma um sinal comportamental que os admins podem rever.
O que a camada de cliente vigia
Do lado do cliente, o Raven monitoriza módulos injetados, funções do motor com hooks, o estado das NUI DevTools, a integridade dos seus próprios ficheiros de recurso e a presença em runtime de loaders de cheats conhecidos. As assinaturas das famílias de mod menus mais ativas (Eulen, Redengine, HamMafia, Susano, TZ, TZX, Skript, Phaze, Lumia) são mantidas atualizadas num ritmo de lançamento de 1 a 7 dias (ver /changelog). Quando dispara uma assinatura conhecida, são captadas provas (screenshot + trace da deteção) e enviadas para o painel na cloud. Quando a assinatura não dispara mas há anomalias, o trust score desse jogador desce e ele aparece no mapa em direto para revisão dos admins.
O que a camada de servidor vigia
Do lado do servidor, o Raven corre uma passagem de validação sobre todos os eventos de servidor que o jogador dispara. Os nomes de eventos que nunca deviam vir de um cliente são bloqueados de imediato. Os payloads de eventos que excedem limites plausíveis (quantidades de itens, variações de dinheiro, spawns de veículos por minuto) são rejeitados e registados. As sequências de eventos que correspondem a padrões de exploit conhecidos, como a cadeia de eventos usada pelas variantes do Redengine, são bloqueadas ao nível do padrão. A deteção no servidor corre mesmo que todas as verificações do cliente sejam furadas, e é por isso que a cobertura no servidor não é negociável.
Como as duas camadas cooperam
Um ciclo de heartbeat une as camadas. O cliente reporta periodicamente ao servidor um hash assinado do seu estado crítico em runtime. Se o heartbeat parar, o servidor trata o cliente como adulterado e aplica a resposta configurada (aviso, kick ou ban automático). Se o heartbeat continuar a chegar mas o payload já não corresponder aos valores esperados, o servidor regista a divergência e alimenta com ela o modelo de trust score. De qualquer das formas, o servidor tem uma leitura contínua sobre se a camada de cliente continua a funcionar, por isso um cheat que desative a camada de cliente torna-se imediatamente visível a partir do servidor.
Porque é que isto importa para «resistente a bypass»
Nenhum anticheat é à prova de bypass. Furar um AC de camada única exige derrotar uma stack. Furar o Raven de camada dupla exige derrotar duas stacks ao mesmo tempo, mais o heartbeat, mais o modelo de trust score que expõe anomalias comportamentais. O custo de um bypass bem sucedido e não detetado é significativamente mais alto, e o tempo até sair uma correção é mais curto, porque a camada que reparou no cheat entrega os dados captados à equipa que prepara a próxima atualização de assinaturas.