1 puntos por GN⁺ 2023-12-06 | 1 comentarios | Compartir por WhatsApp

Hackeo de juegos: lograr un 100% de victorias en Magic: The Gathering Arena

  • Se descubrió una forma de hacer que el oponente se rinda automáticamente en Magic: The Gathering Arena
  • Se propone proporcionar el código fuente y una solución junto con la intención de reportar el problema

Introducción

  • Opinión sobre la ofuscación del código del lado del cliente: la ofuscación eleva la barrera para quienes invierten poco esfuerzo, pero se convierte en un obstáculo para los desarrolladores apasionados que reportan vulnerabilidades de seguridad
  • En los juegos de cartas, el servidor gestiona por completo el estado de la partida y el cliente solo recibe la información necesaria
  • Como el cliente solo tiene información limitada, hackearlo es difícil

Comenzando

  • El hackeo del juego comenzó analizando la comunicación de red
  • MTGA, escrito en C#, facilita manipular objetos del juego en tiempo de ejecución
  • Se usó reflexión, que permite acceder a campos y métodos privados

Buscando pistas

  • La decompilación de C# usa tokens de metadatos para vincularlos con nombres legibles por humanos
  • Se encontró la función JoinMatch, que se presume es donde se establece la primera conexión con el servidor del juego

La implementación de Sparky

  • Sparky, la mascota de MTGA, es el bot de tutorial y práctica para jugadores nuevos
  • La lógica del bot se ejecuta localmente, y todo el proceso de toma de decisiones ocurre dentro de la computadora del usuario

El diablo de la implementación (detalles)

  • Al iniciar una partida contra el bot, la lógica real del bot se procesa mediante la clase HeadlessClient
  • El bot se conecta al servidor del juego y avanza la partida sin necesidad de renderizar el tablero

Tomar control de la partida

  • Usando reflexión, es posible cambiar el comportamiento de los objetos del juego
  • Se escribió código para identificar el propio asiento y conectar un cliente a otro asiento, haciendo que el oponente se rindiera

Opinión de GN⁺

Lo más importante de este artículo es la conducta responsable del desarrollador al compartir el hallazgo de una vulnerabilidad de seguridad en el juego con el fin de mejorarla. Resulta muy interesante que incluso en sistemas donde el servidor controla por completo el estado de la partida, como en los juegos de cartas, puedan existir vulnerabilidades que permitan manipular el resultado mediante alteraciones del lado del cliente. Esta información ofrece una lección importante para que los desarrolladores de juegos refuercen la seguridad y hagan los juegos más justos.

1 comentarios

 
GN⁺ 2023-12-06
Opiniones de Hacker News
  • Experiencia al investigar tráfico de red al conocer Linux por primera vez

    • Uso del programa ShowEQ para el juego EverQuest para analizar tráfico sin cifrar
    • Uso de un hub para duplicar el tráfico a una máquina Linux, dibujar mapas en tiempo real y mostrar la ubicación de los personajes
    • Posibilidad de ver qué objetos tenía cada mob y facilitar la cacería selectiva de mobs específicos
    • Era un método pasivo e imposible de detectar, pero después SOE empezó a cifrar el tráfico
  • La sorprendente eficiencia de la IA para el juego Magic: The Gathering

    • Sorpresa por el bajo uso de memoria de una IA que puede ejecutarse en una máquina local
    • Ejecutar la IA en local podría tener más sentido que hacerlo en el servidor
    • Consideraciones sobre la diferencia de CPU entre el servidor y la máquina local, y el soporte multinúcleo
  • La complejidad y eficiencia del desarrollo de IA para Magic: The Gathering

    • Aclaración de malentendidos sobre lo complejo que es desarrollar una IA para MTG
    • Accesibilidad de la lógica de Sparky y las decisiones de implementación de los desarrolladores
    • Mención de que el juego es casi Turing completo y de lo que eso implica para desarrollar estrategias de IA
  • Interés en proyectos personales sobre MTGA y en hackear juegos

    • Desarrollo de un cliente no oficial de MTGA, aunque todavía en una etapa temprana
    • Expresión de interés por la experiencia de hackear juegos, divulgar bugs y la estructura del cliente
  • La diversión de jugar Magic 93/94 con un hijo

    • Disfrutar partidas con su hijo usando cartas físicas
    • Participación en el campeonato mundial realizado en Madrid y orgullo por el desempeño de su hijo
  • La importancia de la lógica del juego del lado del cliente y la necesidad de validación en el servidor

    • Énfasis en la capacidad de respuesta de la lógica del lado del cliente en juegos en tiempo real
    • Importancia de la validación en el servidor en juegos de cartas y de limitar la información del oponente
  • Bugs en League of Legends y su impacto

    • Errores del servidor y manipulación del resultado de la partida causados por combinaciones específicas de campeón y objeto
  • Dudas sobre la conexión de la IA durante una partida y cómo se maneja la rendición del oponente

    • Pregunta sobre si se permite conectar una IA durante una partida real y cómo se procesa la rendición
  • Experiencia reutilizando paquetes de conexión al servidor en Diablo 2

    • Se comparte un método para conectar un personaje de servidor LAN a un servidor oficial de internet
  • Interés en el desarrollo de emuladores de servidor y en partidas LAN

    • Exploración de la posibilidad de desarrollar un emulador de servidor para partidas LAN con todas las cartas desbloqueadas