Portal SAMP
[Anti-cheats] EVO Anti-Cheat [SA:MP / Open.MP] - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Lançamentos (https://portalsamp.com/forumdisplay.php?fid=26)
+---- Fórum: Anti-cheats (https://portalsamp.com/forumdisplay.php?fid=51)
+---- Tópico: [Anti-cheats] EVO Anti-Cheat [SA:MP / Open.MP] (/showthread.php?tid=4999)



EVO Anti-Cheat [SA:MP / Open.MP] - Dr Editor - 26/04/2025

[Imagem: Sem-titulo-2.png]
EVO Anti-Cheat v2.3.4 [SA:MP/Open.MP]



Sobre:

Trata-se de um novo anti-cheat server-side desenvolvido para OpenMP e agora com suporte para SA:MP, cujo objetivo é ter segurança e controle absoluto sobre a data (info) do jogador.
Atualmente está em constante desenvolvimento, tendo ainda algumas incoerências em certas situações, porém já possui mais de 50 de detecções e atualmente está sendo utilizado firmemente em servidores tendo ótimo feedback
por parte da gestão dos projetos que o utilizam.


Configuração de detecção:

Por se tratar de um anti-cheat de codigo fonte fechado, possui um arquivo de configuração externo que pode ser recarregado a qualquer momento.
O arquivo de configuração possui atualmente pouco mais de 200 entradas de configuração, onde é possível parametrizar exatamente como deve ser feito a detecção de cada cheat que permita uma configuração externa.

Abaixo consta algumas das entradas de configuração para melhor entendimento:
Código:
cbug_speed_limit=
cbug_alert_count=
auto_cbug_speed_limit=
auto_cbug_alert_count=
armour_delay_check=
armour_alert_count=
health_delay_check=
health_alert_count=
driveby_delay_check=
fakekill_kill_flood_sequence_time=
fakekill_death_flood_sequence_time=
fakekill_kill_flood_alert_count=
fakekill_death_flood_alert_count=
fastrun_distance=
fastrun_distance_alert_count=
incoming_connection_alert_count=
incoming_connection_sequence_delay=
interior_delay_check=
interior_alert_count=
virtual_world_delay_check=
virtual_world_alert_count=
special_action_delay_check=
money_delay_check=


Segurança:

Qualquer informação no SA:MP pode ser facilmente manipulada, o que bagunça toda uma economia e a gameplay dos demais.
Atualmente, com o uso deste anti-cheat, é possível resgatar informações corretas da data de jogadores que utilizam cheat para manipulá-las como vida, colete, armas, munição, objetos atacados etc, de forma que mesmo manipulando
as informações, não seja possível mantê-las durante o salvamento dos dados, criando assim uma camada extra de validação nas informações e garantindo a proteção dos dados de cada jogador contra qualquer tipo de alteração externa.


Controle de configuração:
  • Defina em que momento o anti-cheat deve iniciar para determinado jogador
  • Defina em que momento o anti-cheat deve parar para determinado jogador
  • Defina em que momento o anti-cheat deve pausar ou retomar a verificação de um cheat específico para determinado jogador
  • Altere e recarregue as configurações do anti-cheat a qualquer momento sem necessidade de reiniciar o servidor ou recarregar o filterscript

Compatibilidade de SO:

Todas as dependências do anti-cheat podem ser obtidas tanto para Linux quanto para Windows.
O anti-cheat é um filterscript, então pode ser facilmente implementado como qualquer outro script externo.


Compatibilidade de modo de jogo:

Por se tratar de um anti-cheat robusto e com dezenas de detecções, foi criado uma configuração externa para ajustar as detecções conforme o modo de jogo ou gosto.
Em um servidor roleplay, por exemplo, as detecções podem ser mais sensíveis, enquanto para um PvP é necessário tornar menos sensível detecções relacionadas à armas ou race menos sensível detecções para veículos.
Você configura completamente cada detecção como preferir.


Abordagem de detecção:

O servidor é totalmente independente para decidir o que fazer sobre a detecção.
Para isto, é fornecido uma biblioteca (evo_ac.inc) contendo todas as informações necessárias para aplicar as punições e configurações.
Diferente da maioria dos anti-cheats, este gera uma chamada individual na respectiva callback informando maiores detalhes sobre a detecção.

Algumas callbacks:
Código:
AC_OnInvalidCameraCrasher(playerid, cam_mode)
AC_OnPlayerAmmo(playerid, old_ammo, new_ammo, weaponid)
AC_OnPlayerArmour(playerid, Float:old_armour, Float:new_armour)
AC_OnPlayerCBug(playerid, speed)
AC_OnPlayerAutoCBug(playerid, speed)
AC_OnPlayerCheckpoint(playerid)
AC_OnPlayerDamageFlood(playerid, damagedid, weaponid, damage_count)


Controle de dano:

Com o controle de dano do Evo Anti-Cheat, mesmo usando cheat, a vida do jogador diminui e caso não diminua (através de bloqueios de RPC) não há problema, pois a vida e colete do jogador é trabalhada de forma unilateral, ou seja, a vida e colete do cliente (jogador) é só mais uma informação visual assim como o dinheiro. Então, por exemplo, se o jogador estiver com vida zerada no servidor, porém na tela dele a vida estiver cheia em decorrência do bloqueio de RPC, será considerado cheat e chamará as funções respectivas ao cheat.

Também é possível configurar o dano em diferentes situações:
  • Partes do corpo
    - Para danos personalizados em 7 regiões do corpo
  • Alcance
    - Bloqueia automaticamente disparos realizados fora do alcance definido
  • Bloqueio de dano em partes do corpo
    - Para bloqueios de dano personalizados em 7 regiões do corpo
  • Permissão/bloqueio para dar/receber dano
    - Para permitir e/ou bloquear dano dado ou recebido para jogadores

Validador de morte:

Com o Evo Anti-Cheat, é possível mitigar falsas mortes enviadas ao servidor. Fake kill/death agora podem ser facilmente ignorados.
Mesmo com esta proteção ativa, é importante manter a detecção de anti fake kill/death por flood para combater versões mais avançadas deste cheat.
Esta proteção não possui callback, pois ao identificar uma morte falsa/inválida, apenas a bloqueia.


Proteções (até o momento):
  • Vida
  • Colete
  • Skin
  • Objetos atacados
  • Vida de veículo
  • Arma
  • Munição
  • Morte
  • Distância de dano controlado (não manipulável)
  • Quantidade de dano controlado (não manipulável)

Detecções (até o momento):
  • Armour
  • C-Bug
  • Auto C-Bug
  • Car Fly
  • Dialog Spoof
  • Drive-By
  • Fake Kill/Death (flood)
  • Fast Run
  • GodMode
  • Health
  • Connection Flood
  • Interior
  • Special Action (All)
  • Money
  • Multi Connection
  • No Fall Damage
  • Ping
  • Player Checkpoint
  • Player Position (Fly, Airbreak, Teleport)
  • Race Checkpoint
  • Skin
  • Vehicle Fast Enter/Exit
  • Vehicle Health
  • Vehicle Mod (Invalid, Cheat)
  • Vehicle Speed
  • Virtual World
  • Weapon (Forbbiden, Invalid, Cheat)
  • Ammo (Infinite, Invalid, Cheat)
  • Rapid Fire
  • Free Cam
  • Player Velocity (troll)
  • Vehicle Velocity (troll)
  • Fake AFK
  • Fake Lag
  • Invisible
  • Damage (Invalid, Flood)
  • Silent Aim
  • Pro Aim
  • Quick Vehicle Change (shot, pull, teleport)
  • Anti Kick
  • Invalid Bullet Crasher
  • Invalid Damage Crasher
  • Invalid Camera Crasher
  • NOP (TogglePlayerSpectating, TogglePlayerControllable, RemovePlayerFromVehicle, SpawnPlayer, SetPlayerPos)
  • Attached Objects (Full protection)
  • RCon
  • Force Spawn
  • Fast Respawn
  • Fake Bullet
  • Upside Mode [Open MP apenas] (Novo)
  • Invert Walk [Open MP apenas] (Novo)
  • Map Run (Novo)
  • Cheats Flood

Recursos necessários:
  1. [Plugin] GVar

Funções adicionadas até então:

Configuração do anti-cheat:
Código PHP:
// Retorna a versão do EVO
stock EVO_GetVersion()

// Autentica o Token para ativar a proteção
stock EVO_Auth(const token[])

// Inicializa a proteção para o jogador (iniciado automaticamente ao conectar)
stock EVO_InitPlayerAC(playerid)

// Para a proteção para o jogador
stock EVO_StopPlayerAC(playerid)

// Retorna se o EVO está ativo para o jogador
stock EVO_IsActivePlayerAC(playerid)

// Pausa um cheat específico ou todos para determinado jogador
stock EVO_PausePlayerAC(playeridbool:pausecheatid = -1)

// Retorna se um cheat específico está pausado para o jogador
stock EVO_IsPausedPlayerAC(playeridcheatid)

// Retorna o nome do cheat
stock EVO_GetCheatNameAC(cheatid)

// Recarrega o arquivo de configuração do anti-cheat
stock EVO_ReloadSettings(const file[]) 


Controle de dano:
Código PHP:
// Define o alcance de determinada arma para o jogador
stock EWD_SetPlayerWeaponRange(playeridweaponidFloat:range)

// Retorna o alcance de determinada arma do jogador
stock Float:EWD_GetPlayerWeaponRange(playeridweaponid)

// Define o dano de determinada arma para o jogador
stock EWD_SetPlayerWeaponDmg(playeridweaponidFloat:amount)

// Retorna o dano de determinada arma do jogador
stock Float:EWD_GetPlayerWeaponDmg(playeridweaponid)

// Define o dano de uma arma em uma região específica do corpo do jogador
stock EWD_SetPlayerBodyDmg(playeridweaponidbodypartFloat:amount)

// Retorna o dano de uma arma em uma região específica do corpo do jogador
stock Float:EWD_GetPlayerBodyDmg(playeridweaponidbodypart)

// Bloqueia uma quantidade de dano recebido em uma parte do corpo do jogador
stock EWD_BlockPlayerBodyDmg(playeridweaponidbodypartFloat:amount)

// Retorna a quantidade bloqueada de dano recebido em uma parte do corpo do jogador
stock Float:EWD_GetPlayerBlockedBodyDmg(playeridweaponidbodypart)

// Bloqueia uma quantidade de dano recebido em uma parte do corpo do jogador (APENAS QUANDO IDENTIFICADO COLETE)
stock EWD_BlockPlayerArmourDmg(playeridweaponidbodypartFloat:amount)

// Retorna a quantidade bloqueada de dano recebido em uma parte do corpo do jogador (APENAS QUANDO IDENTIFICADO COLETE)
stock Float:EWD_GetPlayerBlockedArmourDmg(playeridweaponidbodypart)

// Alterna se o jogador pode DAR dano a outro jogador (Habilitado automaticamente ao conectar)
stock EWD_TogglePlayerGiveBulletDmg(playeridbool:toggle)

// Retorna se o jogador pode DAR dano a outro jogador
stock EWD_IsPlayerGivingBulletDmg(playerid)

// Alterna se o jogador pode RECEBER dano de outro jogador (Habilitado automaticamente ao conectar)
stock EWD_TogglePlayerTakeBulletDmg(playeridbool:toggle)

// Retorna se o jogador pode RECEBER dano de outro jogador
stock EWD_IsPlayerTakingBulletDmg(playerid)

// Alterna o fogo amigo para o jogador
stock EWD_EnablePlayerFriendlyFire(playeridbool:enable


Funções adicionais/extendidas:
Código PHP:
// Expulsão com delay e com possibilidade de bloquear um IP temporariamente (ambos parâmetros em ms)
stock EVO_Kick(playeriddelay 0block_ip_time 0)

// Define a vida do jogador, podendo definir quem o matou e com qual arma (caso a vida seja definida 0)
stock EWD_SetPlayerHealth(playeridFloat:healthkillerid INVALID_PLAYER_IDWEAPON:reason WEAPON_UNKNOWN)

// Retorna diretamente a quantidade de vida do jogador
stock Float:EWD_GetPlayerHealth(playerid)

// Retorna diretamente a quantidade de colete do jogador
stock Float:EWD_GetPlayerArmour(playerid)

// Retorna se o jogador está sincronizado
stock EVO_IsPlayerSynced(playerid)

// Personaliza o delay de disparo de uma arma (disponível apenas para ID: 24, 25) - Padrão: 450ms
stock EVO_SetPlayerCBugDelay(playeridweaponiddelay)

// Retorna a velocidade 2D do jogador
stock Float:EVO_GetPlayerSpeed2D(playerid)

// Retorna a velocidade 3D do jogador
stock Float:EVO_GetPlayerSpeed3D(playerid)

// Prevenção (não detecção) de dialog spoof
// Neste caso a detecção ocorre sempre, mas HABILITANDO esta funcionalidade a caixa de diálogo não terá resposta dos botões
stock EVO_PreventPlayerDialogSpoof(playeridbool:enable)

// Alterna o modo Deus (anti-cheat)
stock EVO_SetPlayerGodMode(playeridbool:active)

// Retorna se o jogador está em modo Deus (anti-cheat)
stock EVO_IsPlayerInGodMode(playerid)

// Define o dinheiro do jogador
stock EVO_SetPlayerMoney(playeridmoney)

// Atualiza o HUD de dinheiro com base na memória do anti-cheat
stock EVO_UpdatePlayerMoney(playerid)

// Retorna o primeiro slot livre de objetos atacados no corpo do jogador com base na memória do anti-cheat
stock EVO_GetFreeAttachedObjectSlot(playerid)

// Retorna o index do objeto atacado com base no modelo e memória do anti-cheat (-1 se o modelo não for encontrado)
stock EVO_GetAttachedObjectModelIndex(playeridmodelid)

// Retorna o modelo do objeto atacado com base no index com base na memória do anti-cheat
stock EVO_GetAttachedObjectModel(playeridindex)

// Ataca todos os objetos no corpo do jogador com base na memória do anti-cheat
stock EVO_ApplyPlayerAttachedObjects(playerid)

// Retorna diretamente a vida do veículo com base na memória do anti-cheat
stock Float:EVO_GetVehicleHealth(vehicleid)

// Remove uma arma específica da mão do jogador
stock EVO_RemovePlayerWeapon(playeridweaponid)

// Concede todas as armas do jogador com base na memória do anti-cheat, podendo aplicar delay
stock EVO_GiveAllPlayerWeapons(playeriddelay 0)

// Define uma arma específica para o jogador
stock EVO_SetPlayerWeapon(playeridweaponidammo)

// Retorna se a arma do jogador é válida com base na memória do anti-cheat
stock EVO_IsValidPlayerWeapon(playeridweaponid


EVO grátis:

A versão free do EVO, ou seja, sem Token, garante uma proteção superficial contra crashers (básicos) e cheats de disparo como manipulação de dano e manipulação de distância de disparo.
Apesar das proteções de dano, não é possível personalizar a distância ou dano recebido com o EVO Weapon Config.
Nesta versão não se deve utilizar funções 'EVO_Get...', pois o valor retornado não será necessariamente da memória do anti-cheat, uma vez que ele não está 100% operante.


Instalação:

Tudo o que você precisa está no arquivo baixado (acesse o canal do Discord), onde terá a pasta da versão SA:MP e Open.MP.
Lembrando que a versão de SA:MP e Open.MP são distintas, portanto, não coloque a compilação errada do EVO no servidor para evitar problemas.
No download vocês terão tudo devidamente configurado e a partir do script exemplo, poderão trabalhar com o anti-cheat sem dificuldades.


Manutenção do projeto:

Projeto lançado oficialmente em sua primeira versão no início de Abril e sendo atualizado rigorosamente.


Servidor(es) que já estão utilizando:

Caso tenham interesse em conferir o anti-cheat e sua efetividade, basta acessar o servidor abaixo:

Os Aposented PvPpvp.aposented.com.br
Os Aposented Roleplay: rp.aposented.com.br (em breve)


Maiores informações:

Discord: https://discord.gg/cuFaYC9UMQ

Agora você pode:
  • Interagir com um Bot personalizado para automação de chaves e pagamentos
  • Reportar bugs
  • Enviar feedback
  • Call privada comigo para discutir sobre o anti-cheat
  • Download



RE: EVO Anti-Cheat [OpenMP] - xbruno1000x - 12/05/2025

É uma contribuição enorme para a comunidade, visto que já fazem muitos anos que não sai absolutamente nada relacionado a Anti-Cheat.


RE: EVO Anti-Cheat [OpenMP] - Dr Editor - 13/05/2025

(12/05/2025 21:13)xbruno1000x Escreveu: É uma contribuição enorme para a comunidade, visto que já fazem muitos anos que não sai absolutamente nada relacionado a Anti-Cheat.

Não por ser meu, mas com base no que já foi compartilhado na comunidade, é sim um dos maiores e mais completos serviços de proteção já desenvolvidos exclusivamente para a nova palataforma de SA:MP.
Agradeço o feedback.


RE: EVO Anti-Cheat [OpenMP] - Dr Editor - 27/06/2025

@Atualização 1.3!

Venho informar que o Evo Anti-Cheat, em sua versão 1.3, já está detectando a esmagadora maioria dos painéis privados (dito maioria, pois não tem como testar todos), dentre eles o que mais está caindo no gosto popular: o painel russo.
Não há mecanismos de ByPass suficientes, até então, que possam evitar as detecções quando utilizado os mais diversos recursos de cheat na presença do Evo.
Servidores como HZ, BRP e dentre outros servidores grandes, são alvos fáceis para paineis privados e em testes recentes, o Evo Anti-Cheat mitigou tranquilamente o que para os hackers era impossível detectar.
O anti-cheat trabalha em uma linha entre o aceitável e o detectável.
O aceitável é tudo aquilo que não afeta a gameplay dos demais, porém que ao mesmo tempo não possa beneficiar o hacker, dando margem para erro de detecção e tornando a mesma mais precisa.
Por exemplo, considerando o packet loss, formas legit de usar cheat... São mecanismos que entram na área do "aceitável".
Os hackers estão aprimorando suas armas a cada dia enquanto o Evo aprimora suas defesas e ambos os lados só perdem se não se atualizam!


RE: EVO Anti-Cheat [SA:MP / Open.MP] - Dr Editor - 28/07/2025

@Atualização 2.0!

Devido a demanda de servidores SA:MP, foi realizado uma grande mudança em todo o anti-cheat ampliando a proteção para o ambiente SA:MP e não mais apenas para Open.MP.
Agora contamos com o download de dois servidores diferentes, um para cada plataforma, com a intenção de facilitar os testes da proteção e também exemplificar como instalar o Evo.


RE: EVO Anti-Cheat [SA:MP / Open.MP] - PT_Player - 01/08/2025

Dr para mim rever vc aqui no mundo de gta sa multiplayer é mt bom.

Grande contribuiçao por sua parte.
Vlw por isto.


RE: EVO Anti-Cheat [SA:MP / Open.MP] - Dr Editor - 04/08/2025

(01/08/2025 19:00)PT_Player Escreveu: Dr para mim rever vc aqui no mundo de gta sa multiplayer é mt bom.

Grande contribuiçao por sua parte.
Vlw por isto.

Grande PT!!

Agradeço o feedback!