Mini-tutorial de Scanmem

12 02 2011

Scanmem es un programa libre y gratuíto muy simple que nos permite localizar un valor en un proceso que se está ejecutando. Con él, podemos analizar y modificar valores de procesos, hacer ingeniería inversa y trucos en videojuegos. Se usa vía consola de comandos.

En el siguiente ejemplo, vamos a ver como hacer para ganar puntos o dinero en un juego, en este caso, Emilia Pinball.

1. Ejecutamos el proceso.

pinball

2. Abrimos otra consola y listamos los procesos.

ps -A

3. Buscamos el proceso en la lista.

13459 pts/0    00:00:00 pinball

4. Jugamos hasta obtener algún punto, por ejemplo, 1300.

5. Escaneamos el proceso.

sudo scanmem  $(pidof pinball)

6. Buscamos el valor, en este caso, la puntuación:

Please enter current value, or “help” for other commands.
0> 1300
info: 01/93 searching   0x180000 –   0x181000………..ok
info: 02/93 searching   0x18d000 –   0x18e000………..ok
info: 03/93 searching   0x18e000 –   0x19e000………..ok
info: 04/93 searching   0x1bc000 –   0x1bd000………..ok
info: 05/93 searching   0x1c3000 –   0x1c4000………..ok
info: 06/93 searching   0x1da000 –   0x1db000………..ok
info: 07/93 searching   0x1db000 –   0x1dd000………..ok
info: 08/93 searching   0x1e1000 –   0x1e2000………..ok
info: 09/93 searching   0x1e5000 –   0x1e6000………..ok
info: 10/93 searching   0x1eb000 –   0x1ec000………..ok
info: 11/93 searching   0x1f6000 –   0x1f7000………..ok
info: 12/93 searching   0x1fb000 –   0x1fc000………..ok
info: 13/93 searching   0x205000 –   0x206000………..ok
info: 14/93 searching   0x226000 –   0x227000………..ok
info: 15/93 searching   0x23b000 –   0x23c000………..ok
info: 16/93 searching   0x244000 –   0x245000………..ok
info: 17/93 searching   0x24b000 –   0x24c000………..ok
info: 18/93 searching   0x24f000 –   0x250000………..ok
info: 19/93 searching   0x26d000 –   0x26e000………..ok
info: 20/93 searching   0x35c000 –   0x35d000………..ok
info: 21/93 searching   0x35d000 –   0x364000………..ok
info: 22/93 searching   0x4ba000 –   0x4bb000………..ok
info: 23/93 searching   0x4bb000 –   0x4be000………..ok
info: 24/93 searching   0x4c3000 –   0x4c4000………..ok
info: 25/93 searching   0x4cc000 –   0x4cd000………..ok
info: 26/93 searching   0x4da000 –   0x4db000………..ok
info: 27/93 searching   0x4ef000 –   0x4f0000………..ok
info: 28/93 searching   0x4f0000 –   0x4f2000………..ok
info: 29/93 searching   0x51e000 –   0x527000………..ok
info: 30/93 searching   0x527000 –   0x551000………..ok
info: 31/93 searching   0x5c6000 –   0x5c7000………..ok
info: 32/93 searching   0x5c7000 –   0x5c8000………..ok
info: 33/93 searching   0x622000 –   0x623000………..ok
info: 34/93 searching   0x66d000 –   0x66e000………..ok
info: 35/93 searching   0x66e000 –   0x66f000………..ok
info: 36/93 searching   0x6ab000 –   0x6ac000………..ok
info: 37/93 searching   0x6ac000 –   0x6c8000………..ok
info: 38/93 searching   0x712000 –   0x713000………..ok
info: 39/93 searching   0x776000 –   0x777000………..ok
info: 40/93 searching   0x777000 –   0x77b000………..ok
info: 41/93 searching   0x784000 –   0x785000………..ok
info: 42/93 searching   0x78c000 –   0x78d000………..ok
info: 43/93 searching   0x7a3000 –   0x7a4000………..ok
info: 44/93 searching   0x7a4000 –   0x7a6000………..ok
info: 45/93 searching   0x7de000 –   0x7df000………..ok
info: 46/93 searching   0x7e8000 –   0x7e9000………..ok
info: 47/93 searching   0x7fa000 –   0x7fb000………..ok
info: 48/93 searching   0x847000 –   0x848000………..ok
info: 49/93 searching   0x86c000 –   0x86d000………..ok
info: 50/93 searching   0x8af000 –   0x8b0000………..ok
info: 51/93 searching   0x8f0000 –   0x8f1000………..ok
info: 52/93 searching   0x96b000 –   0x96c000………..ok
info: 53/93 searching   0xaa0000 –   0xaa2000………..ok
info: 54/93 searching   0xaa2000 –   0xaa3000………..ok
info: 55/93 searching   0xade000 –   0xadf000………..ok
info: 56/93 searching   0xb9a000 –   0xb9b000………..ok
info: 57/93 searching   0xbc4000 –   0xbc5000………..ok
info: 58/93 searching   0xcb1000 –   0xcb2000………..ok
info: 59/93 searching   0xcc3000 –   0xcc4000………..ok
info: 60/93 searching   0xdea000 –   0xdeb000………..ok
info: 61/93 searching   0xdeb000 –   0xe15000………..ok
info: 62/93 searching   0xe9e000 –   0xea3000………..ok
info: 63/93 searching   0xea3000 –   0xea4000………..ok
info: 64/93 searching   0xefe000 –   0xeff000………..ok
info: 65/93 searching   0xf2a000 –   0xf2b000………..ok
info: 66/93 searching   0xfa9000 –   0xfaa000………..ok
info: 67/93 searching   0xfd2000 –   0xfd3000………..ok
info: 68/93 searching  0x10ce000 –  0x10cf000………..ok
info: 69/93 searching  0x8099000 –  0x809a000………..ok
info: 70/93 searching  0x92e5000 –  0x92e8000………..ok
info: 71/93 searching  0x92e8000 –  0x92f7000………..ok
info: 72/93 searching  0x9a84000 –  0xa25a000………..ok
info: 73/93 searching 0xb0600000 – 0xb06df000………..ok
info: 74/93 searching 0xb07a0000 – 0xb07c0000.ok
info: 75/93 searching 0xb07c0000 – 0xb07e0000.ok
info: 76/93 searching 0xb07e0000 – 0xb0800000.ok
info: 77/93 searching 0xb0800000 – 0xb09f3000………..ok
info: 78/93 searching 0xb0a00000 – 0xb0aff000………..ok
info: 79/93 searching 0xb0b05000 – 0xb0b25000.ok
info: 80/93 searching 0xb0b25000 – 0xb0b28000………..ok
info: 81/93 searching 0xb0c28000 – 0xb212d000………..ok
info: 82/93 searching 0xb21ae000 – 0xb29ae000………..ok
info: 83/93 searching 0xb29ae000 – 0xb69af000………..ok
info: 84/93 searching 0xb69af000 – 0xb6e39000………..ok
info: 85/93 searching 0xb6e39000 – 0xb6e73000………..ok
info: 86/93 searching 0xb6e78000 – 0xb6e98000.ok
info: 87/93 searching 0xb6e98000 – 0xb6eb8000.ok
info: 88/93 searching 0xb6eb8000 – 0xb6ed8000.ok
info: 89/93 searching 0xb6ed8000 – 0xb6ef8000.ok
info: 90/93 searching 0xb6ef8000 – 0xb6f18000.ok
info: 91/93 searching 0xb7076000 – 0xb7882000………..ok
info: 92/93 searching 0xb7894000 – 0xb7896000………..ok
info: 93/93 searching 0xbff43000 – 0xbff70000………..ok
info: we currently have 64 matches.
64>

