¿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?
fuente
Respuestas:
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
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.
fuente
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.
fuente