[Tutorial] Usar Cheat Engine para modificar juegos + inyección de código

Iniciado por Mad Antrax, 1 Febrero 2013, 11:46 AM

0 Miembros y 1 Visitante están viendo este tema.

Mad Antrax

#40
Perfecto. Mira, veo que eres el primer usuario que se ha leido mi tutorial de CE (al menos eres el primero en postear aquí exponiendo tus dudas), así que te voy a mandar deberes :D

Te dejo el link de un videojuego para que le apliques un hack. Se llama Maldita Castilla. Es un juego gratuito, ocupa pocos MegaBytes y se puede jugar sin necesidad de instalar nada en tu PC



Primero de todo descarga el juego de su web oficial http://www.locomalito.com/maldita_castilla.php (el link está abajo del todo). Lo que te pido es que consigas hacer un cheat para evitar que el personaje muera al recibir golpes. Básicamente lo que debes conseguir es encontrar la dirección de tu Salud/Vida y forzarlo siempre a 3 (valor máximo).

Puedes hacerlo de 2 formas. O encuentras el pointer de la salud del personaje o escribes un AA script para inyectar el valor 3 a la dirección de tu salud cada vez que recibas un golpe.

Suerte!! :D
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

MeTaD

Cita de: ||MadAntrax|| en 17 Febrero 2013, 23:04 PM
Perfecto. Mira, veo que eres el primer usuario que se ha leido mi tutorial de CE (al menos eres el primero en postear aquí exponiendo tus dudas), así que te voy a mandar deberes :D

Te dejo el link de un videojuego para que le apliques un hack. Se llama Maldita Castilla. Es un juego gratuito, ocupa pocos MegaBytes y se puede jugar sin necesidad de instalar nada en tu PC



Primero de todo descarga el juego de su web oficial http://www.locomalito.com/maldita_castilla.php (el link está abajo del todo). Lo que te pido es que consigas hacer un cheat para evitar que el personaje muera al recibir golpes. Básicamente lo que debes conseguir es encontrar la dirección de tu Salud/Vida y forzarlo siempre a 3 (valor máximo).

Puedes hacerlo de 2 formas. O encuentras el pointer de la salud del personaje o escribes un AA script para inyectar el valor 3 a la dirección de tu salud cada vez que recibas un golpe.

Suerte!! :D
Bueno, pues he de reconocer que me ha puesto a pensar un rato pero no estuvo tam complicado, so loconfusiones de principiante ejejeje

aquí está en script compilado:
https://mega.co.nz/#!LYV30RAB!bUUSUnvyEJ7xeFdNw8pUXC4lZOR7KizQoMUxt7ikin0


y aquí el CT:
https://mega.co.nz/#!ycVzSRwI!bzp-AmaiLgkCMe3Ze881gx1nfjZGCpG2WvVp4HMiqDU

Mad Antrax

#42
El trainer que has creado es perfecto. Te felicito por ello.

Yo también he creado un trainer para el juego Maldita Castilla, he usado Cheat Engine como "motor" para el trainer y VB6 para la interfaz, me ha quedado así:



Es un +3 trainer, ya que trae 3 cheats distintos (salud, vidas y tiempo). El trainer tiene musica de fondo y efectos (como los trainers profesionales), también he añadido un lector de ficheros *.nfo con información del trainer, así como un ScrollText para los agradecimientos.

http://www.mediafire.com/download.php?kiyni7tyvmi6ag8

Prueba de hacer tu mismo el cheat para el tiempo, es algo "complicado" :)
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

OmarHack

Mañana miraré todo con más calma, de todas formas muy buen aporte, la lección 1 ya me la sabía, puedes subir el código fuente del juego? Y con que entorno de desarrollo lo hiciste?
I like to test things.

Mad Antrax

Cita de: OmarHack en 19 Febrero 2013, 06:11 AM
Mañana miraré todo con más calma, de todas formas muy buen aporte, la lección 1 ya me la sabía, puedes subir el código fuente del juego? Y con que entorno de desarrollo lo hiciste?

Todas mis creaciones son bajo Visual Basic 6.0
Source code: https://mega.co.nz/#!pZRzWZDZ!EDJ3Vxwh85lQ0l8_p6VRLl2nl65ZNstmbzkoxdalr-c
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

OmarHack

Muchas gracias, el juego con unas fotos bien editadas algo estilo pokémon o final fantasy sería genial, mas a delante haré algo así aun que mis conocimientos en este momento no sean los suficientes tu código fijo que me ayuda a comprender un poco mas este tipo de aplicaciones  ;)
I like to test things.

forever21es2001

Gracias por este gran tutorial e aprendido un poco el funcionamiento basico del programa ;-),bueno te voy a consultar un par de cosas.
Estoy aora haciendo un trainer para age of empire online ya esta casi todo echo solo me falta conseguir dos cosas una es el dinero(coins) y otra es sacar las unidades al instante(instant recruit).
el de coins estoy usando esto > search 4 bytes > unknown initial value > decreased value until you find to right addy > write code.
el caso que es la primera vez que me aparece el debbuguer con este codigo:
002F0862 - C2 0800 - ret 0008
002F0865 - D9 45 0C  - fld dword ptr [ebp+0C]
002F0868 - D9 5C C7 04  - fstp dword ptr [edi+eax*8+04] <<
002F086C - 5F - pop edi
002F086D - 5E - pop esi

EAX=00000000
EBX=00000001
ECX=13907170
EDX=00000001
ESI=16407000
EDI=13907170
ESP=0119D6E4
EBP=0119D6F8
EIP=002F086C
en vez del tipico mov=//te paso un link con el trainer echo asta ahora el CT  debuguer y el script echo para cuando darle al ESC me de 100.000,haber cuando tengas un poco de tiempo me lo puedes mirar.gracias :P
http://www.mediafire.com/?gtcccrcyw8datih
y haber si me puedes orientar para poder mirar el instant recruit no veo ningun tutotial para ello y no se como empezar.

Mad Antrax

Para el instant recruit:

Puedes probar lo siguiente. Mientras estás "creando" una unidad, empieza una busqueda en ALL con Unknow initial value. Cuando haya terminado busca "Changed value", vuelve a crear una unidad y mientras esté creándose busca de nuevo "Changed Value". Repite éstos pasos y con un poco de suerte podrás encontrar la dirección, a partir de ahí generas un AA script y listo.

No va a ser tarea fácil, ya que no sabemos si la variable va aumentando o disminuyendo a medida que creas una unidad, por eso debes usar "Changed Value" en lugar de "Increase o Decrease".

Para el dinero:

Primero de todo saca la dirección de memoria donde se almacena el dinero (eso me imagino que ya lo hiciste), mira la dirección y comprueba si es el resultado de [edi+eax*8+04], me explico siguiendo tu ejemplo:

002F0868 - D9 5C C7 04  - fstp dword ptr [edi+eax*8+04] <<

EAX=00000000
EBX=00000001
ECX=13907170
EDX=00000001
ESI=16407000
EDI=13907170
ESP=0119D6E4
EBP=0119D6F8
EIP=002F086C

Eso se traduce en: 13907170 + 0*8 + 04 = D434E6. Deberías comprobar si la dirección de memoria es el resultado de esa operación, de ser así simplemente genera un AA script y añade la siguiente línea:

fstp dword ptr [edi+eax*8+04]
mov [edi+eax*8+04],186A0

______________________

por cierto, el resto de script's de esa Table son tuyos? De ser así felicidades, buen trabajo :D
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

forever21es2001

#48
muchas gracias por responder,mañana empiezo haber que tal.
Edito:estoy probando con el script que e echo pero no me acepta estos codigos:
label(type_coins)
push [amount]
push type_coins
push 01
call coins
add esp,0c
lo tengo para que al darle al esc me de dinero,es casi como el de los materiales.

potrorex

  Hola tengo un problemilla con el let's fish de facebook , no consigo cambiarle el numero de billetes de ninguna manera, consegui con unos scripts que los peces picaran instantaneamente y la pesca fuera rapida sin necesidad de mantener la potencia con el raton, pero al apagar el CE, no volvieron a funcionar y no se marcaban las casillas de los scripts , por que pasa esto, soy muy novato en esto, podrias ayudarme..... Gracias de antemano.


este es el scripts

<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="14">
<CheatEntries>
<CheatEntry>
<Description>"Pesca rapida"</Description>
<Color>80000008</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{
===========================================
============================================
}

[ENABLE]
Aobscan(_ms,d0 30 f0 98 03 d0 66 92 10 12 3a 00)
label(ms)
registersymbol(ms)
_ms:
ms:
db d0 60 d1 1b 4f aa 10 01 f0 ba 03 47
[DISABLE]
ms:
db d0 30 f0 98 03 d0 66 92 10 12 3a 00
unregistersymbol(ms)
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<Description>"Pique instantaneo"</Description>
<Color>80000008</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>
[ENABLE]
Aobscan(_msw,d0 30 f0 2d 60 97 02 d0 66 e4 01 2c e3 11)
label(msw)
registersymbol(msw)
_msw:
msw:
db 24 28 48 2d 60 97 02 d0 66 e4 01 2c e3 11
[DISABLE]
msw:
db d0 30 f0 2d 60 97 02 d0 66 e4 01 2c e3 11
unregistersymbol(msw)
</AssemblerScript>
</CheatEntry>
</CheatEntries>
<UserdefinedSymbols/>
</CheatTable>