Por que uma camada só não basta
A maioria dos anticheats de FiveM se apoia em uma camada de detecção: ou uma stack no client que vigia DLLs injetadas, APIs com hook e assinaturas de menu conhecidas, ou uma stack no server que valida eventos e rejeita transições impossíveis de estado de jogo. Cada camada tem um modo de falha conhecido. Um AC só de client falha no momento em que um cheat esconde o loader das checagens de assinatura. Um AC só de server falha no momento em que um cheat respeita a superfície legal de eventos mas usa hacks do lado do client (silent aim, ESP, wallhack) que nunca disparam um evento no servidor. Detecção em camada dupla significa que a camada que enxerga o cheat pega ele, e a que não enxerga ainda produz um sinal comportamental que os admins podem revisar.
O que a camada do client observa
No lado do client, o Raven monitora módulos injetados, funções da engine com hook, o estado do NUI DevTools, a integridade dos próprios arquivos do resource e a presença em tempo de execução de loaders de cheat conhecidos. As assinaturas das famílias de mod menu mais ativas (Eulen, Redengine, HamMafia, Susano, TZ, TZX, Skript, Phaze, Lumia) ficam atualizadas em uma frequência de entrega de 1 a 7 dias (veja /changelog). Quando uma assinatura conhecida dispara, a prova é capturada (screenshot + trace da detecção) e enviada ao painel na nuvem. Quando a assinatura não dispara mas as anomalias sim, a pontuação de confiança daquele player cai e ele aparece no mapa ao vivo para revisão do admin.
O que a camada do server observa
No lado do server, o Raven roda uma passagem de validação em cada evento de servidor que o player dispara. Nomes de evento que nunca deveriam vir de um client são bloqueados de cara. Payloads de evento fora de limites plausíveis (quantidade de item, variação de dinheiro, spawn de veículo por minuto) são rejeitados e registrados. Sequências de evento que batem com padrões de exploit conhecidos, como a sequência encadeada usada por variantes do Redengine, são bloqueadas no nível do padrão. A detecção no servidor roda mesmo que toda checagem no client seja burlada, e é por isso que cobertura no lado do servidor não é negociável.
Como as duas camadas cooperam
Um loop de heartbeat amarra as camadas. O client reporta periodicamente ao servidor um hash assinado do seu estado crítico de execução. Se o heartbeat para, o servidor trata o client como adulterado e aplica a resposta configurada (aviso, kick ou ban automático). Se o heartbeat continua chegando mas o payload não bate mais com os valores esperados, o servidor registra a divergência e alimenta o modelo de pontuação de confiança. De um jeito ou de outro, o servidor tem leitura contínua sobre se a camada do client ainda está funcionando, então um cheat que desliga a camada do client fica imediatamente visível do lado do servidor.
Por que isso importa para “resistente a bypass”
Nenhum anticheat é à prova de bypass. Burlar um AC de camada única exige derrotar uma stack. Burlar o Raven em camada dupla exige derrotar duas stacks ao mesmo tempo, mais o heartbeat, mais o modelo de pontuação de confiança que expõe anomalias de comportamento. O custo de um bypass bem-sucedido e não detectado fica bem mais alto, e o tempo até sair uma correção fica menor porque a camada que percebeu o cheat entrega os dados de captura ao time que solta a próxima atualização de assinatura.