Punkbuster existe juste pour empêcher la tricherie, et pourtant la tricherie est courante dans les jeux compatibles punkbuster. Modern Warefare 2 est sérieusement bloqué par l'utilisateur final qui exécute son propre serveur ou crée des mods, et la triche se produit constamment.
Pour un jeu multijoueur où chaque client s'exécute sur un PC, que peut-on faire pour réduire ou éliminer la tricherie?
multiplayer
anti-cheat
security
kevin42
la source
la source
Réponses:
Cela dépend de la façon dont ils trichent, en se concentrant sur l'un des principaux moyens de créer des tricheurs, d'autres processus qui se verrouillent dans votre application et la modifient - vous pouvez énumérer tous les autres processus et accrocher leurs méthodes de manipulation de la mémoire et leur émulation clavier / souris méthodes.
Les wallhacks sont généralement écrits en injectant du code entre votre processus et les bibliothèques DirectX / GL pour définir la transparence sur les matériaux afin qu'ils puissent être vus à travers. Vous pouvez ajouter du code à votre système de scénographie / abattage pour ne pas spécifiquement dessiner d'autres joueurs / entités utiles s'ils sont derrière des murs (pour éviter de tricher de cette façon).
Si vous allez en multijoueur et que vous souhaitez empêcher la modification des paquets entre client / serveur, il peut être efficace de créer une somme de contrôle des données que vous envoyez via un algorithme et de vérifier cela au fur et à mesure. (Vous finirez probablement par le faire de toute façon à diverses fins d'AQ).
Il en va de même pour la plupart de vos ressources en mémoire, la création d'une somme de contrôle au début d'une trame et sa vérification à différentes étapes peuvent donner lieu à une détection de manipulation de mémoire assez pratique.
C'est un sujet assez complexe, mais j'espère que cela vous place dans une direction vaguement acceptable.
la source
Dans la solution la plus extrême, vous ne faites pratiquement jamais confiance au client. Pour les jeux comme les MMO, les utilisateurs ne gèrent pas leurs serveurs et toute logique de jeu est gérée côté serveur. Ne donnez jamais au client le pouvoir de dire «J'ai X santé» ou «J'ai X munitions», etc.
la source
Si vous avez un système où la logique est coûteuse et doit être effectuée principalement sur le client pour économiser les cycles du serveur, vous pouvez implémenter un système de détection de triche probabiliste. Toutes les quelques minutes, il choisit quelques joueurs différents pour inspecter de près et vérifier la cohérence sur le serveur. Étant donné que les tricheurs limitent rarement leur tricherie à des périodes courtes et rares, ils seront finalement capturés.
Un autre avantage à cela est qu'ils n'auront pas un cycle de rotation rapide pour le développement - si cela prend 10 heures de jeu en moyenne pour que le serveur prête attention à vous, alors c'est un cycle de rotation de 10 heures chaque fois que vous voulez voir si quelque chose fonctionnait. Et si cela a fonctionné, c'est encore plus longtemps car ils ne sauront pas si le serveur leur a donné un coup de pouce ou s'il ne les a tout simplement pas contactés.
la source
Il existe également de nombreux types de hacks d'aide à la visée pour les tireurs à la première personne qui fonctionnent également en se connectant aux appels de la bibliothèque graphique. Le crochet OGC pour Counter-Strike / HL1 avait une multitude d'options au-delà de la transparence des murs.
Si les informations de localisation des ennemis sont à un moment donné transmises à une bibliothèque de niveau inférieur qui dispose d'un code largement disponible, ces appels peuvent être connectés et les données de localisation, d'échelle, de rotation, etc. peuvent être utilisées pour calculer avec précision le meilleur vecteur de tir. sur cet ennemi. Les systèmes anti-triche comme PunkBuster incluent souvent une détection de type heuristique (à quelle fréquence ce joueur obtient-il un tir parfait, à quelle fréquence tournent-ils autour de 180 degrés pour décrocher un coup unique, etc.) en plus de la surveillance de la mémoire et des processus.
En fin de compte, la tâche de prévenir la tricherie dans les jeux multijoueurs est un jeu de chat et de souris. Au fur et à mesure que de nouvelles astuces sont développées, de nouvelles méthodes anti-triche sont créées, puis de nouvelles astuces sont conçues pour éviter les nouvelles technologies anti-triche.
Comme Tetrad l'a dit dans sa réponse, les seules règles strictes et rapides pour la "sécurité du jeu" sont de fournir au client le moins d'informations possible et de lui faire le moins confiance possible. Cependant, différents types de jeux auront des exigences différentes qui peuvent influer sur la façon dont vous pouvez respecter ces règles.
Dans un jeu FPS, parce que la vitesse de jeu est si rapide, il n'est souvent pas possible de fournir uniquement au client les données qu'il doit connaître sur cet instant précis. Si vous ne dites pas au client qu'il y a un ennemi au coin de la rue et que le joueur contourne ce coin, vous devez soudainement lui envoyer ces informations en quelques millisecondes ou risquer de faire tuer le joueur par un ennemi qu'il n'a pas fait. jamais vu.
Le seul «correctif» pour ces problèmes qui est actuellement disponible serait probablement OnLive. Étant donné que ce service ne fournit que du contenu audio et vidéo à partir d'un client fonctionnant en toute sécurité dans le centre de données, le seul moyen de tricherie serait de créer essentiellement une IA humaine qui pourrait analyser le flux vidéo entrant et prendre des mesures en fonction de cela - une tâche que peu, le cas échéant, les tricheurs sont à la hauteur.
la source
Toutes les réponses ci-dessus sont excellentes, mais j'ajouterai un autre morceau:
Certains jeux ont une fonction de relecture très solide, qui permet d'enregistrer la relecture de chaque jeu après la fin du jeu dans un format compact et de le regarder de différentes manières - différentes perspectives de joueur, interface utilisateur de statistiques en temps réel, etc.
Exemple que je connais très bien: Starcraft 2. L'une des façons dont Blizzard bloque les pirates est de recevoir des preuves de triche sous forme de rediffusions de jeu.
Un exemple d'utilisation dans un FPS serait: si vous avez joué à un jeu et que vous soupçonnez que l'autre personne a triché avec un mur-hack, vous regardez la rediffusion, puis voyez que dans sa vision de rediffusion normale, il ne pouvait pas avoir vous a vu et a jeté une grenade au coin, ou autre chose.
Vous le signalez ensuite avec la rediffusion, et si les preuves contre lui sont suffisantes, il est interdit. Pour autant que je sache, les entreprises qui font cela ne prennent que des preuves sérieuses ou de multiples sources de preuves du même comportement avant d'interdire.
Ce n'est donc pas une technique anti-débogage, c'est un système de rapport utilisateur qui permet une preuve de triche assistée par l'homme.
la source
Ce n'est peut-être pas une réponse complète, mais j'ai quelques commentaires ici. L'un des meilleurs moyens de prévenir la tricherie est l'obscurcissement ou l'utilisation de C / C ++. Cela empêche les gens de modifier le code client.
la source