Pourquoi l'édition de la mémoire du client dans certains MMO leur permet-elle de tricher?

19

Pourquoi éditer la mémoire du client de jeu fonctionne? Pourquoi tant d'outils de «protection contre le piratage» fournis avec les clients?

Si je devais concevoir un jeu client-serveur, tout se passerait sur le serveur (la simulation du monde du jeu) et les clients ne seraient que des consommateurs passifs recevant des mises à jour de statut de la partie du monde près de leurs personnages, n'envoyant que des informations comme touches ou commandes de déplacement / action. Peut-être que je manque quelque chose ici, mais avec cette conception, tout hack comme augmenter ma STR de 200 dans la mémoire du client (si la valeur est présente) n'aura tout simplement aucun effet.

La seule explication que je peux penser est que les jeux dans lesquels la modification de la mémoire fonctionne permettent à des parties de la simulation de s'exécuter sur le client et le serveur, puis de synchroniser périodiquement tous les clients. Je peux comprendre que la conception de jeux de stratégie en temps réel avec un nombre fixe de joueurs une fois qu'un match est configuré, mais pourquoi dans les MMORPG? Est-ce une stratégie pour réduire la charge du serveur?

Hatoru Hansou
la source
2
Outre la charge du serveur, il existe également un problème de latence. Par exemple, Minecraft gère tous les mouvements côté client simplement parce que c'est la solution la plus simple (hors du mouvement purement côté client, de la prédiction côté client ou du mouvement décalé). (Minecraft n'a pas de cadre de prédiction car c'est normalement un jeu au rythme lent, donc prédire le mouvement serait beaucoup de travail et peut-être peu fiable)
user253751

Réponses:

21

Bien qu'idéal, il est pratiquement improbable de valider chaque entrée par rapport au serveur, à la fois en termes de charge de calcul et de latence dans la confirmation d'entrée pour le client.

Par conséquent, il y a généralement une poignée de choses qui ne sont pas validées sur le serveur dans de nombreux MMO. Dans certains cas, cela inclut certaines classes de mouvement de personnage, c'est pourquoi il existe des téléportations et des hacks rapides. Les protections côté client aident à fournir une barrière supplémentaire à ces hacks, bien que, bien sûr, avec un temps suffisant, ils puissent être contournés. Pour lutter contre cela, de nombreux jeux de ce type utiliseraient une stratégie d'enregistrement et de vérification et de rotation après coup des protections réelles utilisées.

Il y a aussi le problème de l'écran d'autres hacks simples de grattage de mémoire qui peuvent rassembler des informations et transmettre la pression des touches et d'autres entrées via le client plus rapidement qu'un humain ne peut normalement réagir. Ou ils peuvent rechercher des informations qui peuvent être transmises au client mais qui ne sont pas encore nécessairement visibles (comme les positions des créatures qui sont à proximité mais qui ne sont encore affichées nulle part, comme cela était courant dans les premiers hacks de la carte Diablo).


la source
Cela expliquerait l'intérêt de regarder la mémoire du client du jeu et l'intérêt d'empêcher que cela se produise. Le hack de téléportation que j'ai vu personnellement lors du dernier match auquel j'ai joué.
Hatoru Hansou
2
Fait intéressant, le jeu Ark: Survival Evolved dit qu'ils ont tout validé sur le serveur (jusqu'aux entrées, iirc). Pas exactement un MMO de type WoW mais il prend en charge les serveurs 70ppl en alpha (plus des tonnes de dinos npc et de structures construites par les joueurs). Vous pouvez certainement ressentir le décalage mais ça s'améliore. J'imagine que cela deviendra de plus en plus populaire à mesure que la technologie s'améliorera.
slicedtoad
5
«70 personnes» est au moins un ordre de grandeur (plusieurs, en fait) moins de personnes par serveur que les MMO sur lesquels j'ai travaillé. Sachez également que presque tout le monde dit qu'il fait tout sur le serveur, simplement pour ne pas donner aux pirates une longueur d'avance sur le développement de hacks.
@slicedtoad J'allais le mentionner. Notez que puisque la plupart des MMO utilisent de toute façon l'instanciation, la méthode ARK pourrait donc fonctionner à l'intérieur de ceux-ci. Il n'est tout simplement pas (encore) possible de faire cela pour de grandes quantités de joueurs.
Mât
10

L'une des raisons pour lesquelles il existe des protections est que la lecture de l'état du jeu pourrait permettre aux bots de connaître l'état du jeu et d'agir en conséquence.

Par exemple, broyer dans un MMO: si le "bot" sait quel mob se trouve, il peut envoyer des commandes aux clients du jeu pour sélectionner le mob, le frapper jusqu'à ce que sa durée de vie soit 0, ramasser le butin, rincer et répéter. Avec cela, même si toutes les modifications apportées à la simulation sont effectuées / confirmées côté serveur, certains joueurs peuvent tricher. Les commandes peuvent être envoyées via de faux clics de souris ou des raccourcis clavier, ou via l'écriture en mémoire.

C'est l'une des raisons pour lesquelles les MMO utilisent la protection de la mémoire.

Vaillancourt
la source
Ok, les bots ont plus de sens, même si vous ne pouvez pas vous mettre en mode dieu, avoir un programme qui fait tout pour vous est aussi de la triche. Mais pourquoi les "hackers" du jeu auquel je jouais peuvent tuer en un seul coup? N'est-ce pas une indication de la modification de la mémoire du jeu et du serveur pour valider ces modifications.
Hatoru Hansou
1
@HatoruHansou Oui. Et ce qui est ennuyeux, c'est que le robot sans pilote peut fonctionner seul, alors imaginez un tas de 10 ordinateurs surveillés par un seul employé fermier d'or, des personnages en ligne et actifs 24h / 24 ... votre MMO est ruiné. Certains auront même un traitement spécial pour les autres joueurs ("Ne restez pas sur mon gazon, c'est ma chambre" (été là .. Lineage II au début)).
Vaillancourt
Laissez la population de bots croître sans contrôle et votre jeu pourrait bientôt être interrompu. Ok, le bot suffit à lui seul à justifier les protections anti hack. J'attendrai encore un peu avant d'accepter la réponse.
Hatoru Hansou
@HatoruHansou sûr :) Je ne suis pas sûr d'avoir toutes les raisons de protéger la mémoire de toute façon :)
Vaillancourt
6

De nombreux MMO sont conçus avec une prédiction de succès côté client. Donc, s'il y a un hit sur le client, il envoie ce résultat au serveur qu'il y a eu un hit. Dans ce cas, le serveur ne fait pas vraiment autorité, et donc la triche est possible.

Pour être honnête, si je concevais un MMO, je donnerais au serveur toute son autorité, le client envoyant uniquement des valeurs d'entrée bloquées au serveur et le serveur résolvant le résultat.

Quant à savoir pourquoi cela n'est pas encore fait par de nombreux MMO, je ne peux que penser à la charge de serveur supplémentaire et au `` retard de réponse '' qui vient avec un serveur entièrement autorisé, car cela brise simplement la sensation et la réactivité du jeu.

Greg Quinn
la source
Cela expliquerait l'efficacité des hacks de mémoire. Avez-vous des liens vers des articles / articles sur aucune conception de serveur faisant autorité?
Hatoru Hansou
4
La charge n'est pas le seul problème - la réactivité est la clé. Tout jeu en temps réel en réseau doit utiliser des techniques de masquage de latence. Pour s'assurer que tout le monde est d'accord, le serveur doit avoir un moyen de classer les événements qui se sont produits sur chacun des clients - en essayant d'éviter les situations comme "Je vous ai tiré en premier" "Non, je vous ai tiré en premier". Les Speedhacks pour des jeux comme Counter-Strike reposent sur l'utilisation abusive de cette synchronisation en manipulant la latence perçue par le serveur, etc. (c'est l'une des raisons pour lesquelles la plupart des serveurs CS botter les joueurs avec une latence supérieure à 100-200 ms).
Luaan
3
À moins que vous ne fassiez un jeu au tour par tour, cela ne peut tout simplement pas être évité. Les latences existeront toujours et tous les ordinateurs impliqués dans le jeu en réseau doivent se mettre d'accord sur un «temps commun» pour commander les événements. Même avec les meilleurs systèmes pour gérer la latence, il y aura toujours des incohérences, mais nous avons très bien réussi à les cacher. Le problème est qu'une fois que vous commencez à faire ces petites choses, il est plus facile de laisser passer un bug subtil - par exemple, permettre au client de poster tuer le même monstre deux fois s'il prétend que le deuxième kill s'est produit avant le premier kill. C'est dur .
Luaan