Skip to content
Todos los artículos
This article is available in English
Publicado el3 min de lectura

Anticheat del lado del servidor vs del lado del cliente: dónde debe tomarse la decisión

Las comprobaciones del cliente comparten memoria con el cheat que intenta burlarlas. Lo que el cliente aún ve y el servidor no, y cómo aprovecharlo.

lado del servidorlado del clientearquitecturaRedM

También disponible enEnglishFrançaisРусскийRomână

Toda discusión sobre anticheats acaba en el mismo punto: ¿quién decide que algo ha ocurrido? Si la respuesta es la propia máquina del jugador, no tienes un anticheat, tienes una sugerencia. No es una crítica a un producto en particular. Es una propiedad de dónde se ejecuta el código. Por eso un anticheat del lado del servidor no es una preferencia de diseño, es la condición mínima.

Dos máquinas, y una de ellas es del tramposo

Un recurso de RedM tiene una parte de cliente y una parte de servidor. La parte de cliente se ejecuta dentro del proceso del juego, en un hardware que es del jugador, junto a todo lo demás que ese jugador haya decidido cargar. Un mod menu no ataca tu recurso desde fuera: una vez inyectado, comparte el mismo espacio de direcciones que el juego y que tu estado de Lua. Está en la sala. Todo lo que tu script de cliente puede leer, el menú puede leerlo antes; todo lo que tu script de cliente puede enviar, el menú puede reescribirlo al salir.

Eso le da a un atacante cuatro movimientos contra una comprobación del lado del cliente, en orden creciente de pereza:

  • Leerla. Tu lógica de detección es Lua entregado al jugador. Sus umbrales, sus nombres de eventos y sus exenciones son legibles, lo que significa que un cheat puede ajustarse para quedar justo por debajo de cada número que elegiste.

  • Parchearla. Sustituir la función que reporta, o el native al que llama, por una que devuelva lo que te mantenga callado. La comprobación sigue ejecutándose. Se ejecuta a favor del tramposo.

  • Impedir que arranque. El más común en el mundo real y el menos sofisticado. No hay nada que burlar si el archivo nunca se ejecuta: algunos loaders escriben en la tabla global del recurso antes de que tu código tenga ocasión de inicializarse.

  • Responder por ella. Si el servidor le pregunta al cliente "¿sigues vigilando?", el cheat responde que sí. Un mentiroso es perfectamente capaz de confirmar que es honesto.

Los canales de integridad siguen valiendo la pena, simplemente no son prueba de nada. El nuestro exige que el recurso responda al servidor con una cadencia fija, y el servidor trata silencios consecutivos como un evento a escalar y no como una acción inmediata, precisamente porque una conexión rural produce la misma firma que una manipulación. El silencio te dice que vayas a mirar. Nunca te dice qué ha pasado.

No publicado/Los umbrales de detección nunca se publican: un valor conocido es un valor por debajo del cual se ajusta un cheat.

Lo que el cliente ve y el servidor nunca verá

  • La cinemática de la puntería. El servidor recibe posiciones y disparos. No recibe la cámara. La trayectoria angular que sigue una mira entre dos objetivos (el paso instantáneo, la parada en seco, el disparo inmediatamente después) solo existe en el cliente, y es el rastro más fiable que deja un aimbot externo. Mira detección de silent aim en RedM para ver cómo es en la práctica.

  • Las llamadas a natives. Hacer aparecer un ped, una carreta o un objeto pasa por funciones del juego. Desde dentro del proceso puedes ver que una llamada no vino de ningún recurso conocido. Desde el servidor solo ves el resultado, en medio de todo lo que tus propios scripts crean legítimamente.

  • Los artefactos locales. Globales que planta un loader, archivos que suelta junto al juego, el propio estado de un menú. Nunca cruzan la red. Si nadie mira desde dentro, nadie mira en absoluto.

El cliente es un sensor. Nunca es un juez.

Dos tipos de afirmación, tratadas de forma distinta
afirmado por el cliente
reportado, con marca de tiempo, nunca suficiente
establecido por el servidor
deltas de posición, número de impactos, salud en el servidor
confirmado por otro cliente
la víctima describe el mismo evento
acción tomada
solo en el servidor, sobre hechos establecidos o confirmados

La regla que mantenemos es corta: un reporte del cliente puede abrir un caso y nunca puede cerrarlo. Un cliente que dice "este jugador es invisible" es una razón para empezar a contar cosas que pertenecen al servidor. La prueba más sólida no es el sensor en absoluto: son dos clientes independientes describiendo el mismo evento, porque un tramposo tendría que corromper las dos máquinas para seguir siendo coherente, y una de ellas es la de la víctima, que no tiene motivo para ayudarle.

Hacer el trabajo del lado del servidor tiene un coste real, y RedM te obliga a pagarlo. Un caballo a galope tendido cae justo donde se sitúa un umbral de velocidad ingenuo. Un jugador de pie en una diligencia en movimiento o en un tren viaja sin moverse. El viaje rápido reubica a la gente por diseño, y la reanimación de tu framework activa la misma marca de invencibilidad que un script de godmode. Una comprobación del lado del servidor que ignora esos cuatro hechos no produce menos falsos positivos que una del lado del cliente. Produce más, más ruidosos y con la autoridad de expulsar.

Así que la comprobación de velocidad no es un umbral, es una comparación: distancia recorrida frente a lo que el motor dice que está haciendo el jugador, tolerada durante una ventana de y descartada por completo cuando una reubicación fue programada por script. La ventana exacta y los contextos exentos se quedan con nosotros, porque un número publicado es un número bajo el que un cheat se puede ajustar.

No publicado/Los umbrales de detección nunca se publican: un valor conocido es un valor por debajo del cual se ajusta un cheat.

Sin agente, sin escaneo de disco

Algunos anticheats de otras plataformas piden a los jugadores instalar un driver, enumerar los procesos en ejecución o calcular hashes de archivos fuera de la carpeta del juego. Nosotros no hacemos nada de eso, y conviene decirlo claramente: BaobabAC no instala nada en la máquina del jugador. Es un recurso que tu servidor entrega, como cualquier otro recurso. No lee el disco, no lista procesos, no toca memoria fuera del juego. En un servidor de rol donde buena parte de tu población ya desconfía de lo que tu staff puede ver, eso no es un detalle técnico: es la diferencia entre una comunidad que acepta la herramienta y una que hace campaña en su contra.

Si estás comparando productos, la pregunta que hay que hacerle a un proveedor no es cuántas detecciones tiene. Es: ¿dónde se toma esta decisión y qué sabe el servidor por sí solo? Puedes ver cómo se lee la nuestra con datos reales en el panel de demostración, los precios son públicos y nuestro anticheat RedM responde a esa pregunta en su primer párrafo. Cómo funciona un anticheat RedM cubre las familias de detección que este artículo da por supuestas.

Seguir leyendo

Juzgue con pruebas, no con promesas

El panel de demostración está abierto en solo lectura con datos reales, sin registro.

Everything on one page: RedM anticheat, detections, evidence and panel.