Readme.txt del archivo escribió:Intro
=====
This is a prx mod written for DevHook 0.4+, which is used to view/search
and modify/lock data in memory while playing game.
HOWTO Install
=============
1. Run accessory tool CMA.exe, select target for installation and click
Install button.
2. If you wanna get it work on custom firmware 2.71SE, put folder SECMInst
into your GAME150 and run it to write a tiny bootstrap into flash0 safely.
3. Start game, press [Volume UP] + [Volume DOWN] button to call up the menu.
Note
====
If wanna dump memory or use fuzzy search, plz confirm that there're at least
24M free space on MemoryStick (sugget 48M for unknown search).
INSTALACIÓN
He modificado la parte de la instalación ya que NijAuN ha recopilado en un rar las dos carpetas y las instrucciones, que la verdad es que han quedado mucho más facil. Así que los agradecimientos por eso van para él.
De todas formas dejo lo que yo puse.
Leyendo el readme vemos que nos vienen las instrucciones de instalación. Yo por mi parte explicaré como lo hice yo para mi 3.03 OE-C
1º En primer lugar debemos descargar el archivo. Está puesto como fichero adjunto porque la verdad es que es difícil de localizar.
2º Si lo descomprimimos veremos que hay varios archivos. Uno de ellos es CheatMaster.prx. Este es el que debemos poner en nuestra carpeta de plugins (seplugins).
También debemos copiar aquí un archivo que hayamos creado con el bloc de notas llamado "game.txt" y que contenga la siguiente linea:
ms0:/seplugins/cheatmaster.prx.
(GRACIAS NijAuN)
3º Apagamos la consola y reiniciamos en modo recovery (mantenemos pulsado R mientras inicia).
4º En el apartado plugins marcamos el plugin del CheatMaster como enable.
5º Salimos del recovery.
6º Si todo ha ido bien pulsando las teclas de volumen + y - a la vez debería abrirse una pantallita azul con letras blancas que es el propio CheatMaster.
MANEJO
Breve introducción:
En un programa existen lo que llamamos datos fijo o código y datos variables o variables a secas. Ambos tipos de datos como su propio nombre indica se diferencian en su variabilidad temporal (¡qué bonito me ha quedao :-p), es decir si a lo largo del funcionamiento del programa estos datos cambian o no.
Por ejemplo imaginemos que estamos jugando a FFVII en nuestra PSP con su emulador [babas]. Algún ejemplo de dato fijo podría ser la salud que tiene un determinado enemigo, la cantidad de dinero que cuesta una poción o la salud inicial de nuestro personaje. Algún ejemplo de dato variable podría ser la cantidad de dinero que tenemos en un momento determinado, el nivel de nuestros personajes o el estado en que se encuentran cada uno de ellos (vivos, fuera de combate, envenenados, etc...)
Los datos fijos vienen en el juego escritos (UMD, ISO, etc...) y sobre estos puede ser difícil de actuar (no digo que imposible pero si que requiere unos conocimientos avanzados de programación). Los datos variables se van generando a lo largo del juego y se almacenan en los archivos que generamos al guardar la partida.
Cuando estamos jugando y cargamos una partida lo que realmente hacemos es cargar en la RAM de la PSP los datos que guardamos en la MS para que el juego pueda tomarlos y retomar la partida donde la dejamos.
Lo que pretendemos es localizar en la RAM los registro (posiciones de memoria) donde se van almacenando algunos datos concreto, modificarlos y así poder obtener ciertas ventajas. Por ejemplo sería interesante poder localizar el registro que contiene la cantidad de dinero que poseemos y escribir algunos 0 más (al más puro estilo mafioso trucando un cheque :D).
¿Que cómo se hace esto? Muy sencillo, por el método llamado de prueba y error. Es decir vamos buscando hasta que obtengamos un valor que sea el que buscamos. Me explico:
1º Seguimos con el ejemplo del dinero y tenemos en estos momentos 999 monedas. Hacemos una busqueda en la RAM para localizar todos los registros que contengan el valor 999.
2º Probablemente no sea un solo registro el que contenga ese valor así que tendremos muchos registros con ese valor, pongamos que son 7043.
3º Vamos a la tienda y gastamos 100 monedas por lo que tendremos 899.
4º Volvemos a hacer otra búsqueda pero esta vez no en toda la RAM, sino en esos 7043 registros que anteriormente habían contenido el valor 999 y esta vez lo que buscamos es el valor 899.
5º Quizá de los 7043 solo 576 contengan el valor 899.
6º Volvemos a gastar otra cantidad y volvemos a buscar la nueva cantidad y así lo repetimos hasta que solo quede un registro que cambie al nuevo valor cada vez que gastamos (bueno gastamos o cogemos, lo que importa es que el valor cambie no que sea menor) dinero.
7º En ese momento sabremos que ese registro contiene el valor de dinero que tenemos. Lo modificamos, le decimos a la consola que en vez de 566 monedas que tenemos en ese momento sean 1000000 y ya está. Cuando sigamos jugando y nuestro juego lea el valor de dinero leerá 1000000 en vez del antiguo valor y continuaremos nuestro juego normalmente solo que un poco más ricos ;)
Manejando el Cheat Master
Bien ahora todo esto que he explicado desde la teoría vamos a ver como se aplica en el CheatMaster
Este es el menú con todas sus opciones:
Search Value
------New Search
------------Valor a buscar:
------Search Again
------------Valor a buscar:
------Change Type
------------auto
------------byte
------------word
------------dword
------------unknown
------------------Greater Than (>)
------------------Less Than (<)
------------------Not Equal To (<>)
------------------Greater Than or Equal To (>=)
------------------Less Than or Equal To (<=)
------------------Equal To (=)
------------Change Range
------------------00000000-01800000
------------View Results
Address Table
Save Table
Load Table
Dump Memory
View Memory
Read Text
CPU/BUS Clock
Settings
------Shortcut:
------------VOLUP+VOLDOWN
------Swap CIRCLE/CROSS:
------Auto load table:
------------Yes
------------No
------Lock interval:
------------Very Short
------Enable screenshot:
------------Yes
------------No
------Screenshot key:
------VOLUP+VOLDOWN
Exit to Game
1º En medio de una partida pulsamos volumen + y - a la vez (opción por defecto que podemos cambiar en el menú Settings->Shortcut) y se nos abrirá el CheatMaster.
2º Seleccionamos Search Value (buscar valor) dentro New Search (nueva búsqueda) y luego introducimos el valor que queremos buscar. Por ejemplo el número de balas que tengamos en ese momento (supongamos 24). Esto puede tardar, sabremos que todo va bien porque el led de lectura en la MS estará parpadeando.
3º Nos informará de que se han encontrado X resultados que coinciden con la búsqueda. Salimos del CheatMaster, gastamos algunas balas con un par de tiros (supongamos que nos quedan 20). y volvemos a CheatMaster (vol+ y vol-, por defecto).
4º Le damos a Search Value y dentro a Search again (buscar de nuevo) y le decimos el valor que queremos buscar (en este caso 20).
5º Nos informará de que se han encontrado X resultados que coinciden con la búsqueda. Salimos del CheatMaster, gastamos algunas balas con un par de tiros (supongamos que nos quedan 18). y volvemos a CheatMaster (vol+ y vol-, por defecto)
6º Le damos a Search Value y dentro a Search again (buscar de nuevo) y le decimos el valor que queremos buscar (en este caso 18).
7º Seguimos repitiendo los pasos 3, 4, 5 y 6 hasta que nuestra búsqueda devuelva siempre los mismos registros (lo más normal es que sea solo uno pero pueden ser dos o tres registros).
8º En el momento de después de la búsqueda cuando nos muestre en pantalla los registros que buscamos pulsaremos el botón [] que el programa nos informa que es: "SQUARE - Add all to table", es decir, añadir todos los registros a la tabla (el programa llama tabla al conjunto de registros que queremos modificar).
9ºCuando pulsemos [] nos pedirá:
- un nombre para nuestro truco (podemos poner en nuestro ejemplo "balas").
- lo/s registro/s que queremos modificar y aquí pulsamos X y no tocamos ya que el programa muestra en pantalla los que hemos seleccionado de la búsqueda.
- el valor que queremos introducir en el registro y aquí es donde ponemos en nuestro ejemplo el número de balas que queramos tener (en otros caso será dinero o vida o lo que sea). Aquí conviene no abusar ya que para ciertos valores excesivamente altos puede dar error el juego. Yo recomiendo poner como máximo el valor máximo que nos permita el juego. Si hablamos de balas y la pistola admite como mucho 50 balas pues no debemos poner más o si de dinero podemos tener 999999 monedas no debemos pasarnos.
- y por último nos preguntará si queremos bloquear ese valor (lock?) aquí ponemos si o no en función de si queremos que ese registro se modifique una sola vez o se quede permanentemente con el valor que introduzcamos. En nuestro ejemplo si teníamos 15 balas y hemos dicho que ponga 30 tendremos siempre 30 si bloqueamos el valor o tendremos 30 que se irán gastando si no lo bloqueamos. Con esta opción no es necesario introducir valores exageradamente altos en el registro y así evitamos problemas.
10º Ya tenemos nuestro truco. Ya solo queda en el menú principal seleccionar Save Table para guardar nuestros trucos. Si no hacemos esto cuando salgamos del juego o apaguemos la consola se perderán. Si queremos activar los trucos en otra partida solo debemos seleccionar Load Table.
Otras opciones de Cheat Master
- La opción Address Table nos muestra todos los registros que tenemos modificados y nos da la opción de renombrarlos, cambiar valores y tal.
- Otra forma de buscar es usando el método de busqueda que el programa llama "Unknown" (desconocido). Esto se pone en Search Value -> Change Type -> Unknown. Por defecto el tipo de busqueda es Auto. Si seleccionamos "Unknown" a la hora de hacer la búsqueda no pondremos un valor sino que lo haremos por comparación. Es decir, seleccionamos "Unknown" y New Search. Automáticamente el programa buscará registros que son variables y nos dirá que hay x registros. Al pulsar en Search Again no nos pedirá un valor, sino una comparación, es decir, si es mayor, menor, igual, distinto, etc... y el programa nos mostrará los registros de todos los anteriores que hayan variado en función de lo que hayamos seleccionado. Si cogemos la opción "Greater than >" (mayor que), mostrará los registros que hayan aumentado con respecto a la primera búsqueda.
- La opción Dump Memory hace una copia de la RAM en la MS. Si elegimos esta opción debemos tener en cuenta que se necesitan en torno a 50 Mb libres en la MS.
Hay algunos juegos que usan lo que se llama DMA (dynamic memory access), es decir, acceso a memoria dinámica. ¿Que qué es esto? Lo explico. Normalmente el dato del número de balas (siguiendo nuestro ejemplo) se guardará siempre en el mismo registro. Así si localizamos una vez este registro ya lo tendremos siempre y podremos poner balas infinitas cada vez que queramos solo con activar el truco. En el caso de que el juego tenga DMA el registro donde se guarden las balas (o lo que sea) irá cambiando de partida en partida, de fase en fase, cada vez que nos maten, etc... según el que haya programado el juego. Esto quiere decir que podemos localizar el truco para una fase o hasta que nos maten y luego tendremos que volver a localizarlo para poder usarlo otra vez.
Una ultima cosa a modo de advertencia. Si no modificamos los registros correctos el juego se bloqueará y la PSP se reiniciará al ratito de estar bloqueada y perderemos los progresos del juego que no hayamos salvado. En el caso de los juegos con DMA hay que tener especial cuidado ya que si modificamos un registro y lo bloqueamos cuando ese registro ya no sea para balas sino para cualquier otro dato del programa puede resultar en bloqueo del juego. Por ello es recomendable si nos matan, nos pasamos la fase
o dejamos la partida y empezamos en otro momento (no con el standby de la PSP, sino saliendo del juego o apagando la consola) que le quitemos el lock a los trucos antes de seguir adelante (antes de darle a continuar si nos mataron o de empezar la nueva fase si nos pasamos la anterior).
Hasta ahora solo he experimentado con el Killzone Liberation y con el Metal Gear Acid 2. El primero es DMA para la vida y para las balas y el registro es válido para cada vida (no se si también para las fases). Esto quiere decir que si nos matan y tenemos algunos de estos trucos en "lock" cuando le demos en continuar se bloqueará el juego. El Metal Gear Acid 2 es DMA para el coste en cada fase (no he experimentado con la vida aun) por lo que se aplica lo mismo que en el Killzone. Sin embargo el dinero y el número de sobres que tenemos disponibles para cada expansión en la tienda de carta no son DMA. Es decir que podemos fijar nuestro dinerito en la cantidad que queramos y podemos comprar, mejorar o hacer lo que queramos sin limitación de gasto. También podemos fijar el número de sobres en 9 y así no tendremos que pasar una fase para esperar a tener más disponibles para comprar.
Bueno hasta aquí el tuto. Espero que no sea muy lioso y que podáis experimentar un poco y sacar vuestros propios truquitos. Recordad que en partidas en red puede fastidiar mucho que nos den 50 tiros en el coco y no nos quedemos tiesos así que sed limpios y usadlo en el ámbito personal.