Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: anonimo en Junio 05, 2015, 10:36:32 PM

Título: Como puedo hacer que los usuarios de mi juego online no puedan hacer trampas?
Publicado por: anonimo en Junio 05, 2015, 10:36:32 PM
Hola, tengo problemas en mi videojuego online ya que algunos jugadores usan el cheat engine para cambiar variables de la memoria de mi juego y pueden modificar cosas a su gusto, como numero de balas, vida o pueden hacerse invulnerable a los disparos.
 
Que mas cosas es posible hacer con un programa de estos? Se de gente que incluso ha llegado a capturar los codigos de los juegos hechos en unity. Pero podriían modificar el codigo en tiempo real?
 
Hay alguna forma de hacer que si salen de la ventana de mi juego o estan usando otras cosas el juego se pare?
 
Espero que me ayudeis, me molesta mucho que los jugadores puedan hacer esas cosas...
 
 
Os enseño mi juego:
 
(http://i.imgur.com/vaGSY5R.gif)
 
Enlace:
 
https://www.dropbox.com/s/ot3ku7wsec6mjlc/Roto2Online4615.rar?dl=0&s=sl
 
 
El objetivo es llegar a la bola de cuadros
Título: Como puedo hacer que los usuarios de mi juego online no puedan hacer trampas?
Publicado por: francoe1 en Junio 05, 2015, 11:14:37 PM
Binary Check after Connect!
 
La forma mas fácil y mas utilizada es la comparación binaria del copilado, pero no creas que es algo facil, todas las compañías luchan contra esto, es un mundo inmenso, es mas, creo que si te interesa proteger un juego dedícate a Seguridad, y si tu intención es que no hagan trampa, busca algoritmos de comprobación binaria o comprobación de FPS y muchas técnicas de antihacking.
Título: Como puedo hacer que los usuarios de mi juego online no puedan hacer trampas?
Publicado por: pioj en Junio 06, 2015, 03:00:18 AM
Binary Check está más orientado a jugar versiones pirata, o anteriores, etc, del juego, no sirve para mantener inalterables los registros de memoria durante una partida y cambios de valores no permitidos...  En todo caso, es una ayuda para que la gente siempre juegue a tu última versión oficial de pago de tu juego.
 
El tema de versiones, se puede resolver muy fácil y rápidamente, si la gente lo enfocara de otra manera: Actualizaciones mínimas constantes que cambien un simple byte o lo que sea, pero que lo hagan muy frecuentemente... La debilidad viene siempre dada porque se deja demasiado tiempo entre versiones, y es suficiente para descubrir dónde recae la vulnerabilidad. 
 
Otra de las formas, es todavía más práctica: Juego desde webplayer. Perfecto. En todo momento los creadores pueden ir sacando builds continuas del juego que mareen o hagan imposible el hackeo, ya que todo el juego está siempre hospedado y controlado "en casa".
 
 
 
 
Ahora sí. Contestando a tu pregunta, se me ocurren algunas formas eficaces de evitar el cambio de valores en memoria/runtime. Por ejempo, idea: Que se renombren dinámicamente las variables del juego cada vez que se inicia una partida.  Y que se junte todo en un mismo "bloque" de información, en lugar de variables separadas.
 
Los Cheat Engine funcionan localizando cambios concretos de valor en áreas concretas de memoria, que es donde generalmente se guardan las variables,etc.
 
Me explico: Si al principio de cada nivel, renombramos valores y nombres de las variables que controlan el juego, las posiciones en memoria cambian. Por tanto, para hackear, deberían repetir el proceso en cada nivel, lo que lo vuelve más costoso y todo ese tiempo que pierdes, ya te han ganado en la partida, no te sale a cuenta...
 
Si durante la partida, cada 30 seg o así, vas reseteando de nuevo los valores máximos que pueden tener las cosas dentro del juego (velocidad, vida,etc), les estás haciendo la misma jugada que te intentan hacer ellos, modificando valores en memoria. Así que no sirve de nada hackear porque en breve el jueg se "resetea" a valores normales.
 
Si además, en lugar de que siempre la vida del Player sea un valor Integer, por ejemplo, cada cierto tiempo, le decimos que la vida ahora pase a estar en un dato de tipo Float y la leemos desde allí, mareamos al Cheat Engine. Entiendes? No sabe relacionar un cambio con otro, son posiciones de memoria distintas.
 
 
Los cambios entre aplicación se pueden controlar (lo de salir del Focus de la aplicación, Unity tiene documentación y API para ello).
 
 
 
En definitiva, se trata de ir polimorfizando el código durante la propia partida. Ese sería el método definitivo para evitar hacks. Internamente funciona de forma parecida a un virus.