1 points par GN⁺ 2023-12-06 | 1 commentaires | Partager sur WhatsApp

Hacker un jeu : obtenir 100 % de victoires dans Magic: The Gathering Arena

  • Découverte d’une méthode pour forcer l’adversaire à abandonner automatiquement dans Magic: The Gathering: Arena
  • Proposition de fournir le code source ainsi qu’une solution, avec l’intention signalée de rapporter le problème

Introduction

  • Point de vue sur l’obfuscation du code côté client : l’obfuscation élève la barrière pour les personnes peu investies, mais constitue aussi un obstacle pour les développeurs passionnés qui signalent des failles de sécurité
  • Dans un jeu de cartes, l’état de la partie est entièrement géré côté serveur, et le client ne reçoit que les informations nécessaires
  • Le client ne disposant que d’informations limitées, le hacking est difficile

Premiers pas

  • Début du hacking du jeu par l’analyse des communications réseau
  • MTGA, écrit en C#, facilite la manipulation des objets du jeu à l’exécution
  • Utilisation de la réflexion, qui permet d’accéder aux champs et méthodes privés

Trouver des indices

  • La décompilation C# utilise des jetons de métadonnées pour les relier à des noms lisibles par des humains
  • Découverte de la fonction JoinMatch, supposée être le point de première connexion au serveur de jeu

L’implémentation de Sparky

  • Sparky, la mascotte de MTGA, est le tutoriel et le bot d’entraînement pour les nouveaux joueurs
  • La logique du bot s’exécute en local, et tout le processus de décision a lieu sur l’ordinateur de l’utilisateur

Le diable est dans les détails de l’implémentation

  • Au lancement d’un match contre le bot, la logique réelle du bot est gérée via la classe HeadlessClient
  • Le bot se connecte au serveur de jeu et fait avancer la partie sans avoir besoin de rendre visuellement le plateau de jeu

Prendre le contrôle du match

  • Grâce à la réflexion, il est possible de modifier le comportement des objets du jeu
  • Écriture d’un code permettant d’identifier son propre siège, puis de connecter un client sur l’autre siège afin de forcer l’adversaire à abandonner

L’avis de GN⁺

Le point le plus important de cet article est l’attitude responsable du développeur, qui partage sa découverte d’une faille de sécurité afin qu’elle puisse être corrigée. Il est particulièrement intéressant de constater que, même dans un système comme un jeu de cartes où le serveur gère entièrement l’état de la partie, il peut exister des vulnérabilités permettant de manipuler le résultat via des modifications côté client. Ces informations offrent aux développeurs de jeux une leçon précieuse pour renforcer la sécurité et rendre les parties plus équitables.

1 commentaires

 
GN⁺ 2023-12-06
Avis Hacker News
  • Une expérience de découverte de Linux en analysant le trafic réseau

    • Analyse de trafic non chiffré à l’aide du programme ShowEQ pour le jeu EverQuest
    • Utilisation d’un hub pour dupliquer le trafic vers une machine Linux, dessiner une carte en temps réel et afficher la position des personnages
    • Possibilité de voir les objets détenus par les monstres, avec prise en charge de la chasse sélective de certains monstres
    • C’était une méthode passive et indétectable, mais SOE a ensuite commencé à chiffrer le trafic
  • L’efficacité impressionnante de l’IA pour le jeu Magic: The Gathering

    • Étonnement face à la faible utilisation mémoire d’une IA pouvant fonctionner sur une machine locale
    • Exécuter l’IA en local plutôt que sur le serveur peut être plus logique
    • Prise en compte des différences de CPU entre serveur et machine locale, ainsi que du support multicœur
  • La complexité et l’efficacité du développement d’une IA pour Magic: The Gathering

    • Dissipe les idées reçues sur le développement d’une IA complexe pour MTG
    • Mention de l’accessibilité de la logique de Sparky et des choix d’implémentation des développeurs
    • Référence au caractère presque Turing-complet du jeu et au développement de stratégies d’IA
  • Intérêt pour des projets personnels autour de MTGA et pour le hacking de jeux

    • Développement en cours d’un client MTGA non officiel, encore à un stade précoce
    • Expression d’un intérêt pour l’architecture du client, l’expérience de hack de jeux et la divulgation de bugs
  • Le plaisir de jouer à Magic 93/94 avec son fils

    • Plaisir de jouer avec de vraies cartes avec son fils
    • Participation au championnat du monde organisé à Madrid et fierté vis-à-vis des résultats de son fils
  • L’importance de la logique de jeu côté client et la nécessité d’une validation côté serveur

    • Accent mis sur la réactivité de la logique côté client dans les jeux en temps réel
    • Importance de la validation côté serveur dans les jeux de cartes et limitation des informations sur l’adversaire
  • Un bug dans League of Legends et son impact

    • Une erreur serveur et une manipulation du résultat de la partie causées par une combinaison spécifique de champion et d’objet
  • Questions sur la connexion de l’IA en cours de partie et sur la gestion des abandons de l’adversaire

    • Question sur l’autorisation de connecter une IA pendant un match réel et sur la manière dont les abandons sont traités
  • Expérience de réutilisation de paquets de connexion serveur dans Diablo 2

    • Partage d’une méthode pour connecter un personnage de serveur LAN au serveur Internet officiel
  • Intérêt pour le développement d’un émulateur de serveur et pour les matchs en LAN

    • Exploration de la possibilité de développer un émulateur de serveur pour des matchs en LAN avec toutes les cartes débloquées