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?
multiplayer
anti-cheat
security
kevin42
fuente
fuente
Respuestas:
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente