¿Por qué la edición de la memoria del cliente en algunos MMO les permite hacer trampa?

19

¿Por qué funciona editar la memoria del cliente del juego? ¿Por qué tantas herramientas de "protección contra pirateo" vienen con los clientes?

Si tuviera que diseñar un juego cliente-servidor, todo sucedería en el servidor (la simulación del mundo del juego) y los clientes serían solo consumidores pasivos que recibirían actualizaciones de estado de la parte del mundo cerca de sus personajes, enviando solo algo de información como pulsaciones de teclas o movimientos / comandos de acción. Tal vez me falta algo aquí, pero con ese diseño, cualquier truco como aumentar mi STR en 200 en la memoria del cliente (si el valor está presente), simplemente no tendrá ningún efecto.

La única explicación que puedo pensar es que los juegos en los que funciona la edición de memoria permiten que partes de la simulación se ejecuten en el cliente y el servidor y luego simplemente sincronicen todos los clientes periódicamente. Puedo entender ese diseño para los juegos de estrategia en tiempo real con un número fijo de jugadores una vez que se configura una partida, pero, ¿por qué en los MMORPG? ¿Es una estrategia para reducir la carga del servidor?

Hatoru Hansou
fuente
2
Además de la carga del servidor, también hay un problema de latencia. Por ejemplo, Minecraft maneja todos los movimientos del lado del cliente simplemente porque es la solución más fácil (por puro movimiento del lado del cliente, predicción del lado del cliente o movimiento lento). (Minecraft no tiene un marco de predicción, ya que es normalmente un juego de ritmo lento, por lo que la predicción de movimiento sería mucho trabajo y posiblemente no fiable)
user253751

Respuestas:

21

Si bien es ideal, es prácticamente improbable validar cada entrada contra el servidor, tanto en términos de carga computacional como de latencia en la confirmación de entrada para el cliente.

En consecuencia, generalmente hay un puñado de cosas que no están validadas en el servidor en muchos MMO. En algunos casos, esto incluye ciertas clases de movimiento de personajes, por lo que existen teletransportes y ataques de velocidad. Las protecciones del lado del cliente ayudan a proporcionar una barrera adicional a esos hacks, aunque, por supuesto, con el tiempo suficiente pueden evitarse. Para combatir esto, muchos de estos juegos emplearían una estrategia de registro y verificación y rotación posterior a los hechos de las protecciones reales empleadas.

También está el problema de la pantalla de otros hacks simples de raspado de memoria que pueden recopilar información y transmitir la pulsación de teclas y otras entradas a través del cliente más rápido de lo que un humano puede reaccionar normalmente. O pueden buscar información que pueda transmitirse al cliente pero que no sea necesariamente visible todavía (como las posiciones de las criaturas que están cerca pero que aún no se muestran en ningún lugar, como era común en los primeros hacks de mapas de Diablo).


fuente
Eso explicaría el interés en mirar la memoria del cliente del juego y el interés en evitar que eso suceda. El truco de teletransportación que he visto personalmente en el último juego que jugué.
Hatoru Hansou
2
Curiosamente, el juego Ark: Survival Evolved dice que tienen todo validado en el servidor (hasta las entradas, iirc). No es exactamente un MMO de tipo WoW, pero admite servidores de 70ppl en alfa (más toneladas de dinosaurios npc y estructuras construidas por jugadores). Ciertamente puedes sentir el retraso pero está mejorando. Me imagino que esto será cada vez más popular a medida que la tecnología mejore.
slicedtoad
55
"70 personas" es al menos un orden de magnitud (varias, de hecho) menos personas por servidor que los MMO en los que he trabajado. También tenga en cuenta que casi todos dicen que hacen todo en el servidor, simplemente como una forma de no ayudar a los hackers a desarrollar hacks.
@slicedtoad Estaba a punto de mencionar eso. Tenga en cuenta que, dado que la mayoría de los MMO utilizan instancias de todos modos, el método ARK podría funcionar dentro de ellos. Simplemente no es factible (todavía) hacer esto para grandes cantidades de jugadores.
Mástil
10

Una de las razones por las que existen protecciones es que leer el estado del juego podría permitir a los bots conocer el estado del juego y actuar en consecuencia.

Por ejemplo, en un MMO: si el "bot" sabe de qué mafia está, puede enviar comandos a los clientes del juego para seleccionar la mafia, golpearla hasta que su vida sea 0, recoger el botín, enjuagar y repetir. Con esto, incluso si todos los cambios en la simulación se realizan / confirman en el lado del servidor, algunos jugadores pueden hacer trampa. Los comandos pueden enviarse mediante falsos clics del mouse o pulsaciones de teclas, o mediante la escritura en memoria.

Esta es una de las razones por las cuales los MMO usan protección de memoria.

Vaillancourt
fuente
Ok, los bots tienen más sentido, incluso si no puedes ponerte en modo dios, tener un programa haciendo todo por ti también es una trampa. Pero, ¿por qué los "hackers" en el juego que estaba jugando pueden matar de un solo golpe? ¿No es eso una indicación de editar la memoria del juego y el servidor de alguna manera validar esos cambios?
Hatoru Hansou
1
@HatoruHansou Sí. Y la parte molesta es que el bot no tripulado puede ejecutarse solo, así que imagina un grupo de 10 computadoras monitoreadas por un solo empleado de un granjero de oro, personajes en línea y activos las 24 horas del día ... tu MMO está arruinado. Algunos incluso tendrán un manejo especial para otros jugadores ("No te quedes en mi territorio, esta es mi habitación" (estado allí ... Lineage II al principio)).
Vaillancourt
Deje que la población de bots crezca sin control y su juego puede quebrar pronto. Ok, el bot solo es suficiente para justificar las protecciones anti hack. Esperaré un poco más antes de aceptar la respuesta.
Hatoru Hansou
@HatoruHansou seguro :) No estoy seguro de tener todos los motivos para proteger la memoria de todos modos :)
Vaillancourt
6

Muchos MMO están diseñados con predicción de éxito del lado del cliente. Entonces, si hay un golpe en el cliente, envía ese resultado al servidor de que hubo un golpe. En este caso, el servidor no es verdaderamente autoritario, por lo que es posible hacer trampa.

Para ser honesto, si estuviera diseñando un MMO, haría que el servidor tuviera plena autoridad, con el cliente solo enviando valores de entrada restringidos al servidor, y el servidor resolvería el resultado.

En cuanto a por qué muchos MMO aún no lo han hecho, solo puedo pensar en la carga adicional del servidor y el 'retraso de respuesta' que viene con tener un servidor totalmente autorizado, ya que simplemente rompe la sensación y la capacidad de respuesta del juego.

Greg Quinn
fuente
Eso explicaría que los hacks de memoria sean efectivos. ¿Tiene algunos enlaces a artículos / documentos sobre ningún diseño de servidor autorizado?
Hatoru Hansou
44
La carga no es el único problema: la capacidad de respuesta es la clave. Cualquier juego en red en tiempo real debe emplear técnicas de ocultación de latencia. Para asegurarse de que todos estén de acuerdo, el servidor debe tener una forma de ordenar los eventos que ocurrieron en cada uno de los clientes, tratando de evitar situaciones como "Te disparé primero" "No, te disparé primero". Los Speedhacks para juegos como Counter-Strike confían en abusar de esta sincronización manipulando la latencia percibida por el servidor, etc. (es una de las razones por las que la mayoría de los servidores CS patean a los jugadores con una latencia superior a 100-200 ms).
Luaan
3
A menos que estés haciendo un juego estrictamente por turnos, esto simplemente no se puede evitar. Las latencias siempre existirán, y todas las computadoras involucradas en el juego en red deben acordar un "momento común" para ordenar eventos. Incluso con los mejores sistemas para gestionar la latencia, siempre habrá inconsistencias, pero nos hemos vuelto muy buenos para ocultarlas. El problema es que una vez que comienzas a hacer esas pequeñas cosas, es más fácil dejar pasar un error sutil, por ejemplo, permitiendo que el cliente publique matar al mismo monstruo dos veces si finge que la segunda muerte ocurrió antes de la primera. Es duro .
Luaan