Skip to content
Tous les articles
This article is available in English
Publié le3 min de lecture

Anticheat côté serveur ou côté client : où la décision doit se prendre

Un anticheat côté serveur décide là où le tricheur n’a pas la main. Ce que le client voit que le serveur ne verra jamais, et comment l’exploiter.

côté serveurcôté clientarchitectureRedM

Aussi disponible enEnglishРусскийEspañolRomână

Toute discussion sur l’anticheat finit au même endroit : qui décide que quelque chose s’est produit ? Si la réponse est la machine du joueur lui-même, vous n’avez pas un anticheat, vous avez une suggestion. Ce n’est pas une critique d’un produit en particulier. C’est une propriété de l’endroit où le code s’exécute, et c’est tout l’enjeu d’un anticheat côté serveur.

Deux machines, dont une appartient au tricheur

Une ressource RedM a une partie client et une partie serveur. La partie client tourne dans le processus du jeu, sur un matériel que possède le joueur, à côté de tout ce que ce joueur a choisi de charger. Un mod menu n’attaque pas votre ressource de l’extérieur : une fois injecté, il partage le même espace d’adressage que le jeu et que votre état Lua. Il est dans la pièce. Tout ce que votre script client peut lire, le menu peut le lire avant lui ; tout ce que votre script client peut envoyer, le menu peut le réécrire à la sortie.

Cela donne à un attaquant quatre manœuvres contre un contrôle côté client, par ordre croissant de paresse :

  • Le lire. Votre logique de détection est du Lua livré au joueur. Ses seuils, ses noms d’événements et ses exemptions sont lisibles, ce qui signifie qu’un cheat peut être réglé pour rester juste sous chaque nombre que vous avez choisi.

  • Le modifier. Remplacer la fonction qui rapporte, ou la native qu’elle appelle, par une qui renvoie ce qui vous garde silencieux. Le contrôle s’exécute toujours. Il s’exécute en faveur du tricheur.

  • L’empêcher de démarrer. La plus courante dans la nature, et la moins sophistiquée. Rien n’a besoin d’être battu si le fichier ne s’exécute jamais : certains loaders écrivent dans la table globale de la ressource avant que votre code n’ait l’occasion de s’initialiser.

  • Répondre à sa place. Si le serveur demande au client « surveillez-vous toujours ? », le cheat répond oui. Un menteur est parfaitement capable de confirmer qu’il est honnête.

Les canaux d’intégrité valent encore la peine d’exister, ils ne prouvent simplement rien. Le nôtre exige que la ressource réponde au serveur à intervalle régulier, et le serveur traite silences consécutifs comme un événement à faire monter plutôt que comme une action immédiate, précisément parce qu’une connexion rurale produit la même signature qu’une falsification. Le silence vous dit d’aller regarder. Il ne dit jamais ce qui s’est passé.

Non publié/Les seuils de détection ne sont jamais publiés : une valeur connue est une valeur sous laquelle un cheat se règle.

Ce que le client voit et que le serveur ne verra jamais

  • La cinématique de la visée. Le serveur reçoit des positions et des tirs. Il ne reçoit pas la caméra. Le chemin angulaire que suit un viseur entre deux cibles (le pas instantané, l’arrêt net, le tir immédiatement après) n’existe que sur le client, et c’est la trace la plus fiable que laisse un aimbot externe. Voyez la détection du silent aim sur RedM pour ce que cela donne en pratique.

  • Les appels de natives. Faire apparaître un ped, un chariot ou un objet passe par des fonctions du jeu. Depuis l’intérieur du processus, on peut voir qu’un appel ne vient d’aucune ressource connue. Depuis le serveur, on ne voit jamais que le résultat, noyé dans tout ce que vos propres scripts créent légitimement.

  • Les artefacts locaux. Les globales qu’un loader plante, les fichiers qu’il dépose à côté du jeu, l’état propre d’un menu. Rien de cela ne traverse le réseau. Si personne ne regarde de l’intérieur, personne ne regarde.

Le client est un capteur. Jamais un juge.

Deux sortes d’affirmations, traitées différemment
affirmé par le client
rapporté, horodaté, jamais suffisant
établi par le serveur
écarts de position, nombre d’impacts, santé côté serveur
confirmé par un autre client
la victime décrit le même événement
action menée
côté serveur uniquement, sur des faits établis ou confirmés

La règle que nous tenons est courte : un rapport du client peut ouvrir un dossier, il ne peut jamais en fermer un. Un client qui dit « ce joueur est invisible » est une raison de commencer à compter des choses que le serveur possède. La preuve la plus forte n’est pas le capteur du tout : ce sont deux clients indépendants qui décrivent le même événement, parce qu’un tricheur devrait corrompre les deux machines pour rester cohérent, et l’une des deux est celle de la victime, qui n’a aucune raison de l’aider.

Faire le travail côté serveur a un vrai coût, et RedM vous le fait payer. Un cheval au grand galop tombe exactement là où se situe un seuil de vitesse naïf. Un joueur debout dans une diligence en mouvement ou sur un train voyage sans bouger. Le voyage rapide déplace les gens par conception, et la réanimation de votre framework pose exactement le même drapeau d’invincibilité qu’un script de godmode. Un contrôle côté serveur qui ignore ces quatre faits ne produit pas moins de faux positifs qu’un contrôle côté client. Il en produit plus, plus bruyants, et avec l’autorité d’expulser.

Le contrôle de vitesse n’est donc pas un seuil, c’est une comparaison : la distance parcourue face à ce que le moteur dit que le joueur fait, tolérée sur une fenêtre de et abandonnée entièrement quand un déplacement était scripté. La fenêtre exacte et les contextes exemptés restent chez nous, parce qu’un nombre publié est un nombre sous lequel un cheat peut se régler.

Non publié/Les seuils de détection ne sont jamais publiés : une valeur connue est une valeur sous laquelle un cheat se règle.

Aucun agent, aucune analyse de disque

Certains anticheats d’autres plateformes demandent aux joueurs d’installer un pilote, d’énumérer les processus en cours, ou de calculer l’empreinte de fichiers situés hors du dossier du jeu. Nous ne faisons rien de tout cela, et il vaut la peine de le dire franchement : BaobabAC n’installe rien sur la machine du joueur. C’est une ressource que votre serveur livre, comme toutes les autres. Elle ne lit pas le disque, ne liste pas les processus, ne touche pas à la mémoire en dehors du jeu. Sur un serveur roleplay où une grande partie de votre population se méfie déjà de ce que votre staff peut voir, ce n’est pas un détail technique : c’est la différence entre une communauté qui accepte l’outil et une qui fait campagne contre lui.

Si vous comparez des produits, la question à poser à un éditeur n’est pas combien de détections il a. C’est : où cette décision est-elle prise, et que sait le serveur par lui-même ? Vous pouvez voir ce que cela donne chez nous sur des données réelles dans le panel de démo, les tarifs sont publics, et notre anticheat RedM répond à cette question dès son premier paragraphe. Comment fonctionne un anticheat RedM couvre les familles de détection que cet article suppose connues.

À lire ensuite

Jugez sur pièces, pas sur une promesse

Le panel de démonstration est ouvert en lecture seule sur des données réelles, sans inscription.

Everything on one page: anticheat RedM, detections, evidence and panel.