Haciendo trampas con Cheat Engine

Cheat Engine es un escaneador de memoria open source que permite escanear rápidamente las variables de un programa y modificarlas.

Aunque también posee las funciones de un depurador, ensamblador/desensamblador, modificador de velocidad, creador de trainers y demás, podéis imaginar que principalmente se utiliza para hacer trampas en los juegos.

Su funcionamiento en este aspecto es sencillo:

- en primer lugar busca direcciones en memoria con el valor que le indiques (por ejemplo el número de puntos conseguidos hasta el momento en una partida)

- a continuación y dentro de los resultados de la primera búsqueda, vuelve a buscar el valor modificado (el número de puntos incrementado en la partida)

- una vez identificado la posición de la variable en concreto, se procede a su modificación para obtener los resultados deseados ;-)

Aunque hay mil tutoriales en la red, veamos rápidamente su funcionamiento con un ejemplo más gráfico. Para ello, nos creamos un juego flash en una web que nos ofrezca fácilmente esa posibilidad (una de las muchas existentes).


En este caso, nos creamos un divertido ‘shooter’ cuya protagonista es nuestra “queridísima” presidenta (¡hay que tomarse la vida con humor!):


Bien, ahora nuestro objetivo es conseguir una cantidad ‘indecente’ de puntos.

Abrimos el juego creado con nuestro navegador favorito y, a continuación, ejecutamos Cheat Engine, seleccionando el proceso correspondiente (firefox.exe):


Posteriormente, conseguimos unos pocos puntos para buscar el valor de la primera puntuación (Score:10):

Tenemos que tener en cuenta que para buscar la puntuación (10) en Flash es necesario multiplicarla previamente por 8 (o hacernos nuestro propio script de búsqueda) y buscar un valor exacto de tipo 4 bytes (con Flash 7 se podía buscar el valor exacto tal cual como double).

En este caso, indicamos el valor 80 (8x10) y pulsamos el botón ‘First scan’.

Como podemos ver, el primer resultado nos arroja la nada despreciable cifra de 7.117 ocurrencias.

Continuamos jugando hasta conseguir una puntuación de 20 y volvemos a buscar (‘Next Scan’), en este caso, el valor 160 (20x8).

¡Ya tenemos la dirección de memoria! Ahora simplemente la modificamos (botón derecho/Change record/Value) y vemos los resultados:


Como habéis visto, es relativamente sencillo ‘hackear’ muchos juegos (no sólo flash) modificando el valor de sus variables en memoria.

Muchos de vosotros
también pensaréis que, con este post, estamos dando la solución al último reto del carnaval. Sin embargo y si lo intentáis, comprobaréis que con Cheat Engine algo no funciona. Esto es debido a que con las últimas versiones de Flash las variables son reposicionadas en memoria con cada alteración.

Entonces, ¿Cómo es posible modificar la puntuación del juego flash del Carnaval sin decompilarlo? ¡ánimo y daros prisa, que ya queda poco para que publiquemos la solución!.

Comentarios