¿Cuáles son algunas formas de prevenir o reducir las trampas en los juegos multijugador en línea? [cerrado]

19

Punkbuster existe solo para evitar trampas, y sin embargo, las trampas son comunes en los juegos habilitados para punkbuster. Modern Warefare 2 está seriamente bloqueado por el usuario final que ejecuta su propio servidor o realiza modificaciones, y la trampa ocurre constantemente.

Para un juego multijugador donde cada cliente se ejecuta en una PC, ¿qué se puede hacer para reducir o eliminar las trampas?

kevin42
fuente
1
Esta no es una respuesta completa en sí misma, por lo que no la enumeraré como una, pero si agrega una cierta cantidad de valor a la cuenta de los jugadores además de los métodos tradicionales contra trampas, creo que puede ayudar. Por ejemplo, si los nuevos jugadores son relegados a los servidores "novatos" hasta que adquieran suficiente experiencia para acceder al resto del juego, los hackers tendrán que volver a nivelar su cuenta después de haber sido prohibidos cada vez. Probablemente todavía haya algunos piratas informáticos que puedan superar eso, pero proteger su cuenta / servidores de emparejamiento es mucho más fácil que proteger a los clientes.
Lewis Wakeford

Respuestas:

18

Depende de cómo están haciendo trampa, centrándose en una de las formas principales de crear trampas, otros procesos que se enganchan en su aplicación y la modifican: puede enumerar a través de todos los demás procesos y conectar sus métodos de manipulación de memoria y su emulación de teclado / mouse métodos.

Los wallhacks generalmente se escriben inyectando código entre su proceso y las bibliotecas DirectX / GL para establecer la transparencia en los materiales para que puedan verse. Puede agregar un código a su sistema de escena / selección para no atraer específicamente a otros jugadores / entidades útiles si están detrás de las paredes (para evitar hacer trampa de esa manera).

Si vas a jugar multijugador y quieres evitar que los paquetes se modifiquen entre cliente / servidor, entonces crear una suma de verificación de los datos que estás enviando a través de algún algoritmo propio y verificar esto a medida que se produce en el otro lado puede ser efectivo. (Probablemente terminarás haciendo esto de todos modos para varios propósitos de control de calidad).

Lo mismo ocurre con la mayoría de sus recursos en memoria, crear una suma de verificación al comienzo de un marco y verificarlo en varias etapas puede generar una detección de manipulación de memoria bastante útil.

Este es un tema bastante complicado, pero es de esperar que lo coloque en una dirección vagamente aceptable.

Rob Ashton
fuente
O incluso mejor que esconder objetos detrás de las paredes (que todavía pueden ser pirateados), sin proporcionar al cliente información sobre la ubicación de ese jugador (o solo lo que es necesario para, por ejemplo, un buen sonido de sonido 3D)
Bart van Heukelom
17

En la solución más extrema, básicamente nunca confías en el cliente. Para juegos como MMO, los usuarios no ejecutan sus servidores, y cualquier lógica de juego se maneja del lado del servidor. Nunca le dé al cliente la autoridad para decir "Tengo X salud" o "Tengo X munición", etc.

Tétrada
fuente
44
Eso es genial si realmente tienes los recursos para ejecutar un servidor dedicado, pero es una forma bastante simple de verlo. Lo más probable es que aún haga mucha lógica en los clientes y un subconjunto mínimo de la lógica en el servidor, con sincronización ocasional para hacer cumplir las reglas básicas. Tampoco necesariamente previene contra todos los trucos del lado del cliente como wallhacks / manipulación de memoria para engañar al cliente para que revele información útil / etc
Rob Ashton
10

Si tiene un sistema donde la lógica es costosa y debe realizarse principalmente en el cliente para guardar los ciclos del servidor, puede implementar un sistema probabilístico de detección de trampas. Cada pocos minutos elige unos pocos jugadores diferentes para inspeccionar de cerca y verificar la consistencia en el servidor. Dado que los tramposos rara vez limitan su engaño a períodos cortos y poco frecuentes de tiempo, que se ser capturados con el tiempo.

Otro beneficio de esto es que no tendrán un ciclo de respuesta rápido para el desarrollo: si el servidor tarda 10 horas de juego en promedio para prestarle atención, entonces ese es un ciclo de respuesta de 10 horas cada vez que quiera ver Si algo funcionó. Y si lo hizo el trabajo, es aún más porque no se sabe si el servidor les ha dado un pulgar hacia arriba o simplemente no ha llegado en torno a ellos.

ZorbaTHut
fuente
+1 En términos de rendimiento, los enfoques estocásticos como estos son la única respuesta realista a los problemas más generales, la OMI. Aparte de OnLive, es decir, si solo se dirige a los EE. UU.
Ingeniero
5

También hay muchos tipos de trucos de ayuda de puntería para tiradores en primera persona que también funcionan conectando las llamadas a la biblioteca de gráficos. OGC Hook para Counter-Strike / HL1 tenía una multitud de opciones más allá de hacer que las paredes fueran transparentes.

Si la información de ubicación de los enemigos se pasa en algún momento a una biblioteca de nivel inferior que tiene un código ampliamente disponible, esas llamadas se pueden conectar y los datos de ubicación, escala, rotación, etc. se pueden usar para calcular con precisión el mejor vector para disparar sobre ese enemigo Los sistemas anti-trampas como PunkBuster a menudo incluyen detección de tipo heurístico (con qué frecuencia este jugador obtiene un disparo perfecto, con qué frecuencia giran alrededor de 180 grados para lograr un asesinato de un solo disparo, etc.) además de la memoria y el monitoreo del proceso.

En última instancia, la tarea de evitar las trampas en los juegos multijugador es un juego de gato y ratón. A medida que se desarrollan nuevas trampas, se crean nuevos métodos anti-trampas, y luego se crean nuevas trampas para evitar las nuevas tecnologías anti-trampas.

Como dijo Tetrad en su respuesta, las únicas reglas duras y rápidas para la "seguridad del juego" son proporcionar al cliente la menor información posible y confiar en el cliente lo menos posible. Sin embargo, los diferentes tipos de juegos tendrán diferentes requisitos que pueden afectar qué tan bien puede cumplir con estas reglas.

En un juego FPS, debido a que la velocidad de juego es tan rápida, a menudo no es posible proporcionar al cliente solo los datos que debe conocer sobre este instante exacto. Si no le dices al cliente que hay un enemigo a la vuelta de la esquina y el jugador sí da la vuelta a esa esquina, de repente tienes que enviarle esa información en cuestión de milisegundos o arriesgarte a que un enemigo mate al jugador. Alguna vez has visto.

La única "solución" para estos problemas que está actualmente disponible probablemente sea OnLive. Debido a que ese servicio solo entrega contenido de audio y video desde un cliente que se ejecuta de manera segura en el centro de datos, el único medio para hacer trampa sería esencialmente crear una IA humana que pueda analizar el flujo de video entrante y tomar medidas basadas en eso, una tarea que pocos, si los hay, los tramposos están a la altura.

Charles Ellis
fuente
3

Todas las respuestas anteriores son geniales, pero agregaré otra pieza:

Algunos juegos tienen una función de reproducción muy sólida, que permite guardar la reproducción de cada juego después del final del juego en un formato compacto y verlo de varias maneras: diferentes perspectivas del jugador, estadísticas de interfaz de usuario en tiempo real, etc.

Ejemplo con el que estoy muy familiarizado: Starcraft 2. Una de las formas en que Blizzard bloquea a los piratas informáticos es mediante la recepción de pruebas de trampas como repeticiones del juego.

Un ejemplo de uso en un FPS sería: si jugaste un juego y sospechas que la otra persona hizo trampa con un truco en la pared, miras la repetición y luego ves que en su visión normal de repetición, posiblemente no podría haberlo hecho. Te he visto y tirar una granada por la esquina, o lo que sea.

Luego lo denuncias con la repetición, y si la evidencia en su contra es lo suficientemente buena, está prohibido. Hasta donde yo sé, las compañías que hacen estas cosas solo toman evidencia seria, o múltiples fuentes de evidencia del mismo comportamiento antes de la prohibición.

Por lo tanto, esta no es una técnica anti-depuración, es un sistema de informe de usuario que permite pruebas convenientes de trampas asistidas por humanos.

SirKnigget
fuente
0

Puede que esta no sea una respuesta completa, pero tengo algunos comentarios aquí. Una de las mejores formas de prevenir las trampas es la ofuscación o el uso de C / C ++. Esto evita que las personas modifiquen el código del cliente.

LiquidFeline
fuente
Vale la pena mencionar que hay muchos desobuscadores por ahí. Además, los juegos .Net (C #, XNA) se pueden modificar mediante una reflexión. Por lo que sé, supongo que C / C ++ realmente es una forma de dificultar la manipulación del código.
user1306322
Si. Mi punto es que la ofuscación evita que el código fácilmente descompilado sea ilegible y que C / C ++ no sea fácil de compilar, ambas son buenas opciones.
LiquidFeline
Además, si parches tu juego con frecuencia y cambias las compensaciones binarias en el ejecutable o insertas NOP al azar, ningún hack sobrevivirá el tiempo suficiente ...
SirKnigget
@CPP_Person: En realidad, C es bastante famoso por ser muy fácil de compilar. Es un asunto totalmente diferente para C ++, que de hecho es un lenguaje bastante complejo desde la perspectiva de los compiladores. Sin embargo, no entiendo, por qué debería importar, lo fácil que es compilar un cierto lenguaje de programación: desea evitar que las personas escriban herramientas de trucos, no escribir un buen compilador, de todos modos usarían un compilador C ++ existente, lo que hace que La descompilación difícil me parece mucho más interesante que hacer que la compilación sea difícil.
Kaiserludi