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
Opiniones de Hacker News
Experiencia al investigar tráfico de red al conocer Linux por primera vez
La sorprendente eficiencia de la IA para el juego Magic: The Gathering
La complejidad y eficiencia del desarrollo de IA para Magic: The Gathering
Interés en proyectos personales sobre MTGA y en hackear juegos
La diversión de jugar Magic 93/94 con un hijo
La importancia de la lógica del juego del lado del cliente y la necesidad de validación en el servidor
Bugs en League of Legends y su impacto
Dudas sobre la conexión de la IA durante una partida y cómo se maneja la rendición del oponente
Experiencia reutilizando paquetes de conexión al servidor en Diablo 2
Interés en el desarrollo de emuladores de servidor y en partidas LAN