sábado, 8 de marzo de 2014

Tutorial - Cheat Engine: Parte 2: Práctica en el Solitario

Tutorial sobre Cheat Engine


Bienvenidos al segundo tutorial de Cheat Engine. En la primera parte, hemos visto los elementos básicos del Cheat Engine, así como algunas cosas que nos vendrán bien saber.
En esta parte, veremos un ejemplo práctico, hackeando el Solitario de Windows. Veremos como cambiar la puntuación y el tiempo a placer.
Empecemos:

Para comenzar, abrir el programa, en este caso, el Solitario. En el caso de Windows 7, lo podemos encontrar en Inicio > Juegos.
Una vez abierto, podemos mover alguna carta, para que se ponga en marcha el tiempo, y para ver como se suman los puntos:
Tras mover una carta, suma 5 puntos, y pone en marcha el tiempo.
Tras esto elegimos el proceso del Solitario, Solitaire.exe, y pinchamos sobre "Open".

Ahora, vamos a buscar la dirección de la puntuación. Hay que tener cuidado, ya que cada cierto tiempo, la puntuación va bajando, hasta llegar a 0.

Ahora, buscamos en valor de la puntuación en ese momento, seleccionando "Exact Value" en el apartado de "Scan type", y poniendo su valor en "Value". En mi caso, el valor era 5. Tras darle a "First Scan", nos muestra una lista con muchas direcciones. Ahora, debemos hacer escáneres sucesivos, hasta que quede solo 1 dirección. (A veces, pueden quedar varias, con el mismo valor. Esos casos, os veremos más adelante)


En el primer escáner, no recomiendo buscar como valor el 0. Sobre todo en programas grandes, puede pasarse mucho tiempo buscando ese valor, ya que hay muchas direcciones con valor 0.


Tras hacer un par de escáneres más, daremos con la dirección. En mi caso, "0012A624". (No hace falta que os acordéis de ella en este caso)
La seleccionamos, y le damos a la flecha roja junto a la tabla. Así, la agregamos a la lista de direcciones de la parte inferior.

Ahora, podemos comprobar si en verdad esa es la dirección que guarda la puntuación. Como la puntuación cambia con el tiempo (O al mover carta), podemos ver con claridad, si el valor que indica el Cheat Engine es el que indica el Solitario.
Ahora, lo más importante. Cambiar el valor. Para ello, hacemos doble click sobre el valor en la tabla inferior, y ponemos el valor que queramos en la ventana que nos va a aparecer. Ahora, nos dirigimos al Solitario. Si la puntuación cambio allí también, hemos hecho el proceso satisfactoriamente. Sino, quizás haya habido algún problema al elegir la dirección, quizás por la razón de que la puntuación disminuye con el tiempo. En caso de que tengáis problemas por esa razón, usaremos el método que explicaré ahora para obtener el tiempo.
Ahí vemos, que le he puesto de valor el 66.
He marcado la casilla "Active". ¿Qué hace esto? Esto hará que la puntuación no cambie del valor que le hemos indicado, 66 en este caso.

Ahora, vamos con el tiempo:

El tiempo, cambia cada segundo. Nos será muy complicado hacer un escáner con el tiempo en ese preciso instante. Para ello, vamos a ver que otras opciones nos ofrece el "Scan Type":

  • Exact Value: La que conocemos. Busca un valor exacto.
  • Bigger than...:  Buscará todas las direcciones cuyo valor sea mayor que el valor que hemos introducido.
  • Smaller than...: Lo contrario al anterior. Busca las direcciones cuyo valor sea menor que el valor que hemos introducido.
  • Value between...: Será el que usemos con el tiempo. Busca direcciones cuyo valor esté entre los valores que hemos introducido.
  • Unknow initial value: Muy importante, especialmente, si no podemos ver el valor numérico. (Ej. una barra de salud). No nos mostrará direcciones. Simplemente, verá las que cambian para el próximo escáner.
Bien, comencemos. Hacemos click sobre "New Scan", para limpiar los resultados. Ahora elegimos "Value between...", y nos fijamos en el tiempo que marca el solitario. En el primer campo para introducir el valor, ponemos el tiempo que marca el solitario, o un tiempo inferior. En el segundo campo, introducimos un tiempo superior. Lo suficiente, como para que el tiempo no lo sobrepase.
En la imagen, se ve el primer escáner. Se dio la casualidad, de que la primera dirección que me apareció, cambiaba cada segundo, como el tiempo. En caso de que os aparezcan varias direcciones (lo que suele pasar), haremos un "Next Scan", pero con otro "Scan Type". Podríamos usar "Value between..." otra vez, pero en este caso, recomiendo usar "Increased Value", que busca direcciones que hayan aumentado.
Para este tipo de escáner, no hay que meter ningún valor. Basta darle a "Next Scan", y buscará.
Dado que no hay que meter ningún valor, y dado que el tiempo aumenta cada segundo, podéis darle a "Next Scan" una vez cada unos 2 segundos, hasta que quede solo una dirección. Si en un momento le dais demasiado rápido, antes de que cambie el tiempo, o hay algún problema, podéis darle a "Undo Scan", para rectificar el último escáner.
Una vez encontrado la dirección, seleccionadla, y agregadla a la lista. Ahora podéis cambiarla a placer.
Como dato curioso (de momento), observad que la dirección de la puntuación (0012A624) está muy cerca de la dirección de el tiempo (0012A61C), al menos en mi caso. Estas apreciaciones serán importantes en el futuro, ya que si hay un par de direcciones juntas, puede que haya más direcciones interesantes cerca.

Y hasta aquí el primer tutorial práctico de Cheat Engine. En próximos tutoriales veremos lo que son los "Punteros", y veremos qué nos muestra el botón de "Memory View", además de otras funcionalidades que nos darán gran control sobre los procesos.

¡Hasta otra!

3 comentarios: