Hay muchos programas que alteran la memoria en la actualidad ( Cheat Engine & co). ¿Hay una manera eficiente de mantener una variable constante realmente constante?
Tenía dos ideas:
- Haga un hilo separado actualizando la variable constante a un valor constante, por ejemplo 200 cada minuto. Problema: también se puede alterar el segundo valor.
- Almacene el valor en el servidor. Problema: quiero mantener el tráfico de red lo más bajo posible.
Necesito este mecanismo para constantes y variables que solo pueden contener un cierto rango de valores.
¿Hay mejores formas de hacer esto?
anti-cheat
Miguel
fuente
fuente
Respuestas:
Si tu juego es para un jugador: no es posible, pero no debes preocuparte .
Si su juego es multijugador: debería almacenar todo su estado importante en el servidor, que es mucho más difícil de hackear que una máquina local.
fuente
x
daño ay
".No se puede hacer , https://security.stackexchange.com/a/4639 trata sobre DRM, pero lo mismo se aplica a todo lo que el usuario no quiere en su computadora, incluidos los mecanismos Anti-Cheat. (Lo que tiende a ser aún más difícil de hacer que DRM).
Pero ¿por qué lo harías, realmente por qué lo harías? Es la computadora de sus clientes, no la suya, el cliente hace con su computadora lo que quiera hacer con ella. No tienes derechos al respecto. Su programa se elimina si al cliente no le gusta.
Para los juegos multijugador no se trata de diseñar el binario que se ejecuta, sino de diseñar la comunicación. Dejar que los usuarios solo envíen "He ganado con 20000 puntos" no funciona, tampoco "Tengo 2000 de oro" . Tendrás que simular el juego tú mismo y dejar que los jugadores envíen lo que están haciendo como "Le ordené al soldado que se mueva al punto X / Y" o "He comprado el artículo número 43" , y no el resultado de eso. las acciones son El servidor decide cuáles son los resultados y quién ganó al final.
Si se trata de un juego de un solo jugador con puntaje alto en línea, una opción sería hacer que el jugador le envíe una repetición, simule y decida el resultado de eso.
fuente
El primero no es efectivo y no impedirá que ninguna persona determinada ataque su juego, y también es propenso a errores. Sin embargo, puede hacer que sea mucho más difícil , no una prueba completa , si lo desea. Algunas estrategias comunes están disponibles en toda la web, pero como han mencionado otras personas, debe preguntarse si vale la pena.
En aras de los argumentos, aquí hay un par de formas de evitar la piratería en un entorno de un solo jugador:
La alternativa, por supuesto, es almacenar todo en el servidor y crear un servidor de juegos que sea un maestro. Esto no solo es costoso, requiere mantenimiento y aumenta el tiempo de desarrollo ... los fanáticos no están tan impresionados con la implementación de juegos populares como Diablo III . O aquí. Sin embargo, debo tener en cuenta que para un juego de rol flash en línea como Adventure Quest, este modelo realmente ha funcionado bastante bien para ellos.
No puedo proporcionar mucha orientación sobre cómo implementar este tipo de enfoque, ya que es muy amplio, amplio y requiere mucha planificación. La base para saber es que el servidor decide todo y el cliente no es más que una simple consola de entrada y visualización.
fuente
Mucha gente usa estos programas para buscar una puntuación almacenada en una variable, por ejemplo
Para hacerlo, necesitan conocer el puntaje, usualmente a partir del puntaje que se muestra en el juego.
Estaba pensando, ¿esto ayudaría a posponerlos ...
entonces cuando necesites mostrar la puntuación haz ...
esto hará que los tramposos busquen lo que piensan que es el puntaje (el puntaje que se muestra) para que solo encuentren el valor mostrado.
La puntuación real será Score * randomVal almacenada en otro lugar. No pueden cambiar la puntuación cambiando el valor mostrado.
¿esto ayudaría?
PD No soy un experto, así que tómalo con calma lol.
fuente
En lo que respecta a los juegos para un solo jugador , no puedes evitar hacer trampa, y no debes .
¿Por qué no puedo evitar hacer trampa en mi propio juego?
Como han señalado otras respuestas, incluso los mejores esfuerzos podrían ser potencialmente circunnavegados por un solo pirata informático y proporcionados al resto de su base de jugadores. Todavía puede hacer un esfuerzo en contra de esto, pero busque otras respuestas para obtener sugerencias sobre cómo hacerlo . Esta respuesta significa ahorrarle problemas, si su juego solo tiene como objetivo proporcionar un juego para un solo jugador.
¿Por qué debería dejar que los jugadores hagan trampa en un juego para un jugador?
Para citar a Sam ,
Esto pierde el punto por completo . Los juegos son una forma de entretenimiento . En general, su base de jugadores está jugando su juego para divertirse . Si un jugador usa trampas en tu juego, hay una razón por la que está usando trampas. Es seguro asumir que no podemos garantizar la definición de diversión de cada jugador individual; si usan trampas , tal vez esa sea su forma de hacer que tu juego sea más agradable para ellos.
¿Cómo hacer trampa hace que un juego sea más divertido?
Si bien cada individuo es único, existen algunas condiciones en las que los trucos podrían hacer que un juego sea más entretenido, fuera de mi cabeza:
¿Por qué esto solo se aplica a los juegos de un jugador?
Es importante destacar que esto solo funciona en juegos de un jugador ; Si el jugador te dice que quiere usar trampas para divertirse más en su juego, no hay daño. Tan pronto como haya varios jugadores en el juego, las hazañas de ese primer jugador podrían convertirse en una desventaja injusta para los otros jugadores. Esta es la única situación real en la que no debe permitir hacer trampa.
fuente
¿Qué hace una herramienta de pirateo de memoria?
Hay dos formas de operar la herramienta de pirateo.
¿Qué puedes hacer al respecto?
Puede usar variables asignadas dinámicamente para almacenar variables de jugador para que la dirección siga cambiando al inicio. No habrá ninguna dirección fija que pueda enumerar un sitio web trampa.
Cifre las variables del reproductor: escalar el valor, agregar una constante, etc. Esto trae un nuevo problema: un pirata informático puede desarmar su programa y encontrar los números que utiliza para cifrar las variables de su reproductor. Para esto, usa números aleatorios. También puede ampliar los valores de las variables de su jugador y luego agregar un número aleatorio de manera que el número agregado no altere significativamente el valor (agregar 10 o 20 a un valor ampliado de 2000 no hace mucha diferencia).
Por supuesto, algún hacker serio aún puede encontrar formas de superar estos obstáculos, pero no será fácil.
Si bien el código anterior resuelve algunos problemas serios, todavía es descifrable. La única información que necesitará el pirata informático es: se accede a las variables del jugador a través de un puntero (también podría descubrirlo desmontando tu juego, pero será molesto y difícil). Una vez que el hacker tenga la dirección de las variables de tu jugador junto con otras variables aleatorias secretas, será una tarea fácil para él desarrollar un truco.
En mi opinión, sin desarmar, realmente no se puede escribir una herramienta de pirateo para dicho sistema. El resultado es impredecible ya que agregará un número aleatorio a las variables del jugador cada vez que se modifique. El rango en el que se almacenan las variables del reproductor tampoco es el mismo en cada inicio.
Que mas puedes hacer?
Siga cambiando la dirección de las variables del jugador ocasionalmente. ¿Impide la legibilidad del código? Bueno, lo hace hasta cierto punto, pero puede abstraer todo el proceso en una sola clase que tiene comentarios bien explicados. La interfaz proporcionada por la clase tendrá funciones simples Set / Get. El programador frontend no tendría que preocuparse por la complejidad subyacente.
fuente
Ciencias económicas:
Si desea fortalecer su juego contra los tramposos, la mejor manera es comprar una solución de software que lo haga por usted. Hay varios proveedores, y puedes encontrar algunos de ellos buscando en Google "anti cheat breaks my game" .
Los profesionales son mucho mejores para prevenir trampas que tú, y mucho mejor para no romper tu juego de lo que eres (y aún no tienen éxito al 100%, en ninguno de estos). Entonces, si sientes que hay un valor en poner esa solución en tu juego, cómpralo. Hacer el tuyo será mucho más caro.
Una pregunta relacionada es "¿hay valor en el uso de software anti trampa?". La respuesta es: no, a menos que una parte decente de tu juego se base en un modo competitivo en línea.
fuente
La única forma de proteger su juego de modificaciones y edición de memoria es hacerlo solo EN LÍNEA y procesar valores vitales del lado del servidor .
Tal vez pueda cifrar los valores para que los edoits de memoria novatos no lleguen a ellos, pero todas las comunidades, como Cheat Engine , GameGuarian para Android, ArtMoney, Game Hacker ect tienen personas que podrán piratear cualquier cosa que procese el cliente. lado y mostrar a los demás cómo hacerlo o publicar entrenadores.
Es un esfuerzo inútil tratar de disuadir a los tramposos del lado cleint en mi opinión. Tampoco es realmente justo, ya que es su dispositivo y si quieren editar cosas que están sucediendo en su dispositivo, ¿por qué los obstaculizarían? El cliente es el rey después de todo.
fuente
Quiero decir que no es tan difícil. Puedes mantener a raya el 99% de los tramposos de edición de memoria (esos Game Guardian , Cheat Engine ect a raya mediante simples valores de multiplicación. Incluso multiplicando por 10 en la memoria mantendrá a raya a la mayoría de los.
Recuerdo que muchos juegos flash en el día se multiplicarían por 8 o 6. O si realmente lo tomas en serio, codifica algunas comprobaciones o encripta los valores en la memoria.
fuente
No puedes, repito que no puedes. No hay respuesta a esta pregunta que un buen hacker no pueda deshacer.
¿Y qué? Si alguien quiere hacer trampa en su juego (suponiendo que no haya pérdidas monetarias o logros involucrados), ¿a quién le importa? Solo se engañan a sí mismos.
Dedique más tiempo a crear un gran juego y menos tiempo a evitar que los imbéciles arruinen su propia diversión, simple.
fuente
Cifrar el infierno fuera de él! ¡Almacene números importantes divididos en múltiples ubicaciones junto con otros valores para que cambien constantemente! Use números ficticios que si se alteran les dicen que son tramposos.
Todo puede romperse, pero la mayoría no se toma el tiempo para hacerlo.
fuente
La forma en que lo trato en los juegos en línea es esta.
No voy a ayudar a los hackers tanto que tengan paciencia conmigo. No mencionaré ningún programa que use para hacer esto. Tendrás que resolver eso. La única forma de detenerlos realmente es saber una cosa. No quieren que se detecte su programa de pirateo.
Hasta ahora, todos los usuarios de hackers / entrenadores que he derrotado. El desarrollador del hack pondrá un detector para ver si algo está mirando. Si algo es así, entonces el programa hacker / entrenador se cerrará automáticamente o solo funcionará a medias.
Por ejemplo, en la suciedad 3, los usuarios de entrenador pueden hacer que su automóvil gire automáticamente. Pero si coloca un detector en su extremo, el detector de trucos lo detectará y cerrará parte del truco. No todo.
La única parte del programa de entrenamiento que he visto afectada por mi intromisión son los súper frenos (frenado perfecto) y el spinout (el auto pierde el control sin ningún motivo). Tengo principalmente juegos de carreras como puedes ver. Todos son de codemasters y, lamentablemente, los tramposos abusan de esos juegos con bastante frecuencia.
Creo que solo puedo detenerlos debido a la forma en que nos conectamos entre nosotros mientras jugamos. Probablemente sea la misma razón por la que podrían causar un spinout para un jugador normal que no tiene idea de la seguridad.
Mi mayor sugerencia es obtener un muy buen antivirus de seguridad de Internet (Norton, Mcafee, Avast y todos los demás av de mierda no lo ayudarán). Esté dispuesto a gastar de $ 50 a $ 90 en una muy buena av que no he enumerado y luego aprender a experimentar con ella para jugar en línea.
Se necesita mucha paciencia y muchos conejillos de indias. He tenido mucho éxito con esto, pero también muchos años de experiencia en el trato con usuarios formadores. No conozco ningún código en absoluto. No tiene nada que ver con ello. La parte del código está bloqueada y no puede hacer nada al respecto. Podrías pensar que puedes pero simplemente no es posible detener lo que están haciendo por su parte.
Todavía puede prohibirlos con cosas como VAC porque Vac detecta firmas y ciertos comportamientos y modificaciones de archivos que ya conoce. Solo prohíbe la cuenta asociada con el truco.
Sin embargo, en realidad no detienen el engaño. No pueden molestarse con eso. Simplemente prohiben su cuenta. La otra cosa que me gustaría mencionar tiene que ver con Wolfenstein ET. Un juego muy viejo. Pero para mí tenía la mejor y más dura medida de seguridad de todas.
Nunca pude ver cómo lo hicieron. Les di la idea de lo que realmente detendría a los tramposos y le sugerí a uno de los encargados de Jaymod que prohibiera la entrada a modo de guía. ¿Qué tiene un guid fácilmente accesible al jugar juegos? Tarjetas gráficas La razón por la que implementaron eso es porque la gente simplemente cambiaba las direcciones IP y no necesitabas una cuenta para el juego, así que solo podías cambiar tu nombre, tu dirección mac, que también cambiaría tu dirección IP.
Pero cuando hicieron las prohibiciones de la tarjeta gráfica. Si querías volver a jugar tenías que RMA tu tarjeta o comprar una nueva. Sin embargo, eso está fuera del tema. Se supone que esto se trata de detección y salí por la tangente. Lamentablemente, no juego tanto ahora. Pero hombre, amaba a todos mis cerdos gunea. Especialmente los de los autos de proyecto. El único juego de carreras que no era codemasters. Pero aún efectuado por el mismo sinsentido.
fuente