Se han encontrado 64 coincidencias con el valor. No debemos substituirlo todavía porque muchas de estas coincidencias pueden no tener que ver con la puntuación en el juego, sino con cualquier otro tipo de cuestión en lo que es el proceso.

Para tener menos coincidencias, tenemos que seguir jugando para aumentar el valor.

7. Volvemos a escanear, ahora con el valor nuevo obtenido (12650):

64> 12650
info: we currently have 1 matches.
info: match identified, use “set” to modify value.
info: enter “help” for other commands.
1>

En este caso, está claro que el valor que encontramos es nuestra puntuación.

8. Sustituímos el valor.

Emplearemos el comando set:

1> set 999999
info: setting *0xb08ce3d8 to 0xf423f…
1>

9.Volvemos al juego. La puntuación ya ha cambiado.


Acciones

Información

3 responses

15 02 2011
Articulo Indexado en la Blogosfera de Sysmaya

[…] Actualizados : Mini-tutorial de Scanmem Astronomía GNU/Linux Emuladores de circuítos […]

19 09 2013
SiM

En algunos juegos nunca encuentro la variable.. generalemente en los nuevos… por que puede ser?.. como ocultan esas variables para que no sean modificadas?

19 10 2013
caesnf

Supongo que dependerá de las estructuras de datos o tipos de datos empleados a la hora de programar el juego. También podría ser algo relacionado con la longitud de palabra (32 o 64 bits) empleada para representar el dato.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s




A %d blogueros les gusta esto: