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 1.3 [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 dezenas de detecções e atualmente está sendo utilizado para testes em um servidor PvP tendo ótimo feedback
por parte da gestão do projeto.


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

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 [new]
  • Force Spawn [new]
  • Fast Respawn [new]
  • Fake Bullet [new]
  • Cheats Flood [new]

Recursos necessários:
  1. [Plugin] GVar

Funções adicionadas até então:

Configuração do anti-cheat:
Código:
stock EAC_InitPlayerAC(playerid) // Inicia o anti-cheat para o jogador
stock EAC_StopPlayerAC(playerid) // Para o anti-cheat para o jogador
stock EAC_IsActivePlayerAC(playerid) // Verifica se o anti-cheat está ativo (iniciado) para o jogador
stock EAC_PausePlayerAC(playerid, bool:pause, cheatid = -1) // Pausa determinada proteção para o jogador
stock EAC_IsPausedPlayerAC(playerid, cheatid) // Retorna se determinada proteção está pausada para o jogador
stock EAC_GetCheatNameAC(cheatid) // Retorna o nome do cheat com base no index
stock EAC_ReloadSettings(const file[]) // Caso altere o arquivo de configuração, é possível recarregar a configuração em tempo real sem reiniciar ou recarregar o filterscript
stock EAC_Auth(const token[]) // Autentica o token do anti-cheat para habilitá-lo

Controle de dano:
Código:
stock EWD_SetPlayerWeaponRange(playerid, weaponid, Float:range) // Altera o alcance de determinada arma para o jogador
stock Float:EWD_GetPlayerWeaponRange(playerid, weaponid) // Retorna o alcance de determinada arma do jogador
stock EWD_SetPlayerWeaponDamage(playerid, weaponid, Float:amount) // Altera o dano de determinada arma para o jogador
stock Float:EWD_GetPlayerWeaponDamage(playerid, weaponid) // Retorna o dano de determinada arma do jogador
stock EWD_SetPlayerBodyHitDamage(playerid, weaponid, bodypart, Float:amount) // Altera o dano de determinada arma e região do corpo para o jogador
stock Float:EWD_GetPlayerBodyHitDamage(playerid, weaponid, bodypart) // Retorna o dano de determinada arma e região do corpo do jogador
stock EWD_BlockPlayerBodyHitDamage(playerid, weaponid, bodypart, Float:amount) // Altera o bloqueio de dano de determinada arma e região do corpo para o jogador
stock Float:EWD_GetPlayerBlockedBodyHitDamage(playerid, weaponid, bodypart) // Retorna o bloqueio de dano de determinada arma e região do corpo do jogador
stock EWD_BlockPlayerArmourHitDamage(playerid, weaponid, bodypart, Float:amount) // Altera o bloqueio de dano de determinada arma, exclusivamente caso utilize colete, para o jogador
stock Float:EWD_GetPlayerBlockedArmourHitDamage(playerid, weaponid, bodypart) // Retorna o bloqueio de dano de determinada arma, exclusivamente caso utilize colete, do jogador
stock EWD_TogglePlayerGiveBulletDamage(playerid, bool:toggle) // Habilita/Desabilita o dano enviado do jogador
stock EWD_IsPlayerGivingBulletDamage(playerid) // Retorna se o dano enviado do jogador está habilitado ou não
stock EWD_TogglePlayerTakeBulletDamage(playerid, bool:toggle) // Habilita/Desabilita o dano recebido do jogador
stock EWD_IsPlayerTakingBulletDamage(playerid) // Retorna se o dano recebido do jogador está habilitado ou não
stock EWD_EnablePlayerFriendlyFire(playerid, bool:enable) // Habilita/Desabilita o dano enviado a jogadores do mesmo time

Funções adicionais:
Código:
stock EAC_SetPlayerGodMode(playerid, bool:active) // Ativa/Desativa modo Deus do jogador
stock EAC_IsPlayerInGodMode(playerid) // Retorna se o jogador está ou não em modo Deus
stock EAC_SetPlayerMoney(playerid, money) // Define o dinheiro do jogador
stock EAC_UpdatePlayerMoney(playerid) // Apenas atualiza na tela o dinheiro do jogador com base na memória do anti-cheat
stock EAC_GetPlayerFreeAttachedObjectSlot(playerid) // Retorna o primeiro slot livre para objetos atacados no corpo do jogador
stock EAC_GetPlayerAttachedObjectModelIndex(playerid, modelid) // Retorna o index do objeto atacado no corpo do jogador com base no modelo do objeto
stock EAC_GetPlayerAttachedObjectModel(playerid, index) // Retorna o modelo do objeto atacado no corpo do jogador com base no index e memória do anti-cheat (e não na data do cliente)
stock EAC_ApplyPlayerAttachedObjects(playerid) // Aplica os objetos atacados no corpo do jogador com base na memória do anti-cheat
stock EAC_GiveAllPlayerWeapons(playerid, delay = 0) // Reseta as armas do jogador e fornece as que estão na memória do anti-cheat, podendo aplicar com delay
stock EAC_GetPlayerWeaponData(playerid, slot, &weapons, &ammo) // Retorna as armas do jogador, com base na memória do anti-cheat (e não na data do cliente)
stock EAC_SetPlayerWeapon(playerid, weaponid, ammo) // Define uma arma especifica para o jogador
stock EAC_IsValidPlayerWeapon(playerid, weaponid) // Retorna se determinada arma do jogador foi concebida com base no servidor (e não data do cliente)


Manutenção do projeto:

Apesar de recente, é um projeto sólido, estável e extremamente otimizado.
Com foco sempre em melhorias e novas implementações


Servidor em que está sendo testado:

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

Os Aposented PvPpvp.aposented.com.br


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.