Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Mad Antrax en 1 Febrero 2013, 11:46 am



Título: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 1 Febrero 2013, 11:46 am
Hola a todos, os traigo un completo tutorial para que aprendáis a utilizar Cheat Engine (a partir de ahora CE). Algunos quizás conozcan ésta herramienta para hacer trampas en algunos juegos, lo que a lo mejor no sabían es que es una herramienta MUY completa, con un debbuger genial, comparador de estructuras e inyección de código.

Para enseñar como funciona CE, he programado una especia de "video juego" en VB6. Lo he programado especialmente para éste tutorial, así que no esperéis que sea un juego divertido, jajaja.

(http://i.imgur.com/4DtMjx2.png)

DESCARGA EL JUEGO: http://www.mediafire.com/?ucuhy8ebun71s8j
DESCARGAR CHEAT ENGINE 6.2: http://cheatengine.org/

El juego es muy sencillo y he añadido las típicas características que podéis encontrar en el 90% de los juegos actuales: Tiempo, Vida o Magia, Objetos en un inventario, etc...

Nuestro objetivo será aprender a usar CE de forma básica para modificar la memoria de un proceso. Cuando tengáis algo de soltura, os enseñaré a inyectar código en un juego para conseguir mejores "trucos". Os iré enseñando paso por paso con capturas de pantalla lo que debéis hacer.

1. Primero abrimos el juego y cargamos la partida, a la derecha tendréis vuestra salud y magia, así como el tiempo del juego. A la izquierda vuestra mochila de objetos (vacía) y abajo los controles del juego. En la parte central aparecen los eventos, a modo de información.

2. Abrimos CE y pulsamos el primer botón situado en la esquina superior izquierda, es para abrir el proceso que queremos debuggear o trucar. Está remarcado con un recuadro coloreado.

(http://i.imgur.com/lkudOVZ.png)

2. Ahora aparece una ventanita mostrando los procesos en ejecución, por norma general, los procesos abiertos en último lugar a parecen al final del listado. Buscamos el nombre del juego y hacemos doble-click (OPEN)

(http://i.imgur.com/tvcrQCH.png)

3. Ahora ya tenemos el proceso abierto, volvemos al juego y empezaremos a "trucar". Nos vamos a centrar en el tiempo. Abajo tienes un botón para poder pausar el juego, esto facilita un poco las cosas. Pulsamos pausa y miramos que valor tenemos en el tiempo, en mi caso lo he pausado en 81

(http://i.imgur.com/6PP9Yvb.png)

4. Vamos a la ventana del CE, en la parte central hay 3 recuadros, son los más importantes y ahí especificaremos la búsqueda que queremos realizar. Empezaremos poniendo:

Value: 81
Scan Type: Exact Value
Value Type: All

En "Value" ponemos el valor de la variable que queremos modificar/trucar. En mi caso es 81, ya que es el valor que hay en el juego. Como he puesto pausa, el tiempo no decrece y por eso es más fácil buscarlo.

En "Scan Type" ponemos "Exact Value", ya que en mi caso conocemos el valor exacto que queremos buscar (81). Si por casualidad quisieramos buscar un valor desconocido usaríamos "Unknow initial value" (este ejemplo lo veremos al hackear la saludo o maná del jugador, más adelante)

En "Value Type" ponemos "All". Normalmente el 90% de los juegos usan variables de tipo 4-byte, es lo más común, pero en mi juego de ejemplo, las variables son de 2-byte. Por eso, si tienes dudas y no sabes que valor tiene una variable, lo mejor es poner All y CE buscará todas las posibilidades.

Pulsamos el botón FIRST SCAN

(http://i.imgur.com/sqlGnc7.png)

CE hará una búsqueda muy rápida y me mostrará TODAS LAS DIRECCIONES DE MEMORIA que contengan en valor exacto 81, en mi caso han salido 438 direcciones. Que significa eso?

Esas 438 direcciones contienen el valor 81 en su interior, lo que significa que 1 de esas 438 será la dirección encargada de almacenar el tiempo del juego. La verdad que 438 son demasiadas así que deberíamos reducir ese número, como lo hacemos? Muy fácil.

1. Quita la pausa en el juego y deja que el valor siga decreciendo, en mi caso dejo que llegue hasta 79 y pulso de nuevo pausa para dejarlo ahí quieto.

2. Volvemos al CE (sin cerrar nada) y cambiamos los valores:

Value: Quitamos el 81 y ponemos 79 (en tu caso por el valor que salga en tu pantalla)
Scan Type: Exact Value (Al ser un número conocido, ponemos un valor exacto)
Value type: All

Y ahora pulsamos el segundo botón que pone: NEXT SCAN. Ojo y no pulses NEW SCAN, ya que borrarías las anteriores 438 direcciones encontradas y tendrías que empezar de nuevo:

(http://i.imgur.com/eK9Fs6Y.png)

En mi caso CE ha devuelto solo 2 direcciones encontradas

60EAFC:1
60EAFC:2

Los número de :1 y :2 significan el tipo de dirección, es decir de 1-byte y de 2-byte. Si nos fijamos es la misma dirección de memoria solo que nos da la posibilidad de trabajar con 1-byte o 2-bytes. Hacemos doble click sobre 60EAFC:2 para mandar la dirección encontrada a la parte inferior.

(http://i.imgur.com/RIdwmVP.png)

Ahora que tenemos la dirección en la parte inferior hacemos doble click en su valor, se nos abrirá una ventanita donde podemos cambiar el valor de la dirección, ponemos 99 y damos aceptar. Hacemos lo mismo en la descripción y ponemos la palabra "TIEMPO" (ésto es solo a nivel interno y nos ayudará a ser más ordenados). Por ultimo marcamos la casilla. Lo que hace esta casilla es forzar a que esa dirección contenga SIEMPRE ese valor:

(http://i.imgur.com/3Q0jyx4.png)

Así es como debería quedar, ahora vuelve al juego y quita la pausa, verás como el tiempo ya no decrece, se queda congelado en un mismo valor. Posiblemente te aparezca 98, eso es debido a que el juego coge el valor (99) le resta -1 y lo muestra, pero CE vuelve a escribir 99 consiguiendo un Cheat/Truco de tiempo ilimitado :D

=========================================

Bueno, hasta aquí la primera lección, es lo más fácil y sencillo de CE, supongo que la mayoría ya domináis éste tipo de función. Si veo que el hilo ha tenido buena aceptación me animaré a hacer las siguientes partes:

1. Uso básico de CE
1.1 Buscar una variable y modificar el valor/frezee
1.2 Buscar una variable de valor desconocido
1.3 Buscar una variable de valor desconocido (difícil)
2. Inyección de código
3. Creación de un trainer
4. Comparar estructuras

Por el momento hemos llegado al 1.1 :D Prueba de realizar este sencillo tutorial y comenta en el hilo como te ha ido, si tienes problemas o dudas. Para los más animados, os podéis avanzar e intentar trucar vuestra salud/vida, haciendo que la barra roja no decrezca. Os dejo una pista: Trabajar con Unknow initial value y usar los tipos Decreased value o Increased. Si no os sale no pasa nada, ya que lo explicaré en la próxima lección :D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 1 Febrero 2013, 14:37 pm
Bueno, aquí os presento la parte 2 del tutorial

En ella seguiremos utilizando el "juego" que he programado especialmente para éste hilo. Para continuar debéis entender el paso n1 del tutorial, es muy sencillo, si no te ha salido o no lo has entendido, ruego que preguntes tus dudas en el hilo.

En éste paso nos centraremos en encontrar un valor "desconocido". En la parte n1 queríamos trucar el tiempo, el propio juego lo mostraba de forma numérica por pantalla y era MUY sencillo encontrar el valor al poder usar búsquedas exactas. Aquí nos centraremos en buscar el valor de tu vida (barra de color rojo), como puedes observar, el juego no muestra el valor de tu vida de forma numérica, así que no sabemos si tenemos 10 puntos de vida, 100, 1000 o cualquier otro valor interno. ¿Como se hace? Muy fácil:

1. Asegúrate de pausar el tiempo (o de hackearlo usando el paso 1)
2. Familiarízate con el juego, utiliza los botones para alterar el valor de tu vida

(http://i.imgur.com/dHUZ0Ez.png)

3. Carga CE, abre el proceso Game_tut.exe (ver tutorial n1)
4. Configura CE de la siguiente forma

(http://i.imgur.com/UhuHD6j.png)

La explicación es sencilla. Usaremos Unknown initial value en Scan Type cuando queremos buscar una dirección cuyo valor desconocemos o es invisible. En Value Type marcamos byte-2, ya que os expliqué que Visual Basic 6.0 utiliza direcciones de 2 bytes para trabajar. La mayoría de los juegos y programas utilizan direcciones de byte-4. Pulsamos First Scan, en mi caso CE devuelve 2,8 millones de direcciones.

(http://i.imgur.com/wLFp0uy.png)

El siguiente paso es volver al juego, pulsamos el botón Recibir Daño un par de veces, hasta que veamos que la barra de vida roja empieza a decrecer, en ese momento cambiamos el Scan Type de CE a Decreased Value y pulsamos Next Scan

(http://i.imgur.com/fyrJfaQ.png)

Lo que hemos hecho con ésta acción es decirle a CE que de las 2,8 millones de direcciones encontradas en la primera búsqueda, nos muestre solo las que han decrecido (entre esas direcciones seguro que estará nuestra salud). En mi caso las direcciones encontradas bajan hasta 5180. Ahora hay que volver al juego, recibir algo de daño y pulsar Next Scan con la opción Decreased Value, cada vez que repitas esta acción, el número de direcciones encontradas por CE irá disminuyendo. Para ser más efectivo puedes probar lo siguiente:

Pulsa el botón Usar poción HP y en CE cambia el tipo por Increased Value, ésto buscará las direcciones que hayan aumentado, reduciendo mucho la búsqueda. Puedes ir jugando con el botón de recibir daño o usar poción y usar búsquedas en Increased o Decreased.

(http://i.imgur.com/AywDIci.png)

Si lo haces bien, encontrarás unas 3 o 4 direcciones, cuando tienes poquitas direcciones puedes probar a modificar una de ellas y ver si realmente has acertado. En el caso de éste juego, la variable de "vida" es un valor comprendido entre 0 y 1000, así que en el caso de la foto es el valor 584 (001D1026), los otros valores son variables internas que utiliza el control gráfico de la barra roja. Hacemos doble click en la dirección para mandarla abajo, cambiamos la descripción para poder identificarla sin problema y cambiamos su valor a 1000 haciendo doble click en value, volvemos al juego y pulsamos a recibir daño para comprobar si funciona.

(http://i.imgur.com/ATkKORO.png)

Como verás, la vida vuelve a 1000 y sigue decreciendo. Si quisieras "trucar" la vida puedes marcar la casilla como ya vimos en el tutorial n1 con el tiempo, haz la prueba, marca la casilla para hacer freeze a la variable y vuelve a desmarcarla.

Ahora te enseñaré a usar el Debugger para trabajar con una dirección encontrada. Hacemos click derecho en la variable y pulsamos "Find out what writes to this address"

(http://i.imgur.com/j3USp0D.png)

Aparecerá un mensaje de advertencia, básicamente nos avisa que el debugger de CE se acoplará al proceso, pulsamos YES y aparecerá la ventana del debugger

(http://i.imgur.com/sZwdn35.png)

(http://i.imgur.com/cetktA6.png)

A simple vista el debugger parece simple e inútil, pero no lo subestimes, es MUY poderoso :) Éste debugger funciona un tanto diferente, ya que solo debuggea la dirección de memoria que hemos pulsado, ignorando cualquier otra zona de código que se ejecute, así que volvemos al juego y pulsamos en recibir daño, inmediatamente en el debugger a parecerá lo siguiente:

(http://i.imgur.com/fyrj7ph.png)

Aquí aparecen varias caso, las explicaré paso a paso. En la parte superior, aparece la dirección que se ha ejecutado 72A35F52, los bytes que se han ejecutado 66 86 01 y su traducción en ASM instructions mov [ecx],ax. A la izquierda del todo hay un contador que indica el número de veces que se ha ejecutado dicha instrucción, en mi caso he pulsado el botón de recibir daño 6 veces. En la parte inferior aparece un detalle de las instrucciones ASM ejecutadas (la instrucción exacta aparece señalada bajo <<) y el estado de los registros EAX, EBX, ECX, etc...

Si pulsamos doble click en la instrucción de la ventana superior (o marcamos la instrucción y pulsamos en More Information) aparece el mismo detalle en una ventana, dicha ventana acepta copy/paste para tomar notas. Ademas debajo del botón nos "traduce" al inglés lo que hace dicha instrucción, en éste caso mov es un copy memory :D

(http://i.imgur.com/MqtSJBj.png)

Vamos a investigar que nos ha devuelto CE, os copio el resultado de mi debugger:

72A35F49 - 8B 4C 24 04  - mov ecx,[esp+04]
72A35F4D - 66 8B 44 24 08  - mov ax,[esp+08]
72A35F52 - 66 89 01  - mov [ecx],ax <<
72A35F55 - 33 C0  - xor eax,eax
72A35F57 - C2 0800 - ret 0008

EAX=72A101F2
EBX=72A1A274
ECX=001D1026
EDX=00000209
ESI=004144E8
EDI=001D0FF0
ESP=0012F3C4
EBP=0012F49C
EIP=72A35F55

Bueno, lo que ha ejecutado en un mov [ecx],ax  mirando los registros, ECX es 001D1026, es la dirección de mi vida! Lo que hace la instrucción es copiar un valor en dicha dirección, el valor es ax pero... ¿que es ax? Si miramos el registro EAX=72A101F2, AX es la parte del final 1F2, en resumen:

mov [ecx],ax mueve 1F2 (498) a la dirección de la vida, realmente el debugger nos ha mostrado EXACTAMENTE la instrucción correcta que escribe en nuestra vida. Ahora lo que podemos hacer es nopear la instrucción, CE permite hacer ésta tarea de forma muy fácil. Marcamos la instrucción en la ventana del debugger y pulsamos en Replace.

(http://i.imgur.com/2Ks9Cy7.png)

Para ser un poco ordenados, escribimos lo que hace nuestro replace: Invencible

(http://i.imgur.com/fGdatkj.png)

Y ahora cerramos el debugger (pulsamos en Stop y luego Close). Volvemos al juego y pulsamos en recibir daño, verás que la vida no se reduce. Si quieres deshabilitar el truco de Invencible pulsa en Advanced Options (está situado en la parte inferior del CE)

(http://i.imgur.com/eNWzIaW.png)

(http://i.imgur.com/v76Ly70.png)

Haciendo click derecho en Invencible, podrás restaurar el código original o volverlo a nopear.



Bueno, pues hasta aquí el paso nº2, intenta realizar todos los pasos, aprendelos y comprende cada opción que te he enseñado, al finalizar éste tutorial habrás aprendido:

  • Buscar valores desconocidos
  • Buscar valores usando Decrease e Increase
  • Acoplar el debugger a una dirección de memória
  • Usar el debugger y la información que nos muestra
  • Nopear una instrucción con Replace
  • Usar el CodeList (Advanced Options) para manejar los nopeos

Ahora solo falat terminar el paso 3 del tutorial, donde os enseñaré a usar el Debugger de CE a fondo y finalmente inyectar código ASM, crear script's y trainers.

Nos vemos en la próxima entrega, saludos!! :D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 1 Febrero 2013, 14:37 pm
Bueno, aquí está la tercera y última parte de mi tutorial, ésta parte va a ser algo extensa ya que intentaré hablar sobre muchos temas a la vez, espero que se pueda entender todo. Para ello utilizareoms un nuevo "juego" a modo de ejemplo llamado MoneyBag:

(http://i.imgur.com/drpyjPl.png)

DOWNLOAD MONEYBAG: http://www.mediafire.com/?hat2ts8d3por4a7

  • Inyección de código (creación de script's en Auto Assemble)
  • Creación de un Trainer funcional
  • Dissect Window
  • Modificar código Ensamblador

Al finalizar os daré un ejemplo real, usaremos un videojuego real y os enseñaré como "hackearlo" y crear un Trainer funcional.

Primero de todo nos descargamos el nuevo juego llamado MoneyBag, lo he programado yo mismo usando VB6, el juego es muy sencillo y simula una función muy típica en cualquier juego: El dinero. He intentado programarlo de la forma más sencilla posible.

El juego empieza con 1750 monedas, el único botón que hay sirve para gastar el dinero, cada vez que lo pulses gastará 5 monedas. Nuestro principal objetivo será modificar el programa para que el dinero aumente en lugar de decrecer cada vez que pulsemos el botón (inyección de código).

Bueno, empezaremos con lo más sencillo, abrir el juego y CE, buscar la dirección que almacena el dinero. Como pista os diré que el dinero es del tipo byte-2, pero si no estáis seguros podéis configurar la búsqueda en All, os dejo un pantallazo:

(http://i.imgur.com/ZHimnm0.png)

Como podéis observar, ya he encontrado la dirección correcta y la he pasado a la parte inferior, he cambiado la descripción para no equivocarme. Una vez que tenéis la dirección en la parte inferior, podéis cambiar el valor manualmente haciendo click con el ratón y apretando la tecla "Enter", el valor cambiado se verá reflejado automáticamente en el juego.

Ahora hazemos click derecho en la dirección y seleccionamos "Find out what writes to this address", aceptamos el mensaje de advertencia y se nos abrirá la ventana del debugger, dicha ventana estará en blanco

(http://i.imgur.com/MxY4Wvb.png)

(http://i.imgur.com/fxigIhF.png)

Volvemos al juego y pulsamos "Gastar Dinero", el dinero decrecerá y en nuestra ventana aparecerá la sección de código que ha modificado nuestra dirección llamada "DINERO"

(http://i.imgur.com/r8o3b3C.png)

00402C10 - 0F80 D6000000 - jo moneybag_tutorial.exe+2CEC
00402C16 - 66 3B C7  - cmp ax,di
00402C19 - 66 89 46 34  - mov [esi+34],ax <<
00402C1D - 7F 04 - jg moneybag_tutorial.exe+2C23
00402C1F - 66 89 7E 34  - mov [esi+34],di

EAX=000006CC
EBX=0000000A
ECX=0012000A
EDX=00000003
ESI=00615F20
EDI=00000000
ESP=0012F4F0
EBP=0012F5A4
EIP=00402C1D

Como podemos observar, el código mueve el valor ax=6CC a la variable (ésto ya lo vimos en la parte 2), ahora lo que haremos es pulsar el botón "Show Dissambler", se nos abrirá la ventana Memory View:

(http://i.imgur.com/ikARr0A.png)

Aquí empieza lo serio (y divertido) de Cheat Engine, de forma automática, CE nos muestra la zóna que ha modificado nuestro dinero mov [esi+34],ax. Vamos directamente a Tools/Auto Assemble (puedes pulsar Ctrl+A para ir más rápido) y se abrirá la ventana de creación de script's en Auto Assemble (a partir de ahora lo llamaré AA):

(http://i.imgur.com/wwosEp7.png)

La ventana está en blanco, pero por suerte CE tiene un sistema de plantillas que nos evitará escribir el script, usaremos 2 plantillas: La de inyección de código y la de Cheat Table

  • Template Cheat Table: Nos añade las secciones [ENABLE] y [DISABLE] para la creación de un script
  • Template Code Inject: Nos añade el código original para poder ser modificado (inyectado)

Para usar las plantillas correctamente has de añadir primero una y luego la otra, en el mismo orden que te indico, no lo hagas al revés! Empezamos con el menú: Template/Cheat Table framework code, aparecerá ésto:

(http://i.imgur.com/xa1sKEI.png)

Una vez que tenemos el Cheat Table puesto, añadimos la última plantilla: Template/Code Injection. Nos aparecerá un mensaje:

(http://i.imgur.com/bu1eTIk.png)

Ésta ventana nos pregunta la dirección del salto, aceptamos el valor que nos muestra por defecto: pulsamos Ok y el código se completa:

(http://i.imgur.com/dslERq6.png)

Una vez que ya tenemos las 2 plantillas insertadas, guardaremos el script en nuestro CE, para ello pulsamos el menú: File/Assign to current cheat table y cerramos la ventana de "Auto Asemble", NO pulses el botón "Execute", simplemente cierra la ventana pulsando la [X], vuelve a la ventana principal de CE, debería estar así:

(http://i.imgur.com/7Z30M8k.png)

Se ha creado una nueva entrada en la parte interior que contiene nuestro AA script, hazemos doble-click encima de <script> para abrir la ventana del AA y poder modificarlo:

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
mov [esi+34],ax
jg moneybag_tutorial.exe+2C23

exit:
jmp returnhere

"moneybag_tutorial.exe"+2C19:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"moneybag_tutorial.exe"+2C19:
mov [esi+34],ax
jg moneybag_tutorial.exe+2C23
//Alt: db 66 89 46 34 7F 04

La primera parte de [ENABLE] será el código que se ejecute cuendo activemos el script, cuando desactivemos el script se ejecutará la sección [DISABLE] que contiene el código original, así que nos centraremos siempre en modificar la sección [ENABLE], en mi caso he realizado el siguiente cambio:

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
add ax,A
mov [esi+34],ax
jg moneybag_tutorial.exe+2C23

exit:
jmp returnhere

"moneybag_tutorial.exe"+2C19:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"moneybag_tutorial.exe"+2C19:
mov [esi+34],ax
jg moneybag_tutorial.exe+2C23
//Alt: db 66 89 46 34 7F 04

Como puedes observar, he añadido un add ax,A justo antes del mov, eso hará que el dinero aumente en 5 en lugar de disminuir. Recuerda que cuando pulsamos el botón, el programa resta 5 y lo muestra, con mi modificación el programa restará 5, luego sumará 10 y en total es como si sumase 5 :D Pulsamos OK para aceptar y cerrar la ventana del AA y volver a la ventana del CE, marcamos el script para activarlo y volvemos al "juego", pulsamos el botón de "Gastar Dinero" y verás como nuestro código se ha inyectado correctamente:

(http://i.imgur.com/tnoiTIn.png)

(http://i.imgur.com/5ht8Wow.png)

El programa detecta si el dinero aumenta y lo muestra en rojo, eso significa que lo has hecho bien. Si deshabilitas el script, CE ejecutará la sección [DISABLE] que contiene el código original, de tal modo que el dinero irá decreciendo. Con un simple click puedes inyectar el add ax,A de una forma MUY sencilla y practica.



Ahora vamos al siguiente paso, creación de un trainer. Un trainer es un programa ejecutable que permite hacer trampas o "hacks" sobre un juego de forma automática, normalmente con el uso de hotkeys. CE tiene un sistema para generar trainers de forma sencilla, lo primero es tener el script en AA funcionando correctamente. En la ventana principal de CE pulsamos menú: File/Generate generic trainer lua script from table

(http://i.imgur.com/lgSQ7VJ.png)

(http://i.imgur.com/uCxMOMq.png)

La primera ventana es para crear el trainer y la segunda nos muestra la GUI del trainer, pulsamos "Add Hotkey" en la primera ventana para añadir una tecla automática a nuestro AA script. Nos pedirá que seleccionemos el item de nuestra table que queremos "trabajar", así que seleccionamos el "Auto Assemble script"

(http://i.imgur.com/FhnB94z.png)

Al pulsar nos aparece la ventana del Hotkey:

(http://i.imgur.com/jpMQwm8.png)

En el primer recuadro pulsamos directamente la tecla que queremos usar, en mi caso la letra "Q", abajo seleccionamos la acción que realizará la letra "Q" así que lo dejamos en "Toggle script", en la descripción ponemos por ejemplo: "Hackear Dinero"

(http://i.imgur.com/qrk2OXA.png)

Pulsamos "OK" para volver a la ventana anterior, aquí podemos personalizar un poco el trainer, poniendo una foto, personalizar el título, mensaje del "About", etc... te dejo que inspecciones. Si eres programador y te manejas con el IDE puedes probar a usar la opción "Design userinterface manually" (solo para expertos), una vez finalizado pulsamos en "Generate Trainer (EXE)" e indicamos el nombre y ubicación de nuestro trainer, aparecerá la siguiente ventana:

(http://i.imgur.com/y5ccn1y.png)

Aquí lo único que debéis saber es la diferencia entre crear el trainer Gigantic o Tiny, la versión Gigantic ocupará bastante (unos 3 MB) y la Tiny ocupara unos pocos bytes (50 KB), la diferencia será que para la versión tiny, el usuario necesitará tener instalado CE en su PC, la gigantic es completamente stand-alone. En nuestro caso nos da igual, así que puedes usar Tiny si te apetece. Una vez generado, puedes cerrar por completo el CE y el juego, ya tendrás tu trainer:

(http://i.imgur.com/SVbos7h.png)

Para probarlo, abre de nuevo el juego MoneyBag, y con el trainer ejecutado, pulsa tu tecla de hotkey "Q", verás como el trainer se ilumina indicando que el script se ha inyectado, prueba a usar el MoneyBag y verás que el dinero aumenta!! Vuelve a pulsar "Q" para descativar el script y el juego volverá a la normalidad.

Con un poco de programaciones se pueden crear trainers muy vistosos como hacen los principales grupos Paradox, Theta, BlackxXx, etc...

(http://i.imgur.com/Bpecc.png)

Éste lo creé yo usando CE + Visual Basic 6, pero aquí ya entraríamos en temas de programación y no lo voy a explicar en éste sub-foro


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: tincopasan en 1 Febrero 2013, 14:55 pm
Está bueno para los que recién comienzan! y viendo lo que agregarías te diré que creo te falta poner como llegar a los pointers y a los pointers de pointers jeje que así vienen la mayoría de juegos nuevos. Excelente trabajo!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: fary en 3 Febrero 2013, 13:33 pm
Esta bien el tutorial!   ;D

Solo unas cosillas:

-Es recomendable poner el tipo de valor que buscas para que funcione mejor el programa  :rolleyes:

-Ya que tu usas siempre VB6 me imagino que tambien lo usarás para la "inyeccion de código", que no se puede hacer con VB6 por lo tanto sería mas bien modificar valores con WriteProcessMemory, no?

un saludo!



Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MeTaD en 3 Febrero 2013, 17:35 pm
excelente hermano, ¡hacía falta algo tan detallado como esto! ¡me encanta!,
¿Esto funcionaría para juegos programados en vb.net?
quedo a la espera de las otras partes! un abrazo.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: syntax00r en 5 Febrero 2013, 08:37 am
Muchisimas gracias buen tuto men<3

No puedo esperar al proximo ;-)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: gonzalo57 en 5 Febrero 2013, 15:29 pm
Me encanta tu tutorial es la .... muchas gracias siempre me interesé por este tipo de cosas y truquear juegos etc...

Muchisimas gracias me ayudaste mucho :D!! 2 tuto 2 tutoooo!!!!!!!!!!!!!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Martin-Ph03n1X en 6 Febrero 2013, 02:10 am
mad antrax estabas desaparecido donde esta tu blog?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 11 Febrero 2013, 23:04 pm
Me encanta tu tutorial es la .... muchas gracias siempre me interesé por este tipo de cosas y truquear juegos etc...

Muchisimas gracias me ayudaste mucho :D!! 2 tuto 2 tutoooo!!!!!!!!!!!!!

Gracias :D

mad antrax estabas desaparecido donde esta tu blog?

Estaba de vacaciones :D



Acabo de terminar la parte 2 del tutorial, en ella aprenderéis a:

  • Buscar valores desconocidos
  • Buscar valores usando Decrease e Increase
  • Acoplar el debugger a una dirección de memória
  • Usar el debugger y la información que nos muestra
  • Nopear una instrucción con Replace
  • Usar el CodeList (Advanced Options) para manejar los nopeos

Espero que os sirva, intentad hacer el tutorial paso a paso y postear aquí las dudas, que veo poca participación!! :(


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: apuromafo CLS en 12 Febrero 2013, 06:56 am
yo siempre leo el foro..realmente esta bien los aportes ||MadAntrax||, cuidate y disfruta las vacaciones en caso que aun queden dias libres

saludos Apuromafo


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: POLLITOXD en 12 Febrero 2013, 17:36 pm
Holas  soy pollito  tengo un problema q pasa
cuando le doy  "Find out what writes to this address"
se cierra el juego no es el juego q pusistes es otro
como podria en caso como sacar las andress pointer offzet....


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 12 Febrero 2013, 19:30 pm
Holas  soy pollito  tengo un problema q pasa
cuando le doy  "Find out what writes to this address"
se cierra el juego no es el juego q pusistes es otro
como podria en caso como sacar las andress pointer offzet....

Buenas, lo que te ocurre es que el juego que estás tratando de debuggear tiene protecciones anti-debugg, al lanzar el debugger interno de CE se cierra por protección.

Que juego estás tratando de hackear?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: POLLITOXD en 13 Febrero 2013, 04:18 am
Umm bueno ai alguna otra forma se sacar el andress  o pointer
estatico  q no se por debuger aver si me pordrian orientar
en algo toy provando con dos juegos el mu heroes mu sanluis
y gunbound   :P :o  :silbar:


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 13 Febrero 2013, 13:58 pm
Umm bueno ai alguna otra forma se sacar el andress  o pointer
estatico  q no se por debuger aver si me pordrian orientar
en algo toy provando con dos juegos el mu heroes mu sanluis
y gunbound   :P :o  :silbar:

Esas juegos usan tecnologia Game Shield, además son juegos online (server side) así que no lograrás nada :D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: gonzalo57 en 13 Febrero 2013, 15:09 pm
Mad mira hace tiempo jugaba a un juego llamado BoomBang y se me ocurrio entrar y probar para ponerme mucho dinero, y lo consegui lo que pasa esque siempre que me pongo dinero en un juego tan solo es visual, en realidad es como si no tuviera nada. Igual me ocurre en el juego Plants Vs Zombies.
Espero que me resuelvas la duda


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 13 Febrero 2013, 15:33 pm
Mad mira hace tiempo jugaba a un juego llamado BoomBang y se me ocurrio entrar y probar para ponerme mucho dinero, y lo consegui lo que pasa esque siempre que me pongo dinero en un juego tan solo es visual, en realidad es como si no tuviera nada. Igual me ocurre en el juego Plants Vs Zombies.
Espero que me resuelvas la duda

Bueno, eso que te ocurre puede ser por varios motivos. Te explico:

Imaginate que soy programador de un juego, en el juego tienes monedas (o dinero), de forma interna el juego almacena el valor de tu dinero así

VariableDinero = 50 * 10 = 500

Tú en el juego verás de forma gráfica que tienes 500 monedas, pero en realidad el juego almacena el valor 50 y lo multiplica por 10 para mostrarlo. Cuando uses CE para buscar 500 jamás te saldrá bien, ya que de forma interna, la variable de 500 monedas se almacena de una forma distinta. Eso sería un método de protección para evitar éste tipo de trampas. Lo mejor es usar búsquedas en Increased o Decreased para no fallar.

Por cierto, el Plant vs Zombi lo conseguí hackear con CE, no es complicado, que versión estás jugando tú? Yo lo tengo para Steam, si quieres te puedo ayudar.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 13 Febrero 2013, 20:30 pm
Ya he terminado la parte 3 del tutorial, creo que no me he dejado nada. Inyección de código y creación de script's en Auto-Assemble. Si hay algo mal o que no se entienda avisad!!

Está posteado en el reply #3 de la primera página


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: [NelSito*] en 14 Febrero 2013, 03:50 am
Te felicito y agradezco por tomarte el tiempo por enseñar partes de un debugger como es el CE, tengo muy claro todo lo unico que aun no aprendia era la parte de crear scripts en AA, ahora que lo se me gustaria saber ya que hablastes del alloc y label, podrias decirme en que casos o para que sirve el registersymbol y un ejemplo para que asi los demas tambien puedan entenderlo.

Gracias.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 14 Febrero 2013, 08:36 am
Te felicito y agradezco por tomarte el tiempo por enseñar partes de un debugger como es el CE, tengo muy claro todo lo unico que aun no aprendia era la parte de crear scripts en AA, ahora que lo se me gustaria saber ya que hablastes del alloc y label, podrias decirme en que casos o para que sirve el registersymbol y un ejemplo para que asi los demas tambien puedan entenderlo.

Gracias.

alloc es para indicar a CE cuanto espacio en memoria necesitas para tu script, normalmente con 2kbytes tienes espacio suficiente paa inyectar tu código.
label sirve para utilizar una palabra como si fuera una dirección de memoria, te dejo un ejemplo:

[ENABLE]
alloc(InfiniteHull,2048)
label(SkipDmg)
label(return)

"FTLGame.exe"+B133F:
jmp InfiniteHull
nop
return:

InfiniteHull:
cmp [eax+04],0
je SkipDmg
fistp dword ptr [eax+38]
db D9 6D FE
jmp return
SkipDmg:
mov [eax+38],1E
db D9 6D FE
jmp return

[DISABLE]
dealloc(newmem)
"FTLGame.exe"+B133F:
fistp dword ptr [eax+38]
db D9 6D FE

Si lees el código desde arriba verás que empiezo con un jmp InfiniteHull (mi primer label). Comparo la estructura [eax+4] con un je SkipDmg (mi segundo label). Es un claro ejemplo de uso de labels, éste script AA comprueba el registro [eax+4] para determinar si es un enemigo o un amigo, si es un amigo el valor será 0 y lanzo el código de evitar daño, si es un enemigo ejecuto el código original para aplicar daño. Así de sencillo.

RegisterSymbol es algo más avanzado, sirve para registrar una palabra como variable interna. A efectos prácticos será tratada como una dirección de memoria más y podrás trabajarla con CE, te dejo un ejemplo inventado:

En algunos casos, los videojuegos utilizan direcciones estáticas donde almacenan sus variables, dichas direcciones nunca varían y las puedes utilizar para hacer "hacks". Imagínate que tenemos un juego llamado "game.exe" y que en la dirección de memoria BCA64 el registro EAX contiene las videas de tu personaje, podrías hacer lo siguiente:

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048) //2kb should be enough
label(exit)
alloc(y_addr,4)
registersymbol(y_addr)


"game.exe"+BCA64:
jmp newmem
jmp exit
nop

newmem:
mov [y_addr],eax

exit:

[DISABLE]
...
dealloc(y_addr)
unregistersymbol(y_addr)

Aquí lo que hemos hecho es saltar a la dirección de memoria BCA64 y guardar en nuestro símbolo y_addr el valor de EAX que contiene las vidas. A partir de aquí el símbolo y_addr podrá ser utilizado en cualquier ventana del CE, incluso en otros script's. Es otra forma de trabajar, pero yo lo veo algo complicado. Si te interesa el tema de las funciones en AA te dejo las que hay (en inglés)

There are 3 special commands you can give it, ALLOC , LABEL and FULLACCESS. With LABEL you can give a address a name by declaring it before you use it. ALLOC is basicaly the same as LABEL but allocates some memory for you.
Usage:
LABEL(labelname) //Enables the word labelname to be used as a address
ALLOC(allocname,sizeinbytes, preferedregion OPTIONAL) //same as label, but allocates the memory it points to itself
DEALLOC(allocname) //Deallocates a block of memory allocated with alloc. It always gets executed last, no matter where it is positioned in the code, and only actually frees the memory when all allocations have been freed.  only usable in a script designed as cheattable. (e.g used for the disable cheat)
FULLACCESS(address,size)  //makes a memory region at the specified address and at least "size" bytes readable, writable and executable

REGISTERSYMBOL(symboname) //adds the symbol to the userdefined symbol list so cheattables and the memory browser can use that name instead of a address (The symbol has to be declared in the script when using it)
UNREGISTERSYMBOL(symbolname) //removes the symbol from the userdefined symbol list. It won't give a error if it isn't found


DEFINE(name,whatever) :Will replace all tokens with the specified name with the text of whatever
INCLUDE(filename) :includes another auto assembler file at that spot
LOADBINARY(address,filename) :Will load a binary file at the specified address
CREATETHREAD(address) :Will spawn a thread in the process at the specified address
LOADLIBRARY(filename) :Will inject the specified dll into the target process
READMEM(address,size) :Will write the addresses at address at the location this instruction is placed


GLOBALALLOC(name,size) : Will allocate a certain amount of memory and registers the specified name. Using GlobalAlloc in other scripts will then not allocate the memory again, but reuse the already existing memory. (Or allocate it anyhow if found it was not allocated yet)


ASSERT(address, array of byte) : Will check the memory address for the given address. If the memory is not what is defined by the array of byte given, the auto assemble script will not execute.
AOBSCAN(name, array of byte) : Will scan the memory for the given array of byte (Wildcards are supported) and replaces all tokens with the specified name with the address the array of byte was found. If it's not found, the auto assemble script will not execute


Value notation:
Normally everything is written as hexadecimal in auto assembler, but there are ways to override this so you can input decimal values, and even floating point values.
for example, a integer value of 100 can be written in hex as 64, but you can also write it as #100, or as (int)100
for floating point value like 100.1 you can use (float)100.1


Y por si te interesa, te dejo un AA script de un juego real, el script es bastante extenso, por suerte está bien escrito y comentado, quizás aprendas algo de él :D

//=========================================
// Majesty 2 - The Fantasy Kingdom Sim
// Game Version  : 1.0.0.0
// Script Version: 1.0
// CE Version    : 5.5
// Gold, GodMode
// 08-Oct-2009
//=========================================

[ENABLE]
alloc(MyCode,1024)

//=========================================
// Declaration section
label(_MonGold)
label(_BackMG)
label(_ExitMG)
label(_GodMode)
label(_BackGM)
label(_ExitGM)
label(_GodM0)
label(pGold)
label(fMinGold)
label(iEnableMG)
label(iEnableGM)

registersymbol(MyCode)
registersymbol(pGold)
registersymbol(fMinGold)
registersymbol(iEnableMG)
registersymbol(iEnableGM)

//=========================================
// Hacking Points
Game.dll+1d7d07:
 jmp _MonGold
 nop
_BackMG:

Game.dll+20ff5e:
 jmp _GodMode
_BackGM:

MyCode:
//=========================================
_MonGold:
 push eax
  
 mov [pGold],ecx              // Save ptr for further use
  
 cmp dword ptr [iEnableMG],0
 je _ExitMG                   // Jump if feature is disabled
  
 mov eax,[fMinGold]           // Get minimum gold value
 cmp eax,[ecx+00040474]       // Current value >= minimum?
 jle _ExitMG                  // Jump if true
  
 mov [ecx+00040474],eax       // Make current value = minimum
 mov [ecx+04],eax             // Make current value = minimum (display)

_ExitMG:
 pop eax
 fld dword ptr [ecx+00040474] // Original code
 jmp _BackMG                  // Back to main code

//=========================================
_GodMode:
 push ebx
 mov ebx,ecx
  
 cmp dword ptr [iEnableGM],0
 je _GodM0                    // Jump if feature is disabled

 mov ecx,[ecx+14]             // Get ptr Level 1
 or ecx,ecx                   // Valid pointer?
 jz _GodM0                    // Jump if false

 mov ecx,[ecx+000000a0]       // Get ptr Level 2
 or ecx,ecx                   // Valid pointer?
 jz _GodM0                    // Jump if false

 mov ecx,[ecx+00000014]       // Get ptr Level 3
 or ecx,ecx                   // Valid pointer?
 jz _GodM0                    // Jump if false
  
 mov ecx,[ecx+000000A4]       // Get ptr Level 4
 cmp ecx,07000000             // Valid pointer?
 jle _GodM0                   // Jump if false

 mov ecx,[ecx+00000024]       // Get ptr to owner
 cmp ecx,[pGold]              // Player´s unit?
 jne _GodM0                   // Jump if false

 fld dword ptr [ebx+24]       // Get Maximum HP
 jmp _ExitGM  

_GodM0:
 fld dword ptr [eax]          // Original code

_ExitGM:
 mov ecx,ebx
 pop ebx
  
 fstp dword ptr [ecx+1c]      // Original code
 jmp _BackGM                  // Back to main code

//=========================================
// Variables
iEnableMG:
 dd 1
iEnableGM:
 dd 1
pGold:
 dd 0
fMinGold:
 dd 461c4000                  // 10000

//=========================================
// Original Codes
[DISABLE]
Game.dll+1d7d07:
 fld dword ptr [ecx+00040474]

Game.dll+20ff5e:
 fld dword ptr [eax]
 fstp dword ptr [ecx+1c]

dealloc(MyCode)
unregistersymbol(MyCode)
unregistersymbol(pGold)
unregistersymbol(fMinGold)
unregistersymbol(iEnableMG)
unregistersymbol(iEnableGM)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: gonzalo57 en 14 Febrero 2013, 15:48 pm
a medio me perdi en la 2 parte y en el 3 ya bff. imposible para mi  :-(


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 14 Febrero 2013, 16:53 pm
a medio me perdi en la 2 parte y en el 3 ya bff. imposible para mi  :-(


Exactamente en que parte te perdiste? Quizás pueda ayudarte


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: [NelSito*] en 14 Febrero 2013, 18:39 pm
Ahora entiendo un poco mas esa funcion ^^! lo que pasa que yo años atras jugaba MapleStory un juego muy peculiar y divertido en aquellos tiempos diseñado en 2D, al buscar addys en la memoria pues comenze encontrando un Unlimited Attk, consistes en saltar el limite de ataques que te da el juego que era "99" hits.

Ejemplo:

http://foro.elhacker.net/ingenieria_inversa/tutorial_hallar_pointers_offset_con_ce_mhs5-t342767.0.html

Ojo que aqui realizo usando otra herramienta para hacerlo mas facil y comprensivo.

Volviendo a mi pregunta, en el script ejemplo que muestras señala "FTLGame.exe"+B133F: pero si yo lo cambio por el addy se me ocurre 00123456: ¿vendria hacer lo mismo? ¿el debugger lo leeria normal? ¿Ahora hay scripts que incluyen pointers y multipointers? podrias explicarme un poco mas sobre ello porfavor.

Ejemplo del script del unlimited attk que incluye pointers.

[enable]
alloc(UnlimitedAttk, 512)
label(dontReset)

UnlimitedAttk:
push ecx
mov ecx,[997EDC] //Direccion del Unlimited Attk
cmp [ecx+2250], 61 // Unlimited Attk Offset | 99 Ataques
jle dontReset
dec [ecx+E50] //Item X | Viene hacer un puntero que resetea el conteo de los ataques moviendose para cualquier lado
dontReset:
pop ecx
cmp eax,edi
mov [ebp-20],eax
ret
005B9343: // AOB del Addy 3B C7 89 45 E0 74 5F FF B3 B0 03 00 00 8D 83 A8
call UnlimitedAttk

[disable]
005B9343:
cmp eax,edi
mov [ebp-20],eax
dealloc(UnlimitedAttk, 512)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 14 Febrero 2013, 18:56 pm
Exactamente no entiendo tu pregunta :( Que es lo que quieres hacer?

El tema de pointers o multi-level pointers no he hablado en el tutorial. No me gusta trabajar con ellos ya que son algo confusos, puedes realizar cualquier hack sin recurrir a los pointers, incluso en direcciones dinámicas


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: [NelSito*] en 14 Febrero 2013, 19:01 pm
Disculpa si no formule bien mi pregunta, pero quiero saber si al crear el script se agregan los pointers automaticamente y hablo de direcciones estaticas.

La otra pregunta era que si FTLGame.exe"+B133F: lo reemplazo por el addy que deberia de ser que es "00123456" CE leeria igual el script.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 14 Febrero 2013, 19:22 pm
Disculpa si no formule bien mi pregunta, pero quiero saber si al crear el script se agregan los pointers automaticamente y hablo de direcciones estaticas.

La otra pregunta era que si FTLGame.exe"+B133F: lo reemplazo por el addy que deberia de ser que es "00123456" CE leeria igual el script.

Cuando generas un script usando los pasos descritos en la parte 3, se agrega todo automáticamente, no tienes que escribir nada. Te lo explico usando el ejemplo del tutorial 3:

(http://i.imgur.com/ikARr0A.png)

Como puedes ver, el debugger de CE me muestra la instrucción que modifica mi dirección donde almaceno el dinero, dicha instrucción es moneybag_tutorial.exe"+2C19 (mira la imagen). Al añadir las plantillas, CE escribe automáticamente el siguiente código:

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
mov [esi+34],ax
jg moneybag_tutorial.exe+2C23

exit:
jmp returnhere

"moneybag_tutorial.exe"+2C19:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"moneybag_tutorial.exe"+2C19:
mov [esi+34],ax
jg moneybag_tutorial.exe+2C23
//Alt: db 66 89 46 34 7F 04

Lo que está en negrita es la primera línea que se ejecutará, justamente es la dirección donde tengo mi instrucción mágica mov [esi+34],ax. Si quieres remplazar la dirección del salto puedes usar direcciones no relativas, para ello suma la BASE con la dirección: 40400+2C19 = moneybag_tutorial.exe+2C19, así que supongo que CE lo leerá igual, pero no estoy seguro, deberías probarlo.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: gonzalo57 en 14 Febrero 2013, 22:16 pm
En el debugger, lo de darle aqui:
Find out what writes to this address


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MeTaD en 17 Febrero 2013, 03:08 am
Hermanito, una pregunta, la dirección de memoria cambia en cada ejecución cierto? como se podría identificar automáticamente la dirección después de haber cambiado?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 17 Febrero 2013, 10:41 am
Hermanito, una pregunta, la dirección de memoria cambia en cada ejecución cierto? como se podría identificar automáticamente la dirección después de haber cambiado?

Muy buena pregunta. Hay dos formas para hacer eso:

- Utilizar pointers (no lo he explicado)
- Utilizar Auto-Assemble Scripts (Explicado en el paso 2 y 3)

Volviendo al ejemplo del paso 3 MoneyBag

(http://i.imgur.com/drpyjPl.png)

Se puede encontrar de forma fácil el pointer que almacena la dirección dinámica del Dinero. De igual forma se puede hacer un AA script para incrementar el dinero. Éstas 2 formas de trabajar con CE funcionarán siempre, incluso después de cerrar y volver a ejecutar el proceso:

(http://i.imgur.com/lsF5cm2.png)

Puedes ver en la imagen que los pointers se identifican por P->000000. Te dejo mi tabla de CE para el ejemplo de MoneyBag, podrás abrirla sin problema y verás como el Pointer y el AA script funciona siempre:

http://www.mediafire.com/?d51sd1qc3l0jiic

______________________________________________

Si lo necesitáis, puedo escribir un tutorial para buscar pointers


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MeTaD en 17 Febrero 2013, 19:20 pm
Amigo, ¿cuando dices pointer es lo mismo que decir puntero?, Te agradacería inmensamente que escribieras el tutorial para buscar pointers...
Este mismo tutorial lo he probado con un programa que yo mismo he creado en C# y funciona de manera simple... Existe un int con valor inicial de 0 y dos botones: uno sima 1 y el otro resta 1:
(http://gyazo.com/26d5942969be06d6d6ad9fe0e787b81d.png?1361124190)
¿Podrías por favor revisarlo y contestarme una pregunta?
Después de pulsar rápidamente el boton de suma (Cerca del valor 70 ~ 120) su espacio en la memoria cambia... ¿Por qué?

Anexo el programa y el código fuente para que puedas revisarlo
Código:
https://mega.co.nz/#!2F1SDYSQ!YqhHzX72VGTfC1jdoAxY9SqWvoZNvFjq53G6COIJfvM

También creé éste programa que es un "trainer" para mi "juego", el problema radica en que tengo que buscar el address cada vez que la memoria cambie, lo cual evidentemente no es algo bueno, porque cual sería el sentido del "Trainer" asi aún tengo que buscar la dirección manualmente y ya estando en el CE con la dirección sería preferible modificarla de una vez mediante el CE... por ende el trainer no tendría sentido...

Aquí está uina captura de pantalla:
(http://gyazo.com/52785a2e3dd8c4cf2e7336f63158986c.png?1361127955)

Anexo el programa y su código fuente:
Citar
https://mega.co.nz/#!uVVi1aqL!fLV_S27WlEgBhw7dLeq1ORt4iuZCWJdBKeaBBWLhomE


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 17 Febrero 2013, 19:47 pm
Puedes subir el ejecutable compilado? No tengo el VS para compilar el source

Edit: Ya veo que has subido tambien el exe compilado, espera unos minutos que lo reviso :P


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MeTaD en 17 Febrero 2013, 20:24 pm
Vale, gracias, le agregué más información al post anterior, revísalo porfa, y también te he mandado un PM, gracias de antemano.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 17 Febrero 2013, 21:03 pm
Vale, gracias, le agregué más información al post anterior, revísalo porfa, y también te he mandado un PM, gracias de antemano.

Bueno, he estado revisando tu programa.

El problema parece ser que es debido a Framework, como ya sabes, todos los programas creados con Visual Studio son interpretados por una VM, en VB6 la VM es MSVBVM60.DLL, en las versiones posteriores son ejecutados por las librerías y dependencias Framework.

Después de estar revisando un poco el ejecutable, las operaciones de incrementar o restar son ejecutadas evidentemente por la VM de VisualStudio (Framework), dichas librerías ejecutan y procesan el código a su manera, realmente no entiendo como demonios funciona internamente, lo que sí es seguro es que los punteros son asignados en espacios de memoria de forma aleatoria.

Cuando ejecuto tu programa, puedo encontrar el pointer (puntero) asignado a tu variable. Después de incrementar el valor, la variable "salta" y se almacena en otra dirección de memoria nueva (ésto es MUY raro y jamás lo había visto, es por culpa del maldito Framework), curiosamente, el pointer que he encontrado es capaz de seguir ese "salto" y continua mostrando el valor correcto de tu variable.

El problema viene aquí: Cuando ejecuto de nuevo el programa, el pointer que había encontrado antes ya no sirve (ésto es la primera vez que lo veo). He usado el pointer-scanner para comprobar si son punteros de multi-nivel, pero no es el caso.

También he probado de crear un AA script, funciona correctamente, pero cuando reinicio el programa, Framework interpreta el código de alguna forma extraña y deja inservible el AA script.

____________________________________

Mi conclusión es que Framework nos está jugando una mala pasada. Por alguna razón, cuando ejecutas el programa, asigna sus funciones en un rango aleatorio de la memoria (offsets). Con el resto de ejecutables que he trabajado, las variables se asignan de forma aleatoria, pero sus pointers y funciones (offsets) siempre ocupan la misma dirección relativa. Me explico:

Ejecuto por primera vez tu programa, tras encontrar la dirección, Framework hace lo siguiente:

003D06BE - FF 80 4C010000        - inc [eax+0000014C]

003D06BE = Es el offset encargado de incrementar tu variable
inc = Es la instrucción ASM que incrementa
[eax+0000014C] = La dirección de memoria con tu variable

La segunda vez que ejecuto tu programa ocurre lo siguiente:

005806BE - FF 80 4C010000        - inc [eax+0000014C]

El offset ha cambiado pasando de 003Dxxxx -> 0058xxxx, pongo la mano en el fuego que el culpable de éste cambio sin-sentido es debido al Framework.

Lamentablemente no puedo darte una solución a tu problema :( Deberíamos mover tu pregunta al foro oficial de CheatEngine, a ver si alguien puede lanzar un poco de luz a éste problema

__________________________________________

EDIT

Estoy revisando más a fondo tu problema. Parece ser que la función AOBSCAN() se puede encontrar el offset exacto que realiza el incremento para luego hacer una inyección de código o incluso dumpear la dirección de memoria donde se almacena tu variable.

El problema es que no soy muy experto en usar el AOBSCAN() bajo CE, estoy haciendo pruebas, pero creo que se puede conseguir :P


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MeTaD en 17 Febrero 2013, 21:20 pm
Bueno, he estado revisando tu programa.

El problema parece ser que es debido a Framework, como ya sabes, todos los programas creados con Visual Studio son interpretados por una VM, en VB6 la VM es MSVBVM60.DLL, en las versiones posteriores son ejecutados por las librerías y dependencias Framework.

Después de estar revisando un poco el ejecutable, las operaciones de incrementar o restar son ejecutadas evidentemente por la VM de VisualStudio (Framework), dichas librerías ejecutan y procesan el código a su manera, realmente no entiendo como demonios funciona internamente, lo que sí es seguro es que los punteros son asignados en espacios de memoria de forma aleatoria.

Cuando ejecuto tu programa, puedo encontrar el pointer (puntero) asignado a tu variable. Después de incrementar el valor, la variable "salta" y se almacena en otra dirección de memoria nueva (ésto es MUY raro y jamás lo había visto, es por culpa del maldito Framework), curiosamente, el pointer que he encontrado es capaz de seguir ese "salto" y continua mostrando el valor correcto de tu variable.

El problema viene aquí: Cuando ejecuto de nuevo el programa, el pointer que había encontrado antes ya no sirve (ésto es la primera vez que lo veo). He usado el pointer-scanner para comprobar si son punteros de multi-nivel, pero no es el caso.

También he probado de crear un AA script, funciona correctamente, pero cuando reinicio el programa, Framework interpreta el código de alguna forma extraña y deja inservible el AA script.

____________________________________

Mi conclusión es que Framework nos está jugando una mala pasada. Por alguna razón, cuando ejecutas el programa, asigna sus funciones en un rango aleatorio de la memoria (offsets). Con el resto de ejecutables que he trabajado, las variables se asignan de forma aleatoria, pero sus pointers y funciones (offsets) siempre ocupan la misma dirección relativa. Me explico:

Ejecuto por primera vez tu programa, tras encontrar la dirección, Framework hace lo siguiente:

003D06BE - FF 80 4C010000        - inc [eax+0000014C]

003D06BE = Es el offset encargado de incrementar tu variable
inc = Es la instrucción ASM que incrementa
[eax+0000014C] = La dirección de memoria con tu variable

La segunda vez que ejecuto tu programa ocurre lo siguiente:

005806BE - FF 80 4C010000        - inc [eax+0000014C]

El offset ha cambiado pasando de 003Dxxxx -> 0058xxxx, pongo la mano en el fuego que el culpable de éste cambio sin-sentido es debido al Framework.

Lamentablemente no puedo darte una solución a tu problema :( Deberíamos mover tu pregunta al foro oficial de CheatEngine, a ver si alguien puede lanzar un poco de luz a éste problema

__________________________________________

EDIT

Estoy revisando más a fondo tu problema. Parece ser que la función AOBSCAN() se puede encontrar el offset exacto que realiza el incremento para luego hacer una inyección de código o incluso dumpear la dirección de memoria donde se almacena tu variable.

El problema es que no soy muy experto en usar el AOBSCAN() bajo CE, estoy haciendo pruebas, pero creo que se puede conseguir :P

Altamanete interesante a mi punto de vista el comprotamiento que vemos aquí, ¿no?, porcierto, estoy analizando con olly bajo este tutorial http://foro.elhacker.net/ingenieria_inversa/tutorialcreacion_de_trainers_con_ollydbg_y_cheat_engine-t342664.0.html (http://foro.elhacker.net/ingenieria_inversa/tutorialcreacion_de_trainers_con_ollydbg_y_cheat_engine-t342664.0.html) y no sé por qué cuando le intento hacer el hardware BP no me permite volver a utilizar la ventana del programa (olly lo bloquea incluso antes de poner el BP)

--------------------

EDIT:


Solucioné lo del olly reiniciándolo... sigo chequeando a ver qué consigo...

Mientras más hago pruebas, más me desorienta... ahora CE cambió la dirección a la que tú hacias referencia como relatia... he aquí la muestra:
Código:
001D072A - 90 - nop
001D072B - 8B 45 F8  - mov eax,[ebp-08]
001D072E - FF 80 4C010000  - inc [eax+0000014C] <<
001D0734 - 8B 45 F8  - mov eax,[ebp-08]
001D0737 - 8B 80 40010000  - mov eax,[eax+00000140]

EAX=025A391C
EBX=025C80D8
ECX=025A391C
EDX=025C7238
ESI=025C7238
EDI=0267C32C
ESP=0034EEF8
EBP=0034EF08
EIP=001D0734

Lamento la molestia amigo, tengo mucha curiosidad con éste tema...


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 17 Febrero 2013, 22:11 pm
Vale, ya he podido solucionar tu problema, al final he utilizado un AOBSCAN(), es una función algo compleja en CE, y en mis años que llevo utilizando CE nunca había tenido que recurrir a ella.

AOBSCAN devuelve el offset correspondiente a un array de bytes en memoria. Tu programa ejecuta la siguiente instrucción:

xxxxxxxx - FF 80 4C010000        - inc [eax+0000014C]

El offset lo pongo en xxxxxxxx ya que es aleatorio como ya vimos por culpa del Framework, los bytes ejecutados son siempre los mismos: FF 80 4C 01 00 00 así que podemos realizar una búsqueda y obtener la dirección desde donde se ejecuta el array de bytes (xxxxxxxx). El script que permite hacer esto es el siguiente:

[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
label(addr)
registersymbol(addr)
aobscan(aob1,FF 80 4C 01 00 00)

newmem:
mov [eax+0000014C],9

originalcode:
inc [eax+0000014C]

exit:
jmp returnhere

aob1:
addr:
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmem)
addr:
db FF 80 4C 01 00 00
unregistersymbol(addr)

El script en cuestión busca el array y devuelve el offset, a partir de ahí inyectamos nuestra instrucción en newmem, en mi caso copio 9 en eax+14C, consiguiendo un script que siempre establece en 10 el valor de tu variable al sumar. Y lo mejor es que funciona siempre en cada ejecución ya que aobscan funciona en códigos dinámicos (Framework)

Te dejo mi CE_Table para que lo pruebes en tu equipo. Prueba de sumar la variable y luego activa el script, verás que la variable se establece en 10. Funciona incluso cuando la variable "salta" a otra dirección.

http://www.mediafire.com/?mgzihnw673c719z

Para que funcione la tabla, primero pulsa el botón de sumar (al menos una vez) y ya podrás activar el script, vuelve a pulsar el botón sumar y verás como el valor se transforma en 10. Debería funcionar todas las veces que ejecutes el programa. A partir de aquí ya es sencillo crear un trainer con CE

_____________________

Edit, es posible crear un registersymbol para mostrar en CE la dirección exacta de tu variable, pero eso es algo que no se hacer todavía, si lo descubro te aviso :)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MeTaD en 17 Febrero 2013, 22:17 pm
Eres tremendo hombre! ;-) ;-) ;-) ;-) ¿Por qué supusiste que se podría solucionar con AOBscan?, ¿AOBscan sólo existe en CE?, de ser así, ¿Cuál sería su equivalente en vb o C#?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 17 Febrero 2013, 22:31 pm
Eres tremendo hombre! ;-) ;-) ;-) ;-) ¿Por qué supusiste que se podría solucionar con AOBscan?, ¿AOBscan sólo existe en CE?, de ser así, ¿Cuál sería su equivalente en vb o C#?

Haz lo siguiente, ejecuta tu programa y el CE (sin mi tabla, ejecuta el CE completamente vacío).

1. Busca y encuentra la dirección con tu variable
2. Haz click derecho "Find out what writes to this address"
3. Pulsa el botón de sumar, aparecerá la instrucción:

002A06BE - FF 80 4C010000  - inc [eax+0000014C]

4. Pulsa en Show Disassembler
6. Aparece la instrucción, haz click drecho y copia los bytes:

(http://i.imgur.com/SQhJVKh.png)

7. Vuelve a la ventana principal de CE, pulsa NEW SCAN, Value Type -> Array of Byte
8. En la caja de texto pulsa Ctrl+V y dale a buscar:

(http://i.imgur.com/2h5cJHj.png)

Como ves, esa es la forma "manual" de usar AOBSCAN(), CE nos devuelve una dirección solamente (002A06BE) que curiosamente se corresponde al offset de mi instrucción:

002A06BE - FF 80 4C010000  - inc [eax+0000014C]

---------------------------------

Para automatizar todo esto en un script, se realiza llamando a la función aobscan(), digamos que mi script hace esos pasos anteriores de forma automática y sin que te enteres :)

---------------------------------

Aobscan() es una función interna de CE, no existe equivalente en C o VB, deberías de programarlo tu con las APIs ReadProcessMemory, supongo.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MeTaD en 17 Febrero 2013, 22:38 pm
AoBSCAN significa Array of Bytes scan y también son conocidos como SigScans o Signature Scans...

Ya con estos datos me puse a navegar en internet y conseguí lo siguiente en el foro de CE:

Código:
[ USAGE ] ------------------------------------------------------------------------------
//
// Examples:
//
//      SigScan _sigScan = new SigScan();
//      _sigScan.Process = someProc;
//      _sigScan.Address = new IntPtr(0x123456);
//      _sigScan.Size = 0x1000;
//      IntPtr pAddr = _sigScan.FindPattern(new byte[]{ 0xFF, 0xFF, 0xFF, 0xFF, 0x51, 0x55, 0xFC, 0x11 }, "xxxx?xx?", 12);
//
//      SigScan _sigScan = new SigScan(someProc, new IntPtr(0x123456), 0x1000);
//      IntPtr pAddr = _sigScan.FindPattern(new byte[]{ 0xFF, 0xFF, 0xFF, 0xFF, 0x51, 0x55, 0xFC, 0x11 }, "xxxx?xx?", 12);
//

http://forum.cheatengine.org/viewtopic.php?p=5243058&sid=a83fb95aee8be17a7442f61861e3b004

Un código C# que aparentemente cumple la función de un AoBSCAN... ¿Me podrías decir qué datos poner en cada espacio? no domino completamente HEX ni direcciones de memoria para intentar averiguarlo yo mismo...

---------------------------------------------------

EDIT:

Haz lo siguiente, ejecuta tu programa y el CE (sin mi tabla, ejecuta el CE completamente vacío).

1. Busca y encuentra la dirección con tu variable
2. Haz click derecho "Find out what writes to this address"
3. Pulsa el botón de sumar, aparecerá la instrucción:

002A06BE - FF 80 4C010000  - inc [eax+0000014C]

4. Pulsa en Show Disassembler
6. Aparece la instrucción, haz click drecho y copia los bytes:

(http://i.imgur.com/SQhJVKh.png)

7. Vuelve a la ventana principal de CE, pulsa NEW SCAN, Value Type -> Array of Byte
8. En la caja de texto pulsa Ctrl+V y dale a buscar:

(http://i.imgur.com/2h5cJHj.png)

Como ves, esa es la forma "manual" de usar AOBSCAN(), CE nos devuelve una dirección solamente (002A06BE) que curiosamente se corresponde al offset de mi instrucción:

002A06BE - FF 80 4C010000  - inc [eax+0000014C]

---------------------------------

Para automatizar todo esto en un script, se realiza llamando a la función aobscan(), digamos que mi script hace esos pasos anteriores de forma automática y sin que te enteres :)

---------------------------------

Aobscan() es una función interna de CE, no existe equivalente en C o VB, deberías de programarlo tu con las APIs ReadProcessMemory, supongo.

Gracias! me ha quedado claro cómo se mueve un AoB


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 17 Febrero 2013, 22:44 pm
AoBSCAN significa Array of Bytes scan y también son conocidos como SigScans o Signature Scans...

Ya con estos datos me puse a navegar en internet y conseguí lo siguiente en el foro de CE:

Código:
[ USAGE ] ------------------------------------------------------------------------------
//
// Examples:
//
//      SigScan _sigScan = new SigScan();
//      _sigScan.Process = someProc;
//      _sigScan.Address = new IntPtr(0x123456);
//      _sigScan.Size = 0x1000;
//      IntPtr pAddr = _sigScan.FindPattern(new byte[]{ 0xFF, 0xFF, 0xFF, 0xFF, 0x51, 0x55, 0xFC, 0x11 }, "xxxx?xx?", 12);
//
//      SigScan _sigScan = new SigScan(someProc, new IntPtr(0x123456), 0x1000);
//      IntPtr pAddr = _sigScan.FindPattern(new byte[]{ 0xFF, 0xFF, 0xFF, 0xFF, 0x51, 0x55, 0xFC, 0x11 }, "xxxx?xx?", 12);
//

http://forum.cheatengine.org/viewtopic.php?p=5243058&sid=a83fb95aee8be17a7442f61861e3b004

Un código C# que aparentemente cumple la función de un AoBSCAN... ¿Me podrías decir qué datos poner en cada espacio? no domino completamente HEX ni direcciones de memoria para intentar averiguarlo yo mismo...

Pues sintiéndolo mucho, no tengo ni idea :( Al parecer 0xFF, 0xFF, 0xFF, 0xFF, 0x51, 0x55, 0xFC, 0x11 se traduce como aobscan(FF FF FF 51 55 FC 11) y supongo que la función devuelve la dirección encontrada. Deberías hacer pruebas o preguntar en ese mismo hilo (yo no tengo ni idea de C).

De todas fromas, porqué quieres hacer el trainer en C? CE trae su propio intérprete LUA para generar trainers, en el foro de CE hay muchísimos ejemplos sobre como generar trainers con CE LUA, pudiendo llamar a las funciones internas de aobscan de forma sencilla.

Por cierto, has probado de hacer el aobscan "manual" como te he explicado? Es la forma más sencilla para ver como funciona.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MeTaD en 17 Febrero 2013, 22:54 pm
Pues sintiéndolo mucho, no tengo ni idea :( Al parecer 0xFF, 0xFF, 0xFF, 0xFF, 0x51, 0x55, 0xFC, 0x11 se traduce como aobscan(FF FF FF 51 55 FC 11) y supongo que la función devuelve la dirección encontrada. Deberías hacer pruebas o preguntar en ese mismo hilo (yo no tengo ni idea de C).

De todas fromas, porqué quieres hacer el trainer en C? CE trae su propio intérprete LUA para generar trainers, en el foro de CE hay muchísimos ejemplos sobre como generar trainers con CE LUA, pudiendo llamar a las funciones internas de aobscan de forma sencilla.

Por cierto, has probado de hacer el aobscan "manual" como te he explicado? Es la forma más sencilla para ver como funciona.

Si amigo, lo acabo de hacer y ha resultado como dijiste, el motivo por el cual quiero hacerlo en C# es porque quiero aprender cómo puede manejar la memoria un lenguaje interpretado como lo es C# bajo .net framework... probaré el código que acabo de conseguir y te cuento como me va... ¿Leíste el PM que te mandé?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax 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

(http://www.locomalito.com/images/screenshots/maldita_castilla_04.png)

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


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MeTaD en 18 Febrero 2013, 00:18 am
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

(http://www.locomalito.com/images/screenshots/maldita_castilla_04.png)

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:
Código:
https://mega.co.nz/#!LYV30RAB!bUUSUnvyEJ7xeFdNw8pUXC4lZOR7KizQoMUxt7ikin0

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


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 19 Febrero 2013, 01:17 am
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í:

(http://i.imgur.com/SbyJXE3.png)

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" :)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: 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?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 19 Febrero 2013, 09:12 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


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: OmarHack en 19 Febrero 2013, 16:15 pm
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  ;)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: forever21es2001 en 20 Febrero 2013, 17:44 pm
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.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 20 Febrero 2013, 19:05 pm
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


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: forever21es2001 en 20 Febrero 2013, 22:40 pm
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.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: potrorex en 18 Marzo 2013, 11:44 am
  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>


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 18 Marzo 2013, 19:35 pm
Los billetes en ese juego (y en la mayoría de juegos flash online) están almacenados en el servidor (server-sided), así que no podrás modificarlos con CE.

El script que me comentas usa AOBSCAN, si el flash se actualiza o cambia de versión e sposible que deje de funcionar, por eso no puedes volver a marcar las casillas.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: potrorex en 19 Marzo 2013, 20:02 pm
  Gracias por la aclaracion MadAntrax.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: x4r0r en 20 Marzo 2013, 00:21 am
que hacer en caso que el cheat engine sea detectado ?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MCKSys Argentina en 20 Marzo 2013, 02:47 am
Debuggear y ver cómo lo está detectando. De esta forma se podría modificar el EXE de CE para que no sea detectado más.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 20 Marzo 2013, 08:23 am
que hacer en caso que el cheat engine sea detectado ?

Abre las opciones de CE y cambia el debugger -> VEH

(http://i.imgur.com/KZRxUvc.png)

Otra cosa que puedes probar es abrir el ejecutable de CE con un editor hexadecimal y reemplazar la palabra cheat por otra. Guardas nuevo exe y listo. Funciona :P


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: x4r0r en 21 Marzo 2013, 20:54 pm
es lo que hize desde un princio pero igual me lo detecta ...

 ::)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: alaysma en 1 Abril 2013, 10:37 am
Y como buscarias una memoria que no es barra ni numero ni tiempo? Un ejemplo el 8 ball del facebook el lineguide, en todos lados aparece para que pongas la direccion y la cambies para que se estire la linea (funciona) pero yo quiero saber como se hace, como se buscaria esa direccion o tambien aparece el codigo de line size. El tema es que busque por todos lados y no logro saber como llegan a dicha direccion, alguna ayuda para empezar a testear? Gracias


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: melons en 13 Abril 2013, 10:11 am
Enhorabuena por el magnifico hilo.
Me he registrado solo para felicitarte, es un manual muy completo.
Lo encontre en Sangoogle y lo he leido todo, pues intento hacerme un trainer de un juego un poco antiguo pero veo que a pesar de tus excelentes explicaciones, no estoy a la altura, en el juego encuentro las variables que quiero modificar pero cambian de una partida a la siguiente y no consigo hacerlo, aun asi no dejo de reconocer tu merito con esta magnifico tutorial.
Un saludo.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 21 Abril 2013, 14:01 pm
Y como buscarias una memoria que no es barra ni numero ni tiempo? Un ejemplo el 8 ball del facebook el lineguide, en todos lados aparece para que pongas la direccion y la cambies para que se estire la linea (funciona) pero yo quiero saber como se hace, como se buscaria esa direccion o tambien aparece el codigo de line size. El tema es que busque por todos lados y no logro saber como llegan a dicha direccion, alguna ayuda para empezar a testear? Gracias

Cualquier variable se puede buscar. Lo complicado es cuando el juego o programa no te muestra esa variable por pantalla.

En algunos juegos, la variable se genera de forma aleatoria (sobretodo en juegos de cartas, monedas, azar, etc...) en esos casos utilizo la función interna de Cheat Engine llamada Unrandomize.

Unrandomize es una librería interna de CE que se puede inyectar en un proceso. Dicha librería detecta las API's y funciones más utilizadas por los programas y juegos para generar números aleatorios, permitiendo forzar que SIEMPRE salga el mismo valor generado :)

Para utilizarlo, simplemente marcar Unrandomize en la ventana principal de CheatEngine (parte de la derecha)

Enhorabuena por el magnifico hilo.
Me he registrado solo para felicitarte, es un manual muy completo.
Lo encontre en Sangoogle y lo he leido todo, pues intento hacerme un trainer de un juego un poco antiguo pero veo que a pesar de tus excelentes explicaciones, no estoy a la altura, en el juego encuentro las variables que quiero modificar pero cambian de una partida a la siguiente y no consigo hacerlo, aun asi no dejo de reconocer tu merito con esta magnifico tutorial.
Un saludo.

Gracias.

Puedes indicar el nombre del juego? Por lo que comentas, si el juego cambia el valor de la memoria en cada ejecución, puedes utilizar 2 cosas:

Utilizar pointers (no está explicado en éste tutorial)
Utilizar AutoAssemble Scripts (sí que lo he explicado) y es bastante fácil.

De todas formas, si me das el nombre del juego, te lo genero yo a modo de ejemplo para que aprendas


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: corsario)bw en 23 Abril 2013, 06:05 am
Buenas, te quiero felicitar, es una excelente guia para principiantes (creo que soy uno de ellos), si bien uso CE hace mucho, pero solo para cosas simples, nunca hice debug y tampoco inyecte, hasta ahora :D..

Pregunta, me puse a hacer lo del juego maldita castilla, lo de las vidas infinitas lo hice bien, pude crear el trainer, pero lo que no puedo es parar el tiempo.. no entiendo estas lineas

fistp qword ptr [ecx+edx]
ret
nop

No se que tengo que modificar en esas lineas para lograr que el tiempo se detenga


He visto assembler, pero hace 2 años y la verdad que recuerdo poco y nada :(

Saludos !


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 23 Abril 2013, 13:57 pm
Buenas, te quiero felicitar, es una excelente guia para principiantes (creo que soy uno de ellos), si bien uso CE hace mucho, pero solo para cosas simples, nunca hice debug y tampoco inyecte, hasta ahora :D..

Pregunta, me puse a hacer lo del juego maldita castilla, lo de las vidas infinitas lo hice bien, pude crear el trainer, pero lo que no puedo es parar el tiempo.. no entiendo estas lineas

fistp qword ptr [ecx+edx]
ret
nop

No se que tengo que modificar en esas lineas para lograr que el tiempo se detenga


He visto assembler, pero hace 2 años y la verdad que recuerdo poco y nada :(

Saludos !

Bueeeeeno, primero de todo gracias. Me alegra saber que los usuarios aprender cosas nuevas como los scripts, inyectar, etc...

El tiempo en maldita castilla tiene truco. Puedes buscar la variable y congelarla sin problemas, pero a la que intentas trabajar con la instrucción fistp qword ptr [ecx+edx] te cargas la pila y el juego se corrompe, verdad?

Estuve tiempo dedicándome a ese tema y al final lo pude solucionar con punteros estáticos, el puntero es el siguiente:

[[Castilla.exe"+00286AB4]+4]+150

Si sabes agregarlo a tu tabla de CE, tendrás un puntero que apuntará siempre a la variable del tiempo, aunque reinicies el juego. Para descubrir ese puntero he tenido que usar una herramienta llamada Multi-Level Scan Pointer. Ahora no tengo tiempo para explicarlo, pero mañana os posteo un tutorial para utilizar punteros :)

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: corsario)bw en 23 Abril 2013, 14:39 pm
Bueeeeeno, primero de todo gracias. Me alegra saber que los usuarios aprender cosas nuevas como los scripts, inyectar, etc...

El tiempo en maldita castilla tiene truco. Puedes buscar la variable y congelarla sin problemas, pero a la que intentas trabajar con la instrucción fistp qword ptr [ecx+edx] te cargas la pila y el juego se corrompe, verdad?

Estuve tiempo dedicándome a ese tema y al final lo pude solucionar con punteros estáticos, el puntero es el siguiente:

[[Castilla.exe"+00286AB4]+4]+150

Si sabes agregarlo a tu tabla de CE, tendrás un puntero que apuntará siempre a la variable del tiempo, aunque reinicies el juego. Para descubrir ese puntero he tenido que usar una herramienta llamada Multi-Level Scan Pointer. Ahora no tengo tiempo para explicarlo, pero mañana os posteo un tutorial para utilizar punteros :)

Saludos

Exacto, el juego se corrompe

Voy a intentar lo que me dijiste y espero con ansias el tuto de punteros :D

Otra cosita, es posible hacer un trainer para algun juego online de facebook o de esas paginas de juegos flash? No lo probe, tendria que probarlo... Con el CE he podido adulterar puntajes, vidas,etc.. (mientras no se ejecuten en servidor, ya que si es asi, solo modificaria lo que me muestra y no la variable real, yo le llamo modificar una mask, no se si estara bien dicho)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 23 Abril 2013, 14:52 pm
Exacto, el juego se corrompe

Voy a intentar lo que me dijiste y espero con ansias el tuto de punteros :D

Otra cosita, es posible hacer un trainer para algun juego online de facebook o de esas paginas de juegos flash? No lo probe, tendria que probarlo... Con el CE he podido adulterar puntajes, vidas,etc.. (mientras no se ejecuten en servidor, ya que si es asi, solo modificaria lo que me muestra y no la variable real, yo le llamo modificar una mask, no se si estara bien dicho)

En teoría no.

Cualquier juego online (o server-sided) no podrá ser modificado por CE, independientemente que sea de Facebook o un ejecutable standar.

Lo que sí es cierto, que hay ciertos juegos online que no están bien programados, y algunas variables importantes se almacenan en local, pudiendo ser modificadas. En ese casi sí que podrás usar CE


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: corsario)bw en 23 Abril 2013, 22:20 pm
Hola gente, para practicar me baje otro juego de la pagina que vos propusiste MadAntrax :D.. les dejo un juego para que se bajen y traten de hacer un trainer

http://www.locomalito.com/viriax.php (link de descarga abajo de todo)


Mi trainer (humilde): https://mega.co.nz/#!hlk1ySYY!Sy1UQhShQLoQJGSEANNcY0kQkyI3ifldJ2QFnFkZuGQ


Mi CT (+humilde :P): https://mega.co.nz/#!8s9UQaqa!eLhjfwLM6-0kpGurJxvg_gkiLB8HfCnvEMp_0zJ1tiE


Use pointer scan para probar otra variante

Saludos :D



Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: liojus en 30 Abril 2013, 16:18 pm
hola la verdad que tu manera de explicar es genial, entendi todo de una, solo que en el juego que yo juego alas del destino no me funcion (hay un boton para gastar puntos q supongo tiene el mismo sistema que el de gastar dinero) y no lo he probado aun, pero por las dudas te pido si por favor no podes enseñarme a utilizar CE PARA ESE JUEGO (WWW.WODES.IGG.COM) YA Q PIDE MCHO DINERO PARA CMPRAR COSAS SI DE ALGUNA MANERA ME PODES AYUDAR TE LO AGRADECERIA, MUCHAS GRACIAS POR TUS APORTES Y YA ME FIJE EN LA PAGINA QUE VAS A ABRIR PRONTO FELICIDADES Y AHI ESTARE

LIOJUS


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: liojus en 30 Abril 2013, 16:19 pm
hola la verdad que tu manera de explicar es genial, entendi todo de una, solo que en el juego que yo juego alas del destino no me funcion (hay un boton para gastar puntos q supongo tiene el mismo sistema que el de gastar dinero) y no lo he probado aun, pero por las dudas te pido si por favor no podes enseñarme a utilizar CE PARA ESE JUEGO (WWW.WODES.IGG.COM) YA Q PIDE MCHO DINERO PARA CMPRAR COSAS SI DE ALGUNA MANERA ME PODES AYUDAR TE LO AGRADECERIA, MUCHAS GRACIAS POR TUS APORTES Y YA ME FIJE EN LA PAGINA QUE VAS A ABRIR PRONTO FELICIDADES Y AHI ESTARE

LIOJUS
MI MAIL PARA Q NOS COMUNIQUEMOS (julio1014@hotmail.com)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Sentimiento14 en 1 Mayo 2013, 00:21 am
Muy bueno me entere de todo a la primera
muy recomendable para novatos como yo en craking de juegos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: corsario)bw en 1 Mayo 2013, 16:58 pm
hola la verdad que tu manera de explicar es genial, entendi todo de una, solo que en el juego que yo juego alas del destino no me funcion (hay un boton para gastar puntos q supongo tiene el mismo sistema que el de gastar dinero) y no lo he probado aun, pero por las dudas te pido si por favor no podes enseñarme a utilizar CE PARA ESE JUEGO (WWW.WODES.IGG.COM) YA Q PIDE MCHO DINERO PARA CMPRAR COSAS SI DE ALGUNA MANERA ME PODES AYUDAR TE LO AGRADECERIA, MUCHAS GRACIAS POR TUS APORTES Y YA ME FIJE EN LA PAGINA QUE VAS A ABRIR PRONTO FELICIDADES Y AHI ESTARE

LIOJUS

Buenas, no es posible la edicion de valores en juegos online, ya que los valores se almacenan en servidor y no en cliente.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Dleinad en 26 Mayo 2013, 01:36 am
Heeeyyy me parecen bastante bien tus tutos, muy bien explicados, asi uno aprende rapido. Aunque tambien me gustaria que si para ti no es mucha molestia
Pudieras hacer tutos con los punteros o mas tutos con el programa, de ante mano gracias por tu buen trabajo.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: vitoguit en 11 Junio 2013, 06:43 am
Deja darte las gracias por el tuto esta filete, me gusto ya que fuiste de menos a mas manteniendo la tensión siempre y no  apresurandote, si bien ya me doy cuenta porque los trainer no funcionan con cualquier exe. o sea coregime si me equivoco, un trainer creado con un exe crackeado de repack por ejemplo no correrá en un exe original de un juego completo ya que se han compilado diferente, o no. si me puedes sacar esa duda. Saludos bro. y gracias por compartir


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: sandro20 en 23 Julio 2013, 17:41 pm
Hola Amigo.!!  yo tengo un problema U.u El escript para un juego.!! lo hice bien.!!  Pero para los demas juegos tengo un problema U.u que no me salen los adrres estaticos U.u

En el primer hack me salio el adrres estatico  "game.exe"+1456 Que me funciona bien,
y en los demas Escaneos solo me sale.!   un adrres normal y corriente 08484844
Funciona normal el hacker.!1 Pero al Reiniciar el juego.!! el script deja de funcionar y el adrres cambia.!! eso lo hize usando el metodo fint out what write to this adrres.!! hey tratado con varios adrres U.u  osea que el haker solo funciona temporalmente no aye otro metodo mas especifico de encontrar mas estatico o como lo ago.!! 



Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: mandraker2 en 26 Julio 2013, 19:36 pm
hay aguna manera de editar la memoria con juegos JAVA? porque ami no me deja editar nada en varios juegos java (en todos los que probe) edito todo los pointers cualquiercosa y vuelve a su estado anterior  "en el memory viewer"


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: GAMEOVER2.0 en 22 Agosto 2013, 23:16 pm
buenas amigos, he estado buscando tutoriales para el CE y este me aclaro muchas dudas, esta muy bien explicado.

bueno ahora mi pregunta es, para los juegos online funciona?, he estado provando con el eden eternal para tratar de aumentar oro, ya he escaneado con la opcion de incrementar y decrementar, seleccionando "all" en el tipo de valor, hasta ahora me salieron unas cuantas address que cambian al momento de realizar movimientos con el oro, tres de ellas mantienen el valor que muestra el juego mientras que als demas tienen valores diferentes pero que cambian al mismo tiempo que las demas.

he tratado de cambiarles valores para aumentar oro, pero solo me cambia el valor que muestra en la interface del juego, si quiero gastarlo o enviarlo a otro personajes simpemente no me deja, me marca que no tengo la cantidad necesaria.

y ahora q estaba leyendo los comentarios, me encuentro con uno que dice que los valores los guarda el servidor, ahora como podría hacerle para cambiar los datos en el servidor?

supongamos que venda un item que cuesta 1 de oro pero que al mandar datos al servidor me lo cuente como si fueran 100 de oro.

sera posible hacer esto?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MCKSys Argentina en 23 Agosto 2013, 00:26 am
supongamos que venda un item que cuesta 1 de oro pero que al mandar datos al servidor me lo cuente como si fueran 100 de oro.

sera posible hacer esto?

Si y no.

Necesitas analizar la info que manda tu cliente al server (Con wireshark lo puedes hacer).

Quizas del analisis surja alguna vulnerabilidad que te permita inyectar info que sirva para tus fines.

Saludos!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: .:UND3R:. en 23 Agosto 2013, 02:27 am
otra alternativa es WPA Pro


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: GAMEOVER2.0 en 24 Agosto 2013, 09:43 am
ok gracias, buscare algunos tutoriales e intentare, espero me salga o almenos aprender en el intento...


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 24 Agosto 2013, 18:33 pm
Olvidad usar CE para modificar variables tipo oro, vida, puntos, experiencia, etc... de cualquier juego online, son server-sided.

Las pocas variables de los juegos online que están en client-sided suele ser las coordenadas de la posición de tu personaje (teleport hack) o los timers que controlan los contadores de velocidad de movimiento, velocidad de ataque etc (speed hack). Pero ojo, ésto no es extrapolable al 100% de los juegos online... lo normal, si hablamos de juegos online "famosos y caros" como podría ser league of legends, WoW, etc... tienes el 100% de las variables en server-side.

Un ejemplo de juego conline que almacena variables en local? Cube World :P


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 27 Agosto 2013, 20:48 pm
Hola MadAntrasx y a tod@s los demas.

tengo una duda, y es que para crear un trainer con un truco
 "modo dios" despues de segir tus pasos llego a un punto
que si lo pongo en modo dios los enemigos tambien son indestructibles.

este es el scrip creado por CE:
Código:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
movss [ecx+00000E38],xmm0

exit:
jmp returnhere

"rerev.exe"+2CAAC4:
jmp newmem
nop
nop
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"rerev.exe"+2CAAC4:
movss [ecx+00000E38],xmm0
//Alt: db F3 0F 11 81 38 0E 00 00

y la info extra:
Código:

006CAABD  - xorps xmm0,xmm0
006CAAC0  - cvtsi2ss xmm0,xmm0
006CAAC4  - movss [ecx+00000E38],xmm0 <<
006CAACC  - ret 0004
006CAACF  - int 3

move scalar single-fp
The value of the pointer .....

EAX=000003E8   EDX=006AC2A0   EBP=2C30FD44
EBX=00000000   ESI=1FAA0060     ESP=2C30FC08
ECX=1FAA0060   EDI=1FAA0060    EIP=006CAACC


para no recibir daño lo que hago es:
Código:
originalcode:
//movss [ecx+00000E38],xmm0
pero eso hace que los malo tampoco reciban daño.

me mandastes un pequeño ejemplo para que modificara el codigo:

Código:

......
funcion RestarVida(jugador, vida)
.....

jugador: CALL RestarVida(player, -5)
enemigo: CALL RestarVida(enemigo, -5)

.....

SI jugador = enemigo {
   RestarVida(enemigo, -5)
} SI NO {
   RestarVida(player, 0)
}
...



RestarVida(player, -5) y  RestarVida(enemigo, -5) se declaran en la funcion CALL con el mismo nombre? osea, "CALL"
SI y SI NO seria lo mismo que un IF ELSE pero en español?

Sabrias modificar mi scrip con tu codigo?

El juego en si es el Resident Evil Revelation por si ayuda en algo este dato.


edito:

He intentado esto:
Código:


[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:

CALL RestarVida(player,-5)
CALL RestarVida(enemigo,-5)
SI jugador = enemigo {
   Restavida(movss [ecx+00000E38],xmm0)
   } SI NO {
    Restavida(movss [ecx+00000E38],0)
   }


exit:
jmp returnhere

"rerev.exe"+2CAAC4:
jmp newmem
nop
nop
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"rerev.exe"+2CAAC4:
movss [ecx+00000E38],xmm0
//Alt: db F3 0F 11 81 38 0E 00 00

pero hay algo o todo mal y me dá este error:

"Error in line 13 (CALL RestarVida(player,-5)):This
instruction can't be compiled"


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 27 Agosto 2013, 22:45 pm
Bueno, llegados a éste punto, toca explicar uno de los puntos más divertidos de Cheat Engine, diseccionar estructuras.

El problema que comenta nuestro amigo nanduky por desgracia es muy común en los juegos actuales. Imaginemos que encontramos la dirección de memoria donde el juego almacena nuestra vida, usamos un "find out what writes to this address" y obtenemos una dirección similar a la siguiente:

SUB [EAX+10],1

Esa línea, cada vez que es ejecutada, resta 1 a la dirección de EAX+10. Una primera tentación que podemos tener es NOPEAR esa línea o cambiarla por un

ADD [EAX+10],1

Consiguiendo así que cada vez que nos golpeen en el juego, la vida aumentará. El problema viene cuando la línea de ADD [EAX+10],1 que has modificado también se ejecuta sobre las direcciones de memoria que almacenan la vida de los ENEMIGOS (que horror! hemos hecho un cheat que pone a nuestros enemigos invencibles!!)

Eso ocurre porque el programador del juego utiliza la misma función para modificar la vida tanto del PLAYER como de los ENEMIGOS, lo que hemos de hacer en éste caso es:

  • Obtener los registros bases de las estructuras
  • Diseccionar las estructuras
  • Buscar un offset que identifique cada estructura
  • Montar un script en ASM que me permita condicionar el cheat

Como se hace? bueno, lo mejor es explicarlo con un ejemplo REAL. Iniciamos nuestro Cheat Engine 6.3, en la ventana principal pulsamos HELP -> TUTORIAL

(http://i.imgur.com/hteD5za.png)

Ésto cargará un tutorial la mar de chulo que sirve para practicar, tiene 9 pruebas (recomiendo hacerlas todas) pero como no tenemos tiempo, usaremos el botón SKIP para ir directo a la prueba número 9:

(http://i.imgur.com/NP5Adrb.png)

(http://i.imgur.com/foDWRTV.png)

Como podéis ver, el tutorial simula un videojuego con 4 jugadores, 2 AMIGOS y 2 ENEMIGOS. Curiosamente la vida de los AMIGOS es 100 y los ENEMIGOS 500. Para completar el tutorial tenemos que pulsar el botón RESTAR GAME AND AUTOPLAY y conseguir que ganen los AMIGOS. El sistema de autoplay es una lucha por turnos, en cada turno se resta un punto. Si lo intentas a la primera, verás que nuestros jugadores (Player1 y Player 2) se quedan sin vida mientras los enemigos tienen 400 puntos restantes...

Lo primero que hay que hacer es obtener las 4 direcciones que corresponde a la VIDA de cada uno de los jugadores, ya os avanzo que la vida es del tipo FLOAT, aquí os dejo un pantallazo con mis 4 direcciones, he editado el nombre a p1, p2, p3, p4 para que se vea fácil:

(http://i.imgur.com/rzhj2wp.png)

Una vez que las tenemos, hacemos click derecho sobre la dirección p1 (Player 1) y seleccionamos "find out what writes to this address", aceptamos el mensaje del debugger y a continuación pulsamos en ATTACK del Player1 para que la vida disminuya, automáticamente el debugger nos soltará que instrucción ha modificado la vida de Player1:

(http://i.imgur.com/9vJU0kT.png)

Vamos a observar mi ejemplo:

3349BC = Dirección vida p1
EBX = 3349B8

La instrucción mov [ebx+04],eax mueve el contenido de EAX a la dirección 3349B8+04 (Esa dirección es igual a 3349BC, mi vida!).

Está clarisimo que esa instrucción es la que modifica la vida de p1. Si yo ahora nopeo esa instrucción o la modifico, conseguiré que p1 sea invencible, el problema es que esa misma instrucción tambien modifica las vidas de p2, p3 y p4, por lo que TODOS los 4 jugadores serían invencibles. Ahora la pregunta del día:

Como saber si una instrucción modifica más de una dirección de memoria?

Hay 2 respuestas, una sería modificando (o nopeando) la instrucción y probar a ver que ocurre, la otra es usar una herramienta de cheat engine que te avisa. Para ello pulsamos el botón SHOW DISSAMBLER, automáticamente se abre el código desensamblado y nos señala nuestra instrucción. Pulsamos botón derecho y seleccionamos: Find out what addresses this instruction accesses

(http://i.imgur.com/Js5xiTC.png)

Nos aparece una ventana pequeña vacía, seleccionar abajo del todo el tipo de dirección, en nuestro caso os recuerdo que son FLOAT, ahora volvemos al juego (tutorial) y pulsamos 1 vez sobre los 4 botones de ATTACK, para que la vida se modifique en los 4 Players, al volver a la ventanita nueva observaremos lo siguiente:

(http://i.imgur.com/CLbCDIg.png)

wooow! Que significa? Pues es sencillo, CE me ha dicho las direcciones de memoria que han sido modificadas por la instrucción mov [ebx+04],eax Bien, aquí tenemos un problema, como solucionamos ésto? Vamos a diseccionar las 4 estructuras:

Abrid un notepad o Bloc de Notas y apuntar el nombre de las 4 variables (p1, p2, p3, p4) y al lado la dirección de memoria de cada una de ellas. Ahora volvemos a la ventanita y pulsamos botón derecho en el primer registro, seleccionamos la primera opción SHOW REGISTER STATES (Ctrl+R), aparece la siguiente ventana:

(http://i.imgur.com/8dZaEvk.png)

Miramos la instrucción maldita mov [ebx+04],eax está claro que la estructura es EBX, copiamos el valor de EBX (puedes hacer click derecho y se copia), lo pegamos en el Bloc de Notas, al lado de p1

Repetimos el proceso para los 4 registros, en cada uno de ellos obtenemos el valor EBX y lo copiamos en el Bloc de Notas tal que así:

(http://i.imgur.com/cDqMCxC.png)

La primera columna es el nombre, la segunda es la dirección de cada jugador y la tercera columna es el valor EBX de cada jugador. Pulsamos en STOP y CLOSE para cerrar la ventanita, volveremos a la ventana grande de DISSEMBLER. Seleccionamos TOOLS -> DISSECT DATA / STRUCTURES

(http://i.imgur.com/KsobbRk.png)

Aparece una ventana más grande, vacía con una dirección de ejemplo en la parte superior:

(http://i.imgur.com/w8Siylp.png)

Utilizando el primer menú FILE, añadimos un GRUPO, en cada GRUPO añadimos 2 direcciones de memoria. Puedes asignar nombres a los grupos, así es más sencillo todo. Cada grupo representa los AMIGOS y ENEMIGOS, en total tenemos 4 direcciones, 2 direcciones de cada TIPO/GRUPO:

(http://i.imgur.com/MTEKuf1.png)

Ahora, en esas 4 cajas de texto, introducimos los valores del Bloc de Notas, introducimos los valores EBX. Los valores EBX de p1 y p2 los pones en el mismo grupo, y el resto (p3, p4) los pones en el segundo grupo, así:

(http://i.imgur.com/tRkPJCX.png)

Pulsamos menú STRUCTURE -> DEFINE NEW, puedes ponerle el nombre que quieras, en mi caso VIDA, el resto de opciones las he dejado por defecto:

(http://i.imgur.com/4Z9geGs.png)

(http://i.imgur.com/7q71yex.png)

(http://i.imgur.com/XMy0zg6.png)

Alaaaaaa, ésto que es? Bueno, ésta maravillosa herramienta nos ha diseccionado las 4 estructuras, el hecho de haber utilizado GRUPOS para separar los diferentes tipos de jugadores nos permite analizar la disección con algo de ventaja, miremos el código de colores:

(http://i.imgur.com/ym8CUmx.png)

Según la instrucción [ebx+04] es donde se guarda la vida. Si miramos en la disección, en la línea +0004 aparece la vida de los 4 jugadores. Si miramos más, en +0015 se almacena el nombre de cada uno. Bien!! Ahora miraremos los registros morados, ya que según el código de color, el morado diferencia los GRUPOS, curiosamente +0010 tiene el valor 1 si es AMIGO y el 2 si es ENEMIGO. Está claro que éste juego utiliza EBX+10 para saber si esa estructura (Player) es un jugador real o un Mob (enemigo). Ahora cerramos todo, generamos un AA Script y lo modificamos tal que así:

(http://i.imgur.com/oxjmxq5.png)

No voy a entrar a explicar ASM, pero el razonamiento es sencillo. Ejecuto un CMP para comparar EBX+10, si es 1 (significa que es una estructura de Player AMIGO) salto a la zona FRIEND (la zona friend establece la vida a 100 siempre), si EBX+10 no es 1, continuo hasta la zona ORIGINAL (restar vida). Guardo el script, lo activo, le doy a AUTOPLAY y compruebo que el cheat funciona a la perfección.

================================

Bueno, pues hasta aquí la explicación de hoy. Como podéis ver CE tiene herramientas MUY divertidas que permiten al cracker poder solventar los problemas más "raros" en un juego. Ésta teoría la he usado para hacer cheats en juegos como FTL y Roger Legacy, por ejemplo.

Por favor, intentad realizar el tutorial 9 tal y como he explicado, si algo no os sale o no se entiende me avisáis y lo explico de nuevo, me duelen ya los dedos después de picar todo éste texto, fotos y colores, pero si surgen dudas os las resolveré.

Saludos :D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 28 Agosto 2013, 00:08 am
Como te lo curras!!!  ;-) ;-) ;-)

Yo me pierdo donde dices "Ahora cerramos todo, generamos un AA Script y lo modificamos tal que así:
"

que está despues de lo que explicas de los colores.

de que direccion lo generamos???
Cualquiera de las 4 vale??


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 28 Agosto 2013, 00:13 am
Como te lo curras!!!  ;-) ;-) ;-)

Yo me pierdo donde dices "Ahora cerramos todo, generamos un AA Script y lo modificamos tal que así:
"

que está despues de lo que explicas de los colores.

de que direccion lo generamos???
Cualquiera de las 4 vale??

Esta explicado en la primera pagina, ahora no estoy en mi PC, mañana te contesto con tu duda resuelta y detallada. chao


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 28 Agosto 2013, 00:17 am
vale, pero me refiero que si para quenerar el AA Script vale cualquiera de las cuatro adress, las de p1, p2, p3 o p4.



Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 28 Agosto 2013, 10:35 am
vale, pero me refiero que si para quenerar el AA Script vale cualquiera de las cuatro adress, las de p1, p2, p3 o p4.

El script de Auto-Assembler (AA Script) lo puedes generar de la dirección que quieras (p1, p2, p3, p4) ya que las 4 direcciones son modificadas por la misma instrucción. Simplemente vuelve a la ventana de DISSAMBLER, selecciona la instrucción que disminuye la vida (mov [ebx+04],eax) y pulsas Ctrl+A para abrir el editor de AA-Script, añades las 2 plantillas y modificas el código como en la imagen.

Ahora estoy trabajando y no puedo incluir capturas, cuando llegue a casa redactaré de nuevo la última parte para que hayan dudas

:D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 28 Agosto 2013, 10:38 am
Vale, pero por mi no hace falta, ya me lo has aclarado.
Gracias!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 28 Agosto 2013, 11:57 am
Vale, pero por mi no hace falta, ya me lo has aclarado.
Gracias!


He modificado la parte final del tutorial, con un script ASM mejorado. Si lo pruebas verás como la vida de los jugadores se mantiene en 100 mientras la vida de los enemigos decrece hasta alcanzar 0 (Es más correcto hacerlo así).

Adjunto tambien la CT que soluciona el Paso 9, por si alguien quiere probarlo directamente

http://www.mediafire.com/?5zbu911a4cn9a0p


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 29 Agosto 2013, 18:34 pm
Una (otra) pregunta.

He estado haciento los tutoriales del CE y llegado al al 8 he empezado a mirar videos del youtube donde explicaban paso por paso como hacerlo, y todos llegan al final a locaizar una dirección estaica de color verde. Yo haciendo los mismos pasos, nunca me salen direcciones verdes.

¿Hay que configurar de alguna manera el CE para que las direcciones estaticas salgan verdes? :(


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 29 Agosto 2013, 22:25 pm
Una (otra) pregunta.

He estado haciento los tutoriales del CE y llegado al al 8 he empezado a mirar videos del youtube donde explicaban paso por paso como hacerlo, y todos llegan al final a locaizar una dirección estaica de color verde. Yo haciendo los mismos pasos, nunca me salen direcciones verdes.

¿Hay que configurar de alguna manera el CE para que las direcciones estaticas salgan verdes? :(

Postea el video-tut que has seguido.

En teoría, la forma correcta de solucionar el paso 8 es utilizando la herramienta de Multilevel pointer scan.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 30 Agosto 2013, 08:14 am

http://www.youtube.com/watch?v=31LevdEeky4

El video en si no importa, el tutorial lo acabo completando, lo que no consigo es llegar asta ls direcciones verdes. Y es una buena ayuda saber si una direccion es estatica cuando te aparece verde, y ami me salen todas negras.

¿se puede comfigurar el CE de alguna manera para que salgan verdes?

Yo he estado probando varias cosas y he tenido que reinstalarlo varias veces  >:(

Otra cosa, siguiendo tu tutorial 9, cuando llego al final, y modifico el AA Script, si le doy a ejecutar y luego a Attack se me cierra el programa con un error el programa dejó de funcionar.
Si le doy a assign to current cheat table y marco la casilla, me ocurre lo mismo.


(tenia que asignarlo a la tabla antes de modifircalo.)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 1 Septiembre 2013, 11:04 am
Nadie sabe como se hace para que salgan la direcciones de color verde?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MCKSys Argentina en 1 Septiembre 2013, 18:55 pm
Cita de http://wiki.cheatengine.org/index.php?title=Cheat_Engine:Memory_Scanning (http://wiki.cheatengine.org/index.php?title=Cheat_Engine:Memory_Scanning)

"There are two types of addresses in this list: Green ones and black ones. Green means static addresses."

Eso salió usando Google...  :P

Saludos!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 2 Septiembre 2013, 00:11 am
Cita de http://wiki.cheatengine.org/index.php?title=Cheat_Engine:Memory_Scanning (http://wiki.cheatengine.org/index.php?title=Cheat_Engine:Memory_Scanning)

"There are two types of addresses in this list: Green ones and black ones. Green means static addresses."

Eso salió usando Google...  :P

Saludos!

Vale gracias, pero me quedo igual...
No se ingles, y la traduccion de google no me aclara nada.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MCKSys Argentina en 2 Septiembre 2013, 00:14 am
No se ingles, y la traduccion de google no me aclara nada.

Si vas a usar un PC, NECESITAS saber ingles. No lo veo como algo opcional...

Saludos!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 2 Septiembre 2013, 04:22 am
Si vas a usar un PC, NECESITAS saber ingles. No lo veo como algo opcional...

Saludos!
Pues entonces lo tendré que vender.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MCKSys Argentina en 2 Septiembre 2013, 17:49 pm
Pues entonces lo tendré que vender.

Es más fácil aprender inglés...  :¬¬


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Musazo en 8 Septiembre 2013, 19:06 pm
En el gta samp no me funciona lo del dinero :(

Cuando logro encontrar el codigo del dinero comprando cosas en la tienda de armas resulta que el dinero está compuesto por 3 codigos. Y no entiendo porque.

(http://img819.imageshack.us/img819/6724/puvx.jpg)

Cuando intento hacer lo del tutorial con el AA para que cuando compre algo en vez de restarse me añada más dinero no funciona, me sigue restando. Esto siempre lo intento con el primer codigo que sale en la lista, con los demás cuando compro un arma en vez de salirme en count 1, me salen números aleatorios por ejemplo 56 o cosas así.

Código:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
add ax,A
mov [ebp+gta_sa.exe+77CE50],ecx

exit:
jmp returnhere

06890004:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
06890004:
mov [ebp+gta_sa.exe+77CE50],ecx
//Alt: db 89 8D 50 CE B7 00


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 9 Septiembre 2013, 00:21 am
Ya veo donde está el error, has añadido ADD ax,A al script. Lo que expliqué en mi tutorial era solo un ejemplo, cada juego necesita modificarse a su modo. Prueba lo siguiente:

Código:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
mov [ebp+gta_sa.exe+77CE50],f423f

exit:
jmp returnhere

06890004:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
06890004:
mov [ebp+gta_sa.exe+77CE50],ecx
//Alt: db 89 8D 50 CE B7 00

De todas formas necesitaría ver el ejemplo completo, si no me he equivocado el script te dará 999999 $. Si no te funciona postea el dump completo cuando salta el debugger así como las instrucciones de arriba antes del mov [ebp+gta_sa.exe+77CE50],ecx

Por último veo que el juego utiliza memoria relativa. Si quieres complicar un script cerrado (o un trainer) tendrás que usar AOBSCAN()

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Musazo en 9 Septiembre 2013, 11:13 am
Funcionó a la perfección muchas gracias  ;-)
Lo de la memoria relativa ya no sé que es, si me pudieras explicar de alguna forma o pasarme un link para aprender sobre ello molaría.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 9 Septiembre 2013, 15:09 pm
Funcionó a la perfección muchas gracias  ;-)
Lo de la memoria relativa ya no sé que es, si me pudieras explicar de alguna forma o pasarme un link para aprender sobre ello molaría.

Bieeeeen!! Pero lo más importante, ¿has entendido porqué mi script funciona? f423f = 999999 (HEX).

Lo de la memoria relativa se sabe mirando el AA script que se ha generado, en tu caso la dirección del salto es 06890004:

Cuando aparece una dirección numérica se dice que es relativa, ese mismo juego en mi PC se podría ejecutar en la dirección 06790004: (en ese caso el script dejaría de funcionar). Si un programa/juego utiliza dirección absolutas lo podrás comprobar porque aparece algo parecido a lo siguiente "moneybag_tutorial.exe"+2C19:

Si necesitas cerrar un script o trainer en un juego con dirección relativas, tendrás que usar AOBSCAN(), los bytes a buscar aparecen en el comentario del propio AA (89 8D 50 CE B7 00).

Tengo pensado hacer un ejemplo con tutorial sobre la detección de memoria relativa y como solucionarlo con AOBSCAN(), pero por el momento estoy ocupado en otros proyectos y no tengo tiempo.

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 9 Septiembre 2013, 15:14 pm
Sigo sin poder ver las direcciones estáticas de color verde, si alguien sabe como solucionarlo le agradecería la ayuda.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Musazo en 9 Septiembre 2013, 17:08 pm
Sí, de hecho probé yo mismo con otros códigos que no fuera el que me dijiste hehé y funciona perfecto.  ::)

Ahora a ver si puedo hacer cosas más complicadas que eso.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Maurider en 9 Septiembre 2013, 23:13 pm
Hola excelente aporte, te queria preguntar como se tendria que hacer el script en un juego en el que son varios personajes los que tienen vida y queres que todos la tengan infinita?  Por ej. el Left 4 Dead, porque haciendolo de la manera comun solo al que controlas la tiene, y estuve probando scripts pero todos quedan con vida infinita, incluidos los zombis, y cuando cierro y vuelvo a abrir el juego ya no funcionan.
Espero puedas ayudarme, saludoss!!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 9 Septiembre 2013, 23:26 pm
Hola excelente aporte, te queria preguntar como se tendria que hacer el script en un juego en el que son varios personajes los que tienen vida y queres que todos la tengan infinita?  Por ej. el Left 4 Dead, porque haciendolo de la manera comun solo al que controlas la tiene, y estuve probando scripts pero todos quedan con vida infinita, incluidos los zombis, y cuando cierro y vuelvo a abrir el juego ya no funcionan.
Espero puedas ayudarme, saludoss!!


Me parece que esto ya lo explicó. De todas formal el tutorial que trae el cheat engine viene con un caso similar.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 9 Septiembre 2013, 23:37 pm
Hola excelente aporte, te queria preguntar como se tendria que hacer el script en un juego en el que son varios personajes los que tienen vida y queres que todos la tengan infinita?  Por ej. el Left 4 Dead, porque haciendolo de la manera comun solo al que controlas la tiene, y estuve probando scripts pero todos quedan con vida infinita, incluidos los zombis, y cuando cierro y vuelvo a abrir el juego ya no funcionan.
Espero puedas ayudarme, saludoss!!


Léete la pagina 6, está perfectamente explicado: http://foro.elhacker.net/ingenieria_inversa/tutorial_usar_cheat_engine_para_modificar_juegos_inyeccion_de_codigo-t382181.75.html

Tienes que diseccionar la estructura y conseguir diferenciar cuando el código modifica un player o un enemigo.

nanduky: Las direcciones verdes aparecen solas, cuando CE detecta una estática la señala en verde. De todas formas yo casi nunca las encuentro y jamás se utilizan. Todo lo puedes sacar con AA script's, punteros y AOBSCAN


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: nanduky en 9 Septiembre 2013, 23:40 pm
...nanduky: Las direcciones verdes aparecen solas, cuando CE detecta una estática la señala en verde. De todas formas yo casi nunca las encuentro y jamás se utilizan. Todo lo puedes sacar con AA script's, punteros y AOBSCAN

Esperaremos a que tengas tiempo y hagas ese tutorial que tienes pendiente... :xD


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Musazo en 11 Septiembre 2013, 19:08 pm
Ahora traigo otra cuestión, a ver si es que de alguna forma se puede hacer.

1)Yo en el Gta San andras o en el samp pego un salto con el vehículo y por ejemplo me dan 120$ supongamos.
2)Busco esa cantidad con cheat engine, obviamente me salen 100 codigos.
3) Pego otro salto pero esta vez me dan 40$, vuelvo a buscar en cheat engine, encuentro el codigo y lo paso abajo.
4) Ahora puedo modificar el valor de ese codigo que se supone que es el dinero que me han dado cuando he saltado, pero obviamente no me sirve de nada.

¿Hay alguna forma de hacer que en el juego  se active esto sin necesidad de hacer un salto? Activarlo y que me de la cantidad que quiera sin saltar pero que me lo de como si hubiera hecho un salto. ¿O tal vez puedo hacer que cada vez que salte me de 999.999$ por ejemplo? Ahí lo dejo XD


-Aquí me dio los tres codigos que son el dinero que me da cada vez que salto. (No sé si estos codigos también valen por ejemplo para cuando haces una misión y simplemente te dan también dinero etc..)
(http://img821.imageshack.us/img821/2537/i6ig.jpg)



-Aquí te voy mostrando los diferentes cambios que me salen al usar el write ese. (Te lo muestro porque no tengo ni idea de cual habría de modificar ni como)
(http://img801.imageshack.us/img801/7006/mumg.jpg)

(http://img109.imageshack.us/img109/8048/xt8q.jpg)

(http://img534.imageshack.us/img534/2777/8m2i.jpg)

(http://img11.imageshack.us/img11/6208/cknq.jpg)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: bryantt en 11 Septiembre 2013, 23:48 pm
Hola buenass yo tengo un problema con el cheat engine y es que intento hackear cualquier juego emplan intentar añadirme monedas y eso y cuando hago first scan me funciona bien pero cuando le doy a next scan no me aparece absolutamente nada y me pasa con todos los juegos, alguien sabe porquee??


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: TrashAmbishion en 12 Septiembre 2013, 22:05 pm
Antes que todo muchas gracias por regalarnos este valioso tute.

Estoy trabajando con el Counter Strike v1.6 y logre hacerle un Trainer para tener balas infinitas de un arma especifica, porque con otras parece que cambia la cosa y bueno no tiene problemas eso lo tratare de resolver, esto funciona en modo multijugador LAN.

Lo que no logro resolver es el tema de la vida, hacerme inmortal, la variable que logro encontrar es la que me muestra el valor de la vida pero no es la que tiene el valor real de la vida no se si me hago entender, entonces no se como trabajar con ella..

Lo que hice fue tratar de rastrear en Disambler pero nose si podre llegar algun lado asi...

Que me aconsejas??

Salu2 y gracias de antemano


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 12 Septiembre 2013, 22:16 pm
Antes que todo muchas gracias por regalarnos este valioso tute.

Estoy trabajando con el Counter Strike v1.6 y logre hacerle un Trainer para tener balas infinitas de un arma especifica, porque con otras parece que cambia la cosa y bueno no tiene problemas eso lo tratare de resolver, esto funciona en modo multijugador LAN.

Lo que no logro resolver es el tema de la vida, hacerme inmortal, la variable que logro encontrar es la que me muestra el valor de la vida pero no es la que tiene el valor real de la vida no se si me hago entender, entonces no se como trabajar con ella..

Lo que hice fue tratar de rastrear en Disambler pero nose si podre llegar algun lado asi...

Que me aconsejas??

Salu2 y gracias de antemano

Hasta donde yo se, los juegos de Steam (tipo Counter Strike) que se ejecutan en una LAN, en realidad son ejecutados a través de un "server" ficticio.

Cuando un jugador "crea una partida" hace de Host, y el resto de clientes se conectan a ese server. Las variables como la vida de los jugadores se almacena y se controla desde el "server", solo algunas variables se controlan en local (como por ejemplo la munición).

No creo que puedas hacer un GodMode para éste tipo de juegos a no ser que enchufes el CheatEngine en el PC que está ejecutando el "local-server" y edites ahí las variables.

Saludos!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: TrashAmbishion en 12 Septiembre 2013, 23:19 pm
Bueno creo que en este caso podria funcionar porque yo hago de server, me podrias guiar que necesitas para que te hagas una idea...

Se que hay Inyectores y otros programas que te permiten ver a traves de objetos solidos y cosas asi pero no logro entender como se usa...

Salu2 y gracias


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: TrashAmbishion en 13 Septiembre 2013, 00:09 am
Bueno creo que en este caso podria funcionar porque yo hago de server, me podrias guiar que necesitas para que te hagas una idea...

Se que hay Inyectores y otros programas que te permiten ver a traves de objetos solidos y cosas asi pero no logro entender como se usa...

Salu2 y gracias

Ya logre usar algunos Hacks que hay por ahi pero ninguno rula con las vidas del jugador parece que es complejo, de igual manera si tienes chance y me puedes asesorar te lo agradecere...

Salu2


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: sandro20 en 19 Septiembre 2013, 18:11 pm
Ahora traigo otra cuestión, a ver si es que de alguna forma se puede hacer.

1)Yo en el Gta San andras o en el samp pego un salto con el vehículo y por ejemplo me dan 120$ supongamos.
2)Busco esa cantidad con cheat engine, obviamente me salen 100 codigos.
3) Pego otro salto pero esta vez me dan 40$, vuelvo a buscar en cheat engine, encuentro el codigo y lo paso abajo.
4) Ahora puedo modificar el valor de ese codigo que se supone que es el dinero que me han dado cuando he saltado, pero obviamente no me sirve de nada.

¿Hay alguna forma de hacer que en el juego  se active esto sin necesidad de hacer un salto? Activarlo y que me de la cantidad que quiera sin saltar pero que me lo de como si hubiera hecho un salto. ¿O tal vez puedo hacer que cada vez que salte me de 999.999$ por ejemplo? Ahí lo dejo XD


-Aquí me dio los tres codigos que son el dinero que me da cada vez que salto. (No sé si estos codigos también valen por ejemplo para cuando haces una misión y simplemente te dan también dinero etc..)
(http://img821.imageshack.us/img821/2537/i6ig.jpg)



-Aquí te voy mostrando los diferentes cambios que me salen al usar el write ese. (Te lo muestro porque no tengo ni idea de cual habría de modificar ni como)
(http://img801.imageshack.us/img801/7006/mumg.jpg)

(http://img109.imageshack.us/img109/8048/xt8q.jpg)

(http://img534.imageshack.us/img534/2777/8m2i.jpg)

(http://img11.imageshack.us/img11/6208/cknq.jpg)

Hey casi lo mismo me pasa como esto..!! yo quiero sacar el pointer static pero me sale asi (edx) y ya noce que mas hacer ayuden pe xD


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: ficha_roja en 30 Septiembre 2013, 23:47 pm
Excelente tutorial.

Estoy intentando hackear el Kitchen Scramble (de facebook) y no hay manera de enganchar ningún parametro.

Lo que más me interesa son las monedas, pero si intento buscar por resultado exacto, al segundo intento ya no encuentra coincidencias.

Y se lo hago con valor incrementado más de lo mismo.

No se si alguien lo ha conseguido y me puede echar una mano.

Gracias y un saludo


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 1 Octubre 2013, 10:08 am
Excelente tutorial.

Estoy intentando hackear el Kitchen Scramble (de facebook) y no hay manera de enganchar ningún parametro.

Lo que más me interesa son las monedas, pero si intento buscar por resultado exacto, al segundo intento ya no encuentra coincidencias.

Y se lo hago con valor incrementado más de lo mismo.

No se si alguien lo ha conseguido y me puede echar una mano.

Gracias y un saludo

8 páginas tiene éste hilo, se ha dicho varias veces ya:

Los juegos del facebook (flash/java) almacenan las variables en el servidor. Con un editor de memoria LOCAL (como Cheat Engine) no podrás modificar los valores


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: ficha_roja en 1 Octubre 2013, 10:45 am
Entonces por qué me funciona con Candy Crush también de Facebook????????

Gracias de todas formas por responder.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 1 Octubre 2013, 13:08 pm
Entonces por qué me funciona con Candy Crush también de Facebook????????

Gracias de todas formas por responder.

No todos los juegos almacenan los datos en el server. Algunos sí (la mayoría), como por ejemplo FarmVille y similares.

Lo mejor es probar, pero si no aparece no es necesario preguntar el motivo, la respuesta es clara: el juego es server-sided.

:D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: ficha_roja en 1 Octubre 2013, 14:50 pm
[ENABLE]
Aobscan(_instant,24 01 d2 a1 a2 75 d5)
label(instant)
registersymbol(instant)
_instant:
instant:
db 24 00 d2 a2 a2 75 d5
[DISABLE]

con este script el tiempo de cocción de los alimentos pasa a ser 0


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 1 Octubre 2013, 15:12 pm
[ENABLE]
Aobscan(_instant,24 01 d2 a1 a2 75 d5)
label(instant)
registersymbol(instant)
_instant:
instant:
db 24 00 d2 a2 a2 75 d5
[DISABLE]

con este script el tiempo de cocción de los alimentos pasa a ser 0

AOBScan() y código ensamblador en db... ese script es tuyo? =D

Todos los juegos server-sided tienen ALGUNAS variables en local, principalemnte posición del personajes y algunos timers. Variables importantes como HP, MP o monedas suelen estar en en lado del server


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: JELIUX en 8 Octubre 2013, 22:56 pm
MMM men quiero aprender a hacer hacks de oro o dupear pero necesito un gran orientación parecida ala de tu post puesto que entendí muchas cosas que hasta ahora se me acian imposibles

El problema es que juego juegos online mas que todo World of wardraft
e averiguado por todos lados hacks pero ninguno sirve a requiere dinero ademas averiguando me encontre con un programa llamado (wpe PRO) el cual es parecido en muchas cosas a cheat pero no tengo conocimiento de como usarlo

en fin e logrado mirar que con ese programa muchas personas logran obtener duplicación de objetos.

por favor ayúdame con un tutorial o algo parecido o con un hack si podes crear uno ademas me gustaría aprender a crear hacks para juegos online  porfa lo necesito  :laugh:  :D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MCKSys Argentina en 8 Octubre 2013, 23:11 pm
MMM men quiero aprender a hacer hacks de oro o dupear pero necesito un gran orientación parecida ala de tu post puesto que entendí muchas cosas que hasta ahora se me acian imposibles

El problema es que juego juegos online mas que todo World of wardraft
e averiguado por todos lados hacks pero ninguno sirve a requiere dinero ademas averiguando me encontre con un programa llamado (wpe PRO) el cual es parecido en muchas cosas a cheat pero no tengo conocimiento de como usarlo

en fin e logrado mirar que con ese programa muchas personas logran obtener duplicación de objetos.

por favor ayúdame con un tutorial o algo parecido o con un hack si podes crear uno ademas me gustaría aprender a crear hacks para juegos online  porfa lo necesito  :laugh:  :D

Para lograr lo que deseas, necesitas perder dias, meses, años leyendo sobre el tema.

No lograras hacer un hack de la noche a la mañana. Menos aun si no tienes los conocimientos minimos.

Normalmente, quien hace un hack, usa herramientas especificas y luego se arma una que le simplifique la tarea.

Si tu te limitas solo a usar dicha herramienta, te limitas al alcance de la misma. En los juegos online, esto es ilogico pues se actualizan periodicamente.

Te recomiendo comenzar a leer primero sobre ing. inversa, cracks, inetrnals de win32 y win64, etc.

Solo teniendo una amplia vision del entorno donde corre el juego, podras hacer un hack eficaz sobre un cliente de un juego.

Saludos!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 8 Octubre 2013, 23:54 pm
El amigo MCKSys ya te ha respondido de forma correcta, te añadiré un poco más de información para que avances en tu aprendizaje sobre hacks para juegos online.

Los juegos online están divididos principalmente en 2 partes (algunos hasta 3 partes). Se basan en una comunicación entre el servidor del juego [server] y el programa del usuario [client].

Los juegos offline (o single player) carece de una división, y todo se centra en un único punto que es el propio programa (juego) que llamaremos [cliente]

Para poder hacker hacks/cheats en un juego offline yo recomiendo utilizar Cheat Engine, ya que a día de hoy es la herramienta más avanzada que existe. Todas las variables, funciones y algoritmos del juego offline se ejecutan en el [cliente], pudiendo modificarlas a nuestro antojo gracias a Cheat Engine.

Para poder hacer hacks/cheats en un juego online es más complicado. Primero necesitas tener la capacidad, herramientas y conocimientos para poder desensamblar el [client] que se ejecuta en local y conocer al detalle como funciona el juego, saber qué variables se almacenan en local. Además necesitas conocer la comunicación que establece el [client] con el [server] (en un juego de calidad, esa comunicación va cifrada y con un control de suma "checksum" que evita la edición de dicha información. Una vez que has completado esas 2 tareas (te puede llevar meses de trabajo) procederemos a lo siguiente:

1: Si hemos detectado alguna variable almacenada en el [client] intentaremos editarla con Cheat Engine, ésto ocurre MUY pocas veces, ya que cualquier programador o empresa de videojuegos sabe que las variables importantes se deben programar/almacenar en el [server] para evitar hacks/cheats locales como Cheat Engine.

2: Si hemos detectado algún paquete importante durante la comunicación entre nuestro [client] y [server] podemos intentar modificar el [client] para mandar paquetes editados modificados. Te dejo un ejemplo inventado:

Mientras juego online, obtengo 100 monedas de oro. Ejecuta mi Sniffer de paquetes y capturo el siguiente mensaje:

Código:
From: [server]
To: [client]
Msg: 01/01/2013#map_dessert#get_item_gold#value=100

En el ejemplo se puede ver claramente que tras coger las 100 monedas, el [server] envía un paquete a mi PC con la información exacta del evento que se ha producido, pudiendo en ese caso editar el paquete de la siguiente forma:

Código:
From: [server]
To: [client]
Msg: 01/01/2013#map_dessert#get_item_gold#value=999999

Si todo funciona bien, obtendremos 999999 monedas ya que hemos engañado al [server] modificando la información del paquete.

El problema es que ésto funciona normalmente en la "teoría", ya que la información entre un [server] y [client] suele ir protegida, cifrada, cifrada, codificada, comprobada y con firmas digitales (por ejemplo un certificado SSL) que autentique la información e integridad del paquete, haciendo que sea complicadísimo su edición.

Evidentemente que se podría llegar a analizar todo hasta descrifar el paquete, editarlo y volverlo a cifrar, pero te aseguro que antes de que consigas hacer eso, el [server] y el [client] se habrán actualizado con una nueva clave de cifrado y todo tu trabajo habrá quedado inutilizado.

Se entiende? En resumen:

Se puede hackear juegos online? Teoricamente, Sí
Puedo hacerlo con Cheat Engine? No
Puedo preguntar en el foro como hackear juegos online? No
Me va a ayudar alguien del foro a hackear juegos online? No

Espero haber aclarado dudas respecto éste tema.

Saludos :D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: DRAGON M6 en 11 Octubre 2013, 00:20 am
hace tiempo usaba el C.E. en un juego online  pero parchearon el bug y se quedaba visual , refrescabas la pagina y volvia a 0 sin poderse usar , de esta forma se puede volver a cambiar los valores ? para que tipo de juegos vale ?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: JELIUX en 11 Octubre 2013, 10:12 am
gracias bueno alos 2 me pondre a estudiar a fondo estos temas  :D puestoque mi iteres es alto!!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Seve en 22 Octubre 2013, 00:15 am
||MadAntrax|| agradeciéndote por el tutorial que has colocado, muy bueno la verdad. Te he dejado un mensaje con un problema que tengo al crear mi propio trainer para un juego. Me he perdido y agradezco si me das una mano en eso, cualquier consejo o algo. Gracias de nuevo.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: jhonywalker en 21 Noviembre 2013, 21:54 pm
Buenas Madantrax buenísimo tutorial sabemos el trabajo que conlleba hacer esto, mi pregunta es:
estoy haciendo un trainer con CE 6.3 y quiero que busque automáticamente el .exe que estoy modificando para no estar todo el tiempo cerrando y abriendo el trainer cada vez que pongo el juego, poniendo una nota de advertencia como "waiting game" y ya cuando ejecutas el juego pues pondría "activated" ya listo para usarlo, gracias.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 26 Noviembre 2013, 08:47 am
Buenas Madantrax buenísimo tutorial sabemos el trabajo que conlleba hacer esto, mi pregunta es:
estoy haciendo un trainer con CE 6.3 y quiero que busque automáticamente el .exe que estoy modificando para no estar todo el tiempo cerrando y abriendo el trainer cada vez que pongo el juego, poniendo una nota de advertencia como "waiting game" y ya cuando ejecutas el juego pues pondría "activated" ya listo para usarlo, gracias.

De forma automática, el trainer que se genera mediante LUA con CheatEngine ya trae esa opción, busca el proceso cada segundo y lo obre con OpenProcess(). Si quieres poner una etiqueta visible deberás atacar con LUA Scripting (no es complicado, pero yo no tengo demasiada experiencia con LUA).

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: jhonywalker en 26 Noviembre 2013, 14:36 pm
yo utilizo el CE 6.3 y no veo esa opción el en generador de trainer, yo lo que quiero es no volver abrir el trainer para que reactive el cheato en cada partida nueva del league of legends, porque si no tengo q volver al escritorio y volver a ejecutar el trainer para que coja el .exe otra vez


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 26 Noviembre 2013, 14:49 pm
yo utilizo el CE 6.3 y no veo esa opción el en generador de trainer, yo lo que quiero es no volver abrir el trainer para que reactive el cheato en cada partida nueva del league of legends, porque si no tengo q volver al escritorio y volver a ejecutar el trainer para que coja el .exe otra vez

Dices que has hecho un cheto con CE 6.3 para League of Legends? La última vez que miré ese juego tenia las variables en el server. Que clase de trainer has hecho? xDD


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: DTI81 en 5 Diciembre 2013, 17:59 pm
hermano estoy nuevo en el fórum porque de verdad tu explicación sobre CE fue muy útil, pero solo tengo una duda!!! en lugar de sumar el dinero cuando gasto como hago para solo ponerlo infinito con el trainer que yo cree?

¡¡¡¡SALUDOS!!!!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: comvenpoz en 8 Diciembre 2013, 08:42 am
buenas noche amigo soy nuevo pero tengo una curriosidad este metodo podría aplicarse en juego online es decir un ejemplo en conquista 2.0.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: DTI81 en 8 Diciembre 2013, 23:16 pm
Saludos hermano!! Por fa estoy esperando la respuesta de la pregunta!! Es sobre company of heroes tales of valor, como hago para poner infinito el script?

SALUDOS!!!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Djac en 13 Diciembre 2013, 15:13 pm
Hola

queria saber si se puede alterar el travian con Cheat Engine , si se puede hacer, podrian explicar como hacerlo?

gracias por su atencion


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 13 Diciembre 2013, 17:04 pm
buenas noche amigo soy nuevo pero tengo una curriosidad este metodo podría aplicarse en juego online es decir un ejemplo en conquista 2.0.

No, no se puede utilizar con juegos online

Saludos hermano!! Por fa estoy esperando la respuesta de la pregunta!! Es sobre company of heroes tales of valor, como hago para poner infinito el script?

Debería ver el script que has generado, cada juego es único y no hay un código fijo que funcione para todos los casos. Normalmente con un simple MOV [eax],999 deberías tener suficiente

Hola

queria saber si se puede alterar el travian con Cheat Engine , si se puede hacer, podrian explicar como hacerlo?

gracias por su atencion

Los juegos de navegador (como travian, ogame, etc) no están sujetos a ser modificados en memoria. Lo único válido sería algun autoclicker, timerbot o similar. Pero no es algo que se pueda solucionar con CheatEngine


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: {/col:/}Kisin{/col/} en 14 Diciembre 2013, 03:51 am
Mad!! primero q nada gracias por la guia pero en mi caso yo la aplique a un juego online y solo quiero aumentar la velocidad de movimiento del personaje que codigo tendria que poner porfavor explicamelo
gracias


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: rdzlcs en 14 Diciembre 2013, 13:42 pm
Sumando fichas en el Poker de Facebook  ;D



082RkHodoC8


SALudos!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 14 Diciembre 2013, 14:48 pm
Mad!! primero q nada gracias por la guia pero en mi caso yo la aplique a un juego online y solo quiero aumentar la velocidad de movimiento del personaje que codigo tendria que poner porfavor explicamelo
gracias

Puedes probar si ese juego utiliza timers locales para controlar la velocidad del jugador, para ello abre CheatEngine, selecciona el proceso del juego y utiliza el SpeedHack:

(http://i.imgur.com/UMl5U3g.png)

Si tienes suerte, con solo hacer los 3 pasos de la foto podrás modificar la velocidad. Si no te funciona, deberás hacer búsquedas y encontrar la variable que se utiliza como factor en la velocidad (ojo, es posible que tu juego almacene dicha variable en el servidor, por lo que Cheat Engine no podrá hacer nada). Suele estar en tipo Float, deberás hacer busquedas con Increased/Decreased siempre y cuando consigas un speedboost en el juego. No es sencillo, a ver si lo consigues :)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: {/col:/}Kisin{/col/} en 16 Diciembre 2013, 01:02 am
logre encontrar la speed del personaje pero el address cambia cada ves que entro y no se como sacar el pointer y offset :S


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 16 Diciembre 2013, 11:33 am
logre encontrar la speed del personaje pero el address cambia cada ves que entro y no se como sacar el pointer y offset :S

Bien , te recomiendo que leas las primeras paginas de éste hilo, ahí se explica como generar un script en auto-assembler para lidiar con direcciones que cambian de posición. Si utiliza memoria relativa en lugar de absoluta, deberás usar AOBScan (tambien explicado).

Por ultimo, tambien puedes intentar sacar el pointer de la dirección. No he explicado como sacar pointers, pero no debería ser complicado, simplemente haz una búsqueda 4-byte en HEX con la dirección del registro o utiliza el multilevel pointer scanner


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Djac en 17 Diciembre 2013, 05:40 am
Hola de nuevo

saben que si se puede utilizar el cheat en travian, lo malo es que no se como, pero ahora juego un server x100000 y varios jugadores lo hacen ... no se como todos hablan otros idiomas , he preguntado a varios jugadores pero solo uno me contesto ...me dijo que lo hace con el cheat engine y que se demora mas de 20 minutos en hackear , pero no sabe como explicarmelo

ojala haya alguien que sepa como hacerlo

saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 17 Diciembre 2013, 14:36 pm
Hola de nuevo

saben que si se puede utilizar el cheat en travian, lo malo es que no se como, pero ahora juego un server x100000 y varios jugadores lo hacen ... no se como todos hablan otros idiomas , he preguntado a varios jugadores pero solo uno me contesto ...me dijo que lo hace con el cheat engine y que se demora mas de 20 minutos en hackear , pero no sabe como explicarmelo

ojala haya alguien que sepa como hacerlo

saludos

Travian es un juego de navegador. La base de datos del progreso del juego (nivel, dinero, recursos, etc...) están en el servidor. En local solo se muestra un layout. Ese tipo de juegos se basan en ejecutar ciertas acciones limitadas en tiempo. ALGUNOS juegos utilizan cookies y timers locales en JS para controlar esos límites/tiempos.

En cualquier caso, y hasta donde yo se, con Cheat Engine no podrás modificar nada de eso. Lo único que puedes probar es usar el SpeedHack de CheatEngine (explicado justo arriba) para ver si tienes suerte y puedes alterar algñun timer local, pero lo dudo muchísimo.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Djac en 17 Diciembre 2013, 19:25 pm
Hola Mad

gracias por tu atencion

Soy una persona que en sus tiempos libres juega el travian y me llamo mucho la atencion ver como algunos jugadores de la nada tienen millones de tropas , como dije ahora juego servers privados

Como dije me llamo mucho la atencion ver que muchos jugadores hacen trampa , asi que puse a consultar como lo hacen, vi y trate de descaragar varios hacks , pero es imposible por esas malditas encuestas que sale cuando vas a descargar algo

como no podia comence a preguntar a esos jugadores que hacen trampa algunos hackean oros y otros materias y tropas , uno me dijo que solo con el cheat engine se puede hacer pero es complicado el procedimiento , pero si es posible

saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 17 Diciembre 2013, 19:27 pm
Hola Mad

gracias por tu atencion

Soy una persona que en sus tiempos libres juega el travian y me llamo mucho la atencion ver como algunos jugadores de la nada tienen millones de tropas , como dije ahora juego servers privados

Como dije me llamo mucho la atencion ver que muchos jugadores hacen trampa , asi que puse a consultar como lo hacen, vi y trate de descaragar varios hacks , pero es imposible por esas malditas encuestas que sale cuando vas a descargar algo

como no podia comence a preguntar a esos jugadores que hacen trampa algunos hackean oros y otros materias y tropas , uno me dijo que solo con el cheat engine se puede hacer pero es complicado el procedimiento , pero si es posible

saludos

Te recomiendo que leas sobre WPE Pro, creo que es la solución a tu búsqueda.

Estoy preparando un tutorial interactivo para enseñar a los usuario sobre WPE Pro, espero tenerlo teminado en un par de días

:)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Djac en 17 Diciembre 2013, 20:03 pm
Gracia amigo

tratare de descargarlo, solo espero que no aparescan esas encuestas que me tienen loco

Saludos y gracias nuevamente


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 17 Diciembre 2013, 20:07 pm
Gracia amigo

tratare de descargarlo, solo espero que no aparescan esas encuestas que me tienen loco

Saludos y gracias nuevamente

http://wpepro.net/

El programa es algo complejo, intenta descubrir como funciona o si no espera un par de días a que publique el tutorial


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: wilber CC en 2 Febrero 2014, 22:36 pm
HOLAS ALGUIEN ME PUEDE AYUDAR EN UN JUEGO LLAMADO DRAGONBOUND  quiero usar cheat pero no puedo no se como ponerlo alguien me puede decir gracias


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: razormta en 3 Febrero 2014, 23:21 pm
pasate por mi posts pls, tienes todo para ayudarme xd

http://foro.elhacker.net/ingenieria_inversa/modificar_valor_de_x_variable_de_un_proceso_mediante_un_programa_creado_en_c-t408106.0.html


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: glerimal en 15 Febrero 2014, 01:19 am
...


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: SeniorPro en 26 Febrero 2014, 17:50 pm
Hola me ha encantado tu tutorial y quiero ponerlo a prueba con Shogun 2 Total War, pero creo que va a ser complicado. Quiero hacer que mis unidades de soldados sean siempre la misma cantidad en mi caso es 120 que es una tropa entera pero lo que el cheat engine encuentra es el numero visual no el fisico, no se si me entiendes porque abajo en la interfaz de batalla sale tu numero de unidades pero las que estan el campo de batalla, las unidades fisicas (por llamarlo de algun modo) no se como congelarlas para que no mueran porque lo que realmente estoy congelando es el numero de la interfaz aqui te dejo una imagen del juego para que te hagas una idea.

Me gustaria mucho aprender esto ya que seria un gran avance para mi en este mundillo jeje.
http://imgur.com/bMg5o9y


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: sasske en 26 Febrero 2014, 19:07 pm
Hola me ha encantado tu tutorial y quiero ponerlo a prueba con Shogun 2 Total War, pero creo que va a ser complicado. Quiero hacer que mis unidades de soldados sean siempre la misma cantidad en mi caso es 120 que es una tropa entera pero lo que el cheat engine encuentra es el numero visual no el fisico, no se si me entiendes porque abajo en la interfaz de batalla sale tu numero de unidades pero las que estan el campo de batalla, las unidades fisicas (por llamarlo de algun modo) no se como congelarlas para que no mueran porque lo que realmente estoy congelando es el numero de la interfaz aqui te dejo una imagen del juego para que te hagas una idea.

Me gustaria mucho aprender esto ya que seria un gran avance para mi en este mundillo jeje.
http://imgur.com/bMg5o9y

Debe guardar los datos en el servidor, y ahi modifica y hace todo, por eso solo modificas lo visual...

S2


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: SeniorPro en 26 Febrero 2014, 19:51 pm
Debe guardar los datos en el servidor, y ahi modifica y hace todo, por eso solo modificas lo visual...

S2
Pero si estoy jugando la campaña aqui no tienen nada que ver los datos del servidor


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: .:UND3R:. en 26 Febrero 2014, 20:05 pm
Me explico, lo que ocurre es que tu estás intentando congelar el contador por así decirlo, pero este contador no tiene la cantidad de soldados que tu quieres tener, solo lleva una cuenta, por eso su nombre, contador. Tampoco deberías buscar la cantidad de soldados y tras ser modificado, pensar que habrán más, ya que los soldados no son por así decirlo un tipo entero, debe ser una especie de estructura en donde cada uno tenga parámetros como coordenadas, vida, ataque, etc. Lo que deberías hacer es escanear un soldado en específico, e ir indicando si aumento o disminuyo el address (si pierde vida lo más probable es que disminuya, si recupera vida tu adivinarás que ocurrirá  ;D), ahora esto hará UN soldado inmortal tras congelar el address de vida, para que todos los soldados tengan vida, podrías intentar encontrar el address de cuando se realiza un ataque, de esta forma siempr elo estableces a 0 y nunca te atacarán, ahora si quieres más acción podrías injertar una dll que busuqe todas las estructura de soldado y les cambie el parámetro vida, no sé si se entiende la idea, espero que sí! saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: SeniorPro en 26 Febrero 2014, 20:37 pm
Me explico, lo que ocurre es que tu estás intentando congelar el contador por así decirlo, pero este contador no tiene la cantidad de soldados que tu quieres tener, solo lleva una cuenta, por eso su nombre, contador. Tampoco deberías buscar la cantidad de soldados y tras ser modificado, pensar que habrán más, ya que los soldados no son por así decirlo un tipo entero, debe ser una especie de estructura en donde cada uno tenga parámetros como coordenadas, vida, ataque, etc. Lo que deberías hacer es escanear un soldado en específico, e ir indicando si aumento o disminuyo el address (si pierde vida lo más probable es que disminuya, si recupera vida tu adivinarás que ocurrirá  ;D), ahora esto hará UN soldado inmortal tras congelar el address de vida, para que todos los soldados tengan vida, podrías intentar encontrar el address de cuando se realiza un ataque, de esta forma siempr elo estableces a 0 y nunca te atacarán, ahora si quieres más acción podrías injertar una dll que busuqe todas las estructura de soldado y les cambie el parámetro vida, no sé si se entiende la idea, espero que sí! saludos
Gracias por la explicacion UND3R pero no se como lo voy a hacer porque el juego tiene unas mecanicas complicadas a la hora de jugar las batallas  :P. Ya se me ocurrira algo jeje y de paso aprendere algunas cosillas mas del mundo de cheat engine ::)


Título: Re:
Publicado por: Xoslorg en 27 Febrero 2014, 14:51 pm
Buenas, ante todo agradecerte el manual MadAntrax.
Tengo un problema con los punteros, al buscar una variable la encuentro, buscas a donde apunta y lo encuentro, hasta aquí bien, encuentro otra dirección pero dinámica, a partir de aquí no me encuentra nada.
P->DIRECCION

Alguien podría explicar como buscar pointers?, lo he probado con un juego y encuentro el uno pero dinámico y no estático.
Gracias.

Enviado desde mi Galaxy Nexus mediante Tapatalk


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Meta en 10 Marzo 2014, 23:07 pm
Hola:

Estoy siguiendo el tutorial, en el n3el enlace para descargar el nuevo juego para hacer pruebas, no descarga.
http://www.mediafire.com/download/hat2ts8d3por4a7/moneybag_tutorial.zip

De paso he leído que no se puede mucho usar el C# para extraer datos. Hice un ejemplo tonto como puedes ver aquí.

(http://www.subeimagenes.com/img/c-872714.jpg)

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace Leer_RAM
  12. {
  13.    public partial class Form1 : Form
  14.    {
  15.        string Despedir;
  16.  
  17.        public Form1()
  18.        {
  19.            InitializeComponent();
  20.        }
  21.  
  22.        // Si pulsas el bot&#243;n, empieza el contador.
  23.        private void button2_Click(object sender, EventArgs e)
  24.        {
  25.            timer1.Start();
  26.            Despedir = "START";
  27.            label3.Text = (Despedir);
  28.        }
  29.  
  30.        private void timer1_Tick(object sender, EventArgs e)
  31.        {
  32.            int Valor = progressBar1.Value; // Guarda el valor actual.
  33.            progressBar1.Increment(1); // Incrementa a 1.
  34.            label1.Text = Valor.ToString(); // Muestra el valor del incremento del ProgressBar.
  35.  
  36.            // Si el valor llega a 100.
  37.            if (Valor == 100)
  38.            {
  39.                progressBar1.Value = 0; // Empieza desde 0.
  40.            }
  41.        }
  42.  
  43.        private void button1_Click(object sender, EventArgs e)
  44.        {
  45.            timer1.Stop();
  46.            Despedir = "STOP";
  47.            label3.Text = (Despedir);
  48.        }
  49.    }
  50. }
  51.  

El que quiera que le enví el proyecto completo me envía en privado su e-mail.
En esta ocasión, quiero encontrar la variable STOP o START, tambien el de los números de progressBar y cosas así para hacer pruebas.

Por lo que veo, es muy complejo usar el C# para hacer prácticas simples, tal vez me va mejor usar Visual C++ 2010 y a 32 bits nativo, nada del CLR que se mete FramWork por medio. Quiero decir esto que usa sistemas de protección cambiando la zonas de memoria de las variables para no encontrarlas y modificarlas.

Mi idea de todo esto es, un juego de coches, simuladores de aviones o helicópteros donde aparecen números como el cuentakilómetros, lo pueda ver en C# hecho por nosotros. Con ello puedo pasar los datos al USB o puerto serie mediante PIC o Arduino en una pantalla LCD o de Led de 7 segmentos.

Un ejemplo.
q2kz9ZPRDss

La parte de la electrónica me encarga yo y mostraré el proyecto final a todo detalle.
xe44cRdmuX8

Un cordial saludo.

Edito:
Datos que puede ser interés para aumentar tutorial sobre Trainers de Cheat Engine. en mi caso, prefiero hacerlo desde C#.
http://www.youtube.com/watch?v=0_aX56v9ie0

Ver otro vídeo con Blasck Op II aunmentando dinero en modo Zombie con un trainer bajo Visual Basic .net
http://www.youtube.com/watch?v=xSUJupVnHP0

Aquí hay un tema creado con el trainer del CE. Debería estar aquí todo junto, pero bueno.
http://foro.elhacker.net/programacion_visual_basic/programar_un_trainer_en_vb6_gui_profesional-t380649.0.html;msg1817856#msg1817856


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Meta en 14 Marzo 2014, 23:54 pm
Hola de nuevo:

Aquí hay un aWeb un poco en Inglés sobre lo que me interesa hacer. Sacar datos de un juego de coches.

(http://www.x-sim.de/manual/game1.gif)

http://www.x-sim.de/manual/tutorial.html

Aquí hay también otros vídeotutoriales sobre hackeo de juegos con Cheat Engine 6.3 y el debugger allidgb.
3IHIvPgJZ2o

http://www.youtube.com/watch?v=nDPxJlOZ-Bc
http://www.youtube.com/watch?v=XbZRHbd0qEo
http://www.youtube.com/watch?v=Kjw7lHLF8t8
http://www.youtube.com/watch?v=Ro7xhZb6K8I
http://www.youtube.com/watch?v=YmaPXY-gmOE

Si saben más inforamación sobre aprendizaje de estas cosas muy buenos como estos, no duden en poner enlaces.

Saludos.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Meta en 17 Marzo 2014, 02:40 am
A veces es mejor empezar por lo más simple.

Me han comentado amigos que vieron por el aire y no tienen tiempo para ver más, esa DLL es par injectar código a un exe, no para leer.

Así que, ya tengo las direcciones de memoriade las variables y en ella está Vida, que es la que quiero como ejemplo.

Para dejar claro lo que quiero. :)

1) Ejecutar un juego que alguien hizo con Visual C++ Win32 bajo console. No se su código fuente y en este caso no debo saberlo. El juego consiste en cambiar variables para detectarlas, como Vida, Balas y Maná.

2) Con el programa llamado Cheat Engine 6.3 encuentro las direcciones de las variables que me hace falta. Este programa en realidad es para hacer trampas en los juegos como vida infinita y cosas de estas. En mi caso es diferente que diré al final.

3) Crear una DLL en Visual C++ 213 Win32 para detectar la variable Vida, bala y Maná. Para hacer pruebas, me conformmo con la variable Vida.

4) Con Visual C#, usando Windows Form. También se puede hacer con modo consola, en mi caso el Form. Poner un label1 que nombraré como label_vida en el Form1.Windows Form de C# debe ser capaz de leer la variable Vida.

5) Dejo claro que quiero crear una DLL en C++ Win32 porque trabaja más rápido que FramWork .net. Motor interno para cálculo C++ Win32 y Interfaz para ver los valores, cualquiera basta, en mi caso usarlo con Visual C#.

6) Cada vez que el juego cambia el valor de la variable Vida, en tu aplicación hecha con Windows Form C# y la DLL, debe mostrar en pantalla en tiempo real la variable Vida. Abajjo, una imagen del juego sencillo con la variable Vida a 100.

(http://social.msdn.microsoft.com/Forums/getfile/432131)

7) Aquí abajo, Windows Form con sus variables que debe leer este llamado HackMe.

(http://social.msdn.microsoft.com/Forums/getfile/432132)

8) Cuando en el juego cambia de 100 a 99, en el Windows Form de C# debe aparecer lo mismo. Están como sincronizado.

Eso es todo. Sabía que para mi es complicado, pero no tanto, jajajaja.

Saludo.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: tatania en 16 Abril 2014, 20:33 pm
hola me gustaria aprender como usar el CE para el juego Let's fish de facebook eh intentado cosas que explicas en los tutos pero nada me sale :( gracias


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: fekau en 17 Abril 2014, 18:05 pm
hola amigo estoy en el tercer tutorial no entiendo bien en la parte que agregas el add ax.A  de que parte viene el ax.A


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 18 Abril 2014, 00:01 am
hola amigo estoy en el tercer tutorial no entiendo bien en la parte que agregas el add ax.A  de que parte viene el ax.A

A ver como lo explico.... El ejemplo de la parte 3 enseña como modificar un programa, concretamente lo que estamos haciendo es inyectar una instrucción ASM dentro de la memoria del ejecutable:

La dirección del dinero es ESI+34
Cuando "gastamos" dinero, la función 402C19 modifica ESI+34 con un MOV (almacena un valor), en el ejemplo hace:

mov [esi+34],ax

Es decir, coge el valor de ax y lo copia a nuestro dinero. En cada interacción, ax disminuye (seguro que si miras un poco arriba verás un sub). Para conseguir que el programa SUME en lugar de RESTAR hay que inyectar un código, por ejemplo add ax,A (lo que hacemos es sumar 10 monedas al registro ax, luego se ejecuta el mov).

Se entiende? No se como explicarlo de otra forma, jejeje. El add ax,A es solo un ejemplo, podría poner cualquier otro código ASM, por ejemplo cambiar el mov [esi+34]ax por un mov [esi+34],A


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: fekau en 18 Abril 2014, 00:54 am
jaja ok hermano entendido gracias  ;-)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: ivan234 en 23 Abril 2014, 06:56 am
Amigo tengo algo que preguntar acerca de esto he visto por ahi unos trainers o unos launcher de CE mi pregunta es si existe la posibilidad de desglosar los mismos para saber como sacan los valores y modificar las variables del mismo o si existe un tutorial por que como sabras el principio fundamental de los juegos de face son flash y son algunos modificables, la razon de esto es por que siempre estan parchando los juegos de modo tal de que queda inutilizado el trainer con CE pero siempren los actualizan yo solo quiero aprender como se hace y como lo hacen tengo el conocimiento basico del CE y tu tutorial me ha ayudado.(http://imagizer.imageshack.us/v2/640x480q90/845/g4c7.jpg)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 23 Abril 2014, 17:05 pm
Amigo tengo algo que preguntar acerca de esto he visto por ahi unos trainers o unos launcher de CE mi pregunta es si existe la posibilidad de desglosar los mismos para saber como sacan los valores y modificar las variables del mismo o si existe un tutorial por que como sabras el principio fundamental de los juegos de face son flash y son algunos modificables, la razon de esto es por que siempre estan parchando los juegos de modo tal de que queda inutilizado el trainer con CE pero siempren los actualizan yo solo quiero aprender como se hace y como lo hacen tengo el conocimiento basico del CE y tu tutorial me ha ayudado.(http://imagizer.imageshack.us/v2/640x480q90/845/g4c7.jpg)

Hola, si te he entendido bien, me estás preguntando como reversar un trainer compilado para ver como funciona, sus script, address, etc, no? Bueno

Con CE hay 2 formas para crear un trainer, la primera es generar un fichero con extención *.ctrainer que contiene todos los datos del trainer cifrados. La segunda es un EXE-packed que al ser ejecutado descomprime un runtime muy básico del CE en %tmp% con el *.ctrainer y la slibrerías para que funcione el hack/trainer.

En el primer caso, deberás lidiar con un problema criptográfico. El fichero *.cetrainer está cifrado y no conozco la cifrado usada. Por suerte, CE es OpenSource y quizás puedas reversar la rutina de cifrado de los *.cetrainers a través del source:

https://code.google.com/p/cheat-engine/source/browse/#svn%2Ftrunk%2FCheat%20Engine

En el segundo caso, deberás ejecutar el trainer.exe y extraer su contenido, recuperar el fichero *.cetrainer y desencriptarlo.

No conozco ninguna app que lo haga automáticamente, así que si quieres reversar un trainer deberás meterte de lleno en el mundo de la criptografía.

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: NikNitro! en 25 Abril 2014, 13:53 pm
Buenas. Tengo una duda muy concreta. Obtengo las direcciones pero son dinámicas. ¿Cómo puedo hallar la estática? No encuentro nada que valga en la red (o al menos no se verlo). He leido en algunos sitios que es sumandole un offset a la dinámica, por lo que o ese offset varía cada vez (en cuyo caso cómo se encontraría) o si el offset es constante, las direcciones no son estáticas.

Espero que me ayuden. Gracias.

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 25 Abril 2014, 14:40 pm
Buenas. Tengo una duda muy concreta. Obtengo las direcciones pero son dinámicas. ¿Cómo puedo hallar la estática? No encuentro nada que valga en la red (o al menos no se verlo). He leido en algunos sitios que es sumandole un offset a la dinámica, por lo que o ese offset varía cada vez (en cuyo caso cómo se encontraría) o si el offset es constante, las direcciones no son estáticas.

Espero que me ayuden. Gracias.

Saludos

Bueno, ésto que comentas tiene distintas formas de resolverse:

* Buscar un pointer estatico que apunte a tu dirección dinámica
* Crear un Auto-Assemble script para modificar la instrucción que modifica la dirección dinámica
* Utilizar un AoB Scan (Array of Bytes Search) para localizar un patrón-wildcard y mover el valor de la memoría a una user-var

Los 3 métodos son "avanzados". Estoy diseñando un nuevo manual/tutorial que explica al detalle los 3 métodos. Es un manual MUY largo y de momento lo tengo escrito en un PDF/DOC, me falta traducirlo a BB-Code para postearlo aquí.

En 48h postearé el nuevo tutorial, no te preocupes :)

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 25 Abril 2014, 23:06 pm
Vale, tutorial terminado, en total ha salido un fichero de word con 46 paginas ;-)

Lo publicaré mañana (tengo que maquetar las fotos) para que lo podáis descargar, luego ya lo traduciré a BB-Code para postearlo en modo texto al foro.

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: NikNitro! en 26 Abril 2014, 02:56 am
Lo espero con ahinco... xP El examen que tengo el martes tendrá que esperar xD

Saludos y gracias Mad ;)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 26 Abril 2014, 02:57 am
Lo espero con ahinco... xP El examen que tengo el martes tendrá que esperar xD

Saludos y gracias Mad ;)

http://foro.elhacker.net/ingenieria_inversa/tutorial_cheat_engine_nivel_avanzado_tutorial_completo-t413372.0.html

Ya lo tienes :)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pedro004 en 28 Abril 2014, 18:32 pm
Buenas! Yo tengo una duda, es posible que el cheat engine no cambie el valor?
Encontré el address 05FDB90C y estoy seguro que es el valor que tengo que cambiar, pero al cambiarlo no hace nada en el juego... a que se debe esto? algo estoy haciendo mal?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: StevenKhooks en 20 Junio 2014, 07:13 am
el Cheat engine es detectado por algunos Game alguna forma de hacer bypass ? :D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: .:UND3R:. en 20 Junio 2014, 15:02 pm
el Cheat engine es detectado por algunos Game alguna forma de hacer bypass ? :D

Ing. Inversa al sistema anti-cheat?, modificar el código de fuente del cheat engine?.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 4 Julio 2014, 17:34 pm
Una pregutna:
Como se puede lograr hackear el valor de un juego con el Cheat Engine que este cifrado usando la protección XOR?


Título: Re: Re: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 4 Julio 2014, 18:17 pm
Una pregutna:
Como se puede lograr hackear el valor de un juego con el Cheat Engine que este cifrado usando la protección XOR?

Si, la memória debe estar en algún momento expuesta en crudo, ahí es donde vas a modificar, si no,igual puedes cazar el valor


Título: Re: Re: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 4 Julio 2014, 20:22 pm
Si, la memória debe estar en algún momento expuesta en crudo, ahí es donde vas a modificar, si no,igual puedes cazar el valor
Eso de escanear lo probe, pero no hay manera de encontrar nada, los valores que intento modificar estan delante en la pantalla, pero al escanear con el Cheat Engine no los detecta(he probado en 2bytes, 4bytes, float, String, etc.) pero es como si estos valores fueran invisibles. Buscando encontre que el juego que intento modificar usa cifrado XOR y por eso el CE no los detecta. Que puedo hacer? O algun tutorial que me pueda servir?

(El juego al que intento modificar es el Age of Mythology)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 4 Julio 2014, 20:38 pm
buscalos por valor desconocido... usando no ha cambiado y el valor cambio... o busca los numeros de la pantalla y busca tutoriales de como conseguir la memoria estatica... debe ser un proceso similar


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 5 Julio 2014, 02:41 am
buscalos por valor desconocido... usando no ha cambiado y el valor cambio... o busca los numeros de la pantalla y busca tutoriales de como conseguir la memoria estatica... debe ser un proceso similar
Citar
busca los números de la pantalla
Como dije en el comentario anterior: estas variables al escanear con el CE no dan nada de resultado es como si fueran invisibles para el CE. Por ejemplo: Yo tengo 4000 de oro. Lo busco en el CE y me da unos cuantos resultados, luego en el juego compro algo y ahora me quedan 3500 de oro, ahora busco este nuevo resultado en el CE y como resultado me da Found:0 (Address) (Y lo he probado con 2bytes, 4bytes, float, etc.)

Citar
buscalos por valor desconocido... usando no ha cambiado y el valor cambio
Lo he hecho y el CE me da exactamente 30 resultados (he hecho muchas veces Next Scan para disminuir la cantidad de resultados, pero todos se canvian a la vez). Luego fui a quien accede a esta direccion, para ver si podia encontrar alguna información más, pero no encontre nada:
(http://s14.postimg.org/5h5qqaqjl/CE_resultado.png)
(http://s27.postimg.org/7u4inxxur/CE_resultado2.png)


Que puedo hacer?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 5 Julio 2014, 04:28 am
Como dije en el comentario anterior: estas variables al escanear con el CE no dan
Que puedo hacer?

intentarte hacer esto (http://lmgtfy.com/?q=cheat+engine+age+of+mithology)?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 5 Julio 2014, 16:21 pm
intentarte hacer esto (http://lmgtfy.com/?q=cheat+engine+age+of+mithology)?
Antes de preguntar aqui, FUE LO PRIMERO QUE HICE y no encontré NADA relacionado con lo que estoy preguntando.

Pd: los vídeos(o la mayoría del contenido) solo enseñan a hackear la vida de tus soldados, y eso es muy fácil de hacer ya que la vida de los soldados no está cifrada. Yo busco la manera de alterar el valor de los recursos que son el oro, madera, alimento, y favor, pero estas cuatro variables se encuentran cifradas y POR ESO PREGUNTE:

Como se puede lograr hackear el valor de un juego con el Cheat Engine que este cifrado usando la protección XOR?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 5 Julio 2014, 16:30 pm
Antes de preguntar aqui, FUE LO PRIMERO QUE HICE y no encontré NADA relacionado con lo que estoy preguntando.

debes tener algo mal configurado XD a mi la busqueda me da maravillas XD

esta es solo la primera parte de la primera pagina XD vi los primeros 2 videos y dan detalle XD
(http://i.imgur.com/Y235GSD.png)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 5 Julio 2014, 16:32 pm
debes tener algo mal configurado XD a mi la busqueda me da maravillas XD

esta es solo la primera parte de la primera pagina XD vi los primeros 2 videos y dan detalle XD
(http://i.imgur.com/Y235GSD.png)


los vídeos(o la mayoría del contenido) solo enseñan a hackear la vida de tus soldados, y eso es muy fácil de hacer ya que la vida de los soldados no está cifrada. Yo busco la manera de alterar el valor de los recursos que son el oro, madera, alimento, y favor, pero estas cuatro variables se encuentran cifradas y POR ESO PREGUNTE:

Como se puede lograr hackear el valor de un juego con el Cheat Engine que este cifrado usando la protección XOR?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 5 Julio 2014, 16:39 pm
este estaba  (http://forum.cheatengine.org/viewtopic.php?p=2217502&sid=ee1fbeabf9a041993224d4b2267fac9f)entre uno de esos link que llevaba a otro, esto no te sirve para nada?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 5 Julio 2014, 16:59 pm
este estaba  (http://forum.cheatengine.org/viewtopic.php?p=2217502&sid=ee1fbeabf9a041993224d4b2267fac9f)entre uno de esos link que llevaba a otro, esto no te sirve para nada?
El problema con este es que te habla solo de:
Gold Edition
Expansion: Rise of Rome
Age of Empires II
Age of Kings
Expansion: The Conquerors Expansion
Age of Kings II Conq. Exp

Además para hackear(el link que me dejaste): busca la variable en pantalla, compra alguna cosa haciendo que la variable se disminuya, luego vuelve a escanear la variable y ya lo tiene hecho. En la version de Age of Mythology al hacer eso no da nada de resultado.
MIRA:
1. NEW SCAN
(http://s13.postimg.org/h3465qi6f/1st_SCAN.png)
2. NEXT SCAN
(http://s28.postimg.org/3xoz89pzx/2nd_SCAN.png)
3. NEXT SCAN
(http://s28.postimg.org/5zkepehnh/3th_SCAN.png)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 5 Julio 2014, 17:00 pm
(sin querer acabe publicando el mensaje anterior 2 veces)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 5 Julio 2014, 17:04 pm
(sin querer acabe publicando el mensaje anterior 2 veces)

luego lo descargo y lo reviso -.-


Título: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: HellShadow en 8 Julio 2014, 21:44 pm
Hola, soy nuevo en el uso del cheat engine y me surgió un inconveniente, mi problema es parecido al que expone verdadero26, en mi caso es con unos juegos flash, se que los juegos flash para encontrar el valor hay que multiplicar el valor que uno desea modificar por 8, es decir si quiero buscar en el cheat engine el dinero que tengo en el juego multiplico la cantidad por 8 y ese resultado lo busco en el CE, no me extenderé mas con esto ya que ustedes saben esto mejor que yo, el problema es que no sale nada, intente con todo e incluso busque los valores sin multiplicar con la esperanza que estos juegos fueran la excepción pero no aparece nada despues del segundo escaneo.
Cabe destacar que son los únicos juegos con los que me encontré con esta barrera por que ya use el cheat engine con juegos como Terraria, GTA San Andreas, Torchlight II, Fable y hasta con el emulador de playstation one con resultados excelentes y quise intentar con juegos flash y hasta hay llego mi racha  :xD, los juegos que me dan problemas son los de Lesson Of Passion, les agradezco la ayuda que me puedan brindar con el tema en cuestión.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 8 Julio 2014, 22:38 pm
Hola, soy nuevo en el uso del cheat engine y me surgió un inconveniente, mi problema es parecido al que expone verdadero26, en mi caso es con unos juegos flash, se que los juegos flash para encontrar el valor hay que multiplicar el valor que uno desea modificar por 8, es decir si quiero buscar en el cheat engine el dinero que tengo en el juego multiplico la cantidad por 8 y ese resultado lo busco en el CE, no me extenderé mas con esto ya que ustedes saben esto mejor que yo, el problema es que no sale nada, intente con todo e incluso busque los valores sin multiplicar con la esperanza que estos juegos fueran la excepción pero no aparece nada despues del segundo escaneo.
Cabe destacar que son los únicos juegos con los que me encontré con esta barrera por que ya use el cheat engine con juegos como Terraria, GTA San Andreas, Torchlight II, Fable y hasta con el emulador de playstation one con resultados excelentes y quise intentar con juegos flash y hasta hay llego mi racha  :xD, los juegos que me dan problemas son los de Lesson Of Passion, les agradezco la ayuda que me puedan brindar con el tema en cuestión.
Intentaste buscar cambiando de tipo de variable, es decir, en vez de usar 4bytes, usar 2 bytes, float, double, etc.?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: HellShadow en 8 Julio 2014, 22:56 pm
Intentaste buscar cambiando de tipo de variable, es decir, en vez de usar 4bytes, usar 2 bytes, float, double, etc.?
Si, use todas la variables, busque con los valores multiplicados por 8 y también intente con los valores normales sin resultado alguno, en el primer scan muestra varias direcciones, pero con el segundo o en ocasiones el tercer scan ya no muestra mas, incluso hasta intente usar el SWF Decompiler sin resultado positivo por que sigo algunas guias de youtube pero al momento de buscar donde puede estar lo que necesito en el scrip no lo encuentro  :(


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 8 Julio 2014, 23:23 pm
Si, use todas la variables, busque con los valores multiplicados por 8 y también intente con los valores normales sin resultado alguno, en el primer scan muestra varias direcciones, pero con el segundo o en ocasiones el tercer scan ya no muestra mas, incluso hasta intente usar el SWF Decompiler sin resultado positivo por que sigo algunas guias de youtube pero al momento de buscar donde puede estar lo que necesito en el scrip no lo encuentro  :(
Bueno en vez de escribir la variable, puedes poner al principio "Unknown initial value", y luego puedes ir escaneando increased/decreased value dependiendo si la variable que deseas modificar si augmenta o disminuye.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: HellShadow en 11 Julio 2014, 06:58 am
Bueno en vez de escribir la variable, puedes poner al principio "Unknown initial value", y luego puedes ir escaneando increased/decreased value dependiendo si la variable que deseas modificar si augmenta o disminuye.
También utilice este método sin resultados positivos, e probado distintas cosas que e leído en foros y visto en videos de youtube pero sigue sin funcionar  :-(


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 15 Julio 2014, 12:49 pm
(sin querer acabe publicando el mensaje anterior 2 veces)

Hola, justo en las opciones de escaneo de memoria (Memory Scan Options) tienes marcada la opción de Writable y Executable, no? Haz click derecho encima de un checkbox y selecciona la opción ALL MEMORY (se te activarán los 3 checks).

Teniendo el CE configurado como te he explicado, prueba ha realizar búsquedas de nuevo, con type ALL y unknow value. Luego utiliza la opción de increased/decreased hasta encontrar el address.

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 17 Julio 2014, 00:01 am
Hola, justo en las opciones de escaneo de memoria (Memory Scan Options) tienes marcada la opción de Writable y Executable, no? Haz click derecho encima de un checkbox y selecciona la opción ALL MEMORY (se te activarán los 3 checks).

Teniendo el CE configurado como te he explicado, prueba ha realizar búsquedas de nuevo, con type ALL y unknow value. Luego utiliza la opción de increased/decreased hasta encontrar el address.

Saludos
Hola Mad Antrax, primero que nada gracias por contestar, bueno hice lo que me has dicho y este fue el resultado:

(http://s13.postimg.org/sro33zb3b/Sin_t_tulo.png)

Y he intentando congelar el primer value, para ver si funciona porque podria ser el variable real cifrado pero nada...


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 17 Julio 2014, 16:34 pm
Que cosas más extrañas os pasan... Seguro que has escogido el proceso correcto? (usa el speedhack inyection para asegurarte). Si buscas otras variables te ocurre lo mismo? Es posible que el juego tenga alguna protección de memoria o similar?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 17 Julio 2014, 20:04 pm
Que cosas más extrañas os pasan... Seguro que has escogido el proceso correcto? (usa el speedhack inyection para asegurarte). Si buscas otras variables te ocurre lo mismo? Es posible que el juego tenga alguna protección de memoria o similar?
Hola de nuevo,
mira te cuento el SpeedHack me funciona (desde el CE) perfectamente, otras variables como por ejemplo la vida de tus tropas SE PUEDEN HACKEAR, pero no se pueden hackear ni el oro, ni la madera, ni alimento, ni cantidad de la población, ni tampoco el favor(es otra variable que debes tener para crear unidades más avanzadas en el juego). He visto en el foro oficial del Cheat Engine que dicen que estas variables usan el cifrado XOR, por lo tanto, EN CONCLUSIÓN: las variables importantes en el juego(oro, madera, alimento y favor) están cifradas mediante el cifrado XOR, en cambio, las variables menos importantes las puedes modificar tranquilamente(como la vida de tus tropas).
Por lo tanto la pregunta es como modificar unas variables cifradas que usan la protección XOR?
Espero que hayas entendido lo que quiero decir...sino te lo explico de otra manera...


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 18 Julio 2014, 13:00 pm
Hola de nuevo,
mira te cuento el SpeedHack me funciona (desde el CE) perfectamente, otras variables como por ejemplo la vida de tus tropas SE PUEDEN HACKEAR, pero no se pueden hackear ni el oro, ni la madera, ni alimento, ni cantidad de la población, ni tampoco el favor(es otra variable que debes tener para crear unidades más avanzadas en el juego). He visto en el foro oficial del Cheat Engine que dicen que estas variables usan el cifrado XOR, por lo tanto, EN CONCLUSIÓN: las variables importantes en el juego(oro, madera, alimento y favor) están cifradas mediante el cifrado XOR, en cambio, las variables menos importantes las puedes modificar tranquilamente(como la vida de tus tropas).
Por lo tanto la pregunta es como modificar unas variables cifradas que usan la protección XOR?
Espero que hayas entendido lo que quiero decir...sino te lo explico de otra manera...

En ese caso solo tienes una opción. Realiza la misma búsqueda, pero cada vez que aumente o disminuya la variable, usa "Changed Value", ya que con XOR no sabes si el valor aumenta o disminuye realmente. Tras varias búsquedas y pruebas conseguirás la variable que podrás congelar (freezze) y con un poco de suerte editar. Lo correcto en ese caso sería reversar el código interno del videojuego para saber de que forma aplica el XOR, pero tendrías que tirar de OllyDbg y es una tarea bastante más compleja.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: verdadero26 en 19 Julio 2014, 15:35 pm
En ese caso solo tienes una opción. Realiza la misma búsqueda, pero cada vez que aumente o disminuya la variable, usa "Changed Value", ya que con XOR no sabes si el valor aumenta o disminuye realmente. Tras varias búsquedas y pruebas conseguirás la variable que podrás congelar (freezze) y con un poco de suerte editar. Lo correcto en ese caso sería reversar el código interno del videojuego para saber de que forma aplica el XOR, pero tendrías que tirar de OllyDbg y es una tarea bastante más compleja.
Buenas,
Con el método Changed Value/Unchanged Value me salen unas 30 possibles direcciones y de ahí no bajan. Al congelar estas variables se cierra el juego. Con Ollydbg busque un valor(madera) en la memoria, luego la pase en el dump y puse un memory breakpoint on acces y me paro aqui:
(http://s7.postimg.org/gcx1gibcb/o_12.png)
Al apretar run (F9), me vuelve a parar en el mismo lugar o dos o tres lineas mas abajo (o a veces arriba), por lo tanto intente poner un memory breakpoint on write(en el dump) para que solo pare cuando el valor cambia pero igualmente paraba en las mismas direcciones. También explore las calls de arriba pero no encontré nada interesante.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: toreto30 en 23 Julio 2014, 06:19 am
che se puede ponerle mas oro al game alas del destino de face o mas vida? me das una mano?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MaturBale en 23 Julio 2014, 10:30 am
Buena me leí todo el tutorial detalladamente y segui todo los pasos, hace varios Días estoy tratando de modificar un juego en el cual me aparece el dinero, logro modificiarlo pero cuando quiero realizar una compra me dice que no poseo ese dinero.

Además quiero aclarar que cuando modifico media el código hexa el valor 10.000 (3710) para que me aparezca en el juego, en vez de aparecer 10.000 me aparece 14.006 me pasa lo mismo cuando quiero poner 1.000 me pone 1.004, pero cuando pongo 500 si me lo toma.

Quiero saber que puedo estar haciendo mal, o mejor dicho que paso me está faltando? el juego está bajo una plataforma Adobe.Air , no sé si influirá.

Traté de buscar valores mediante las funciones increase y decrease pero solo me toma el mismo valor referencial, si necesitás datos o lo que sea no hay problemas te los puedo proveer.

Edito para ayudarte un poco, bah para que vos me ayudes jaja.

Esto son los valores que tengo al encontrar el punto que quiero modificar

14BC6635 - E8 D031DB4A - call Adobe AIR.dll+49980A
14BC663A - 83 C4 10 - add esp,10
14BC663D - 89 47 28  - mov [edi+28],eax <<
14BC6640 - 8D 55 F0  - lea edx,[ebp-10]
14BC6643 - 8B 4D D4  - mov ecx,[ebp-2C]

EAX=00000288
EBX=0AA532C1
ECX=40844000
EDX=00000002
ESI=14BA27B8
EDI=02D1D380
ESP=0038E930
EBP=0038E978
EIP=14BC6640

Si entro y cambio manualmente el EAX me lo modifica a forma "visual" pero no es dinero real que yo tengo.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 26 Julio 2014, 07:32 am
Buena me leí todo el tutorial detalladamente y segui todo los pasos, hace varios Días estoy tratando de modificar un juego en el cual me aparece el dinero, logro modificiarlo pero cuando quiero realizar una compra me dice que no poseo ese dinero.

Además quiero aclarar que cuando modifico media el código hexa el valor 10.000 (3710) para que me aparezca en el juego, en vez de aparecer 10.000 me aparece 14.006 me pasa lo mismo cuando quiero poner 1.000 me pone 1.004, pero cuando pongo 500 si me lo toma.

Quiero saber que puedo estar haciendo mal, o mejor dicho que paso me está faltando? el juego está bajo una plataforma Adobe.Air , no sé si influirá.

Traté de buscar valores mediante las funciones increase y decrease pero solo me toma el mismo valor referencial, si necesitás datos o lo que sea no hay problemas te los puedo proveer.

Edito para ayudarte un poco, bah para que vos me ayudes jaja.

Esto son los valores que tengo al encontrar el punto que quiero modificar

14BC6635 - E8 D031DB4A - call Adobe AIR.dll+49980A
14BC663A - 83 C4 10 - add esp,10
14BC663D - 89 47 28  - mov [edi+28],eax <<
14BC6640 - 8D 55 F0  - lea edx,[ebp-10]
14BC6643 - 8B 4D D4  - mov ecx,[ebp-2C]

EAX=00000288
EBX=0AA532C1
ECX=40844000
EDX=00000002
ESI=14BA27B8
EDI=02D1D380
ESP=0038E930
EBP=0038E978
EIP=14BC6640

Si entro y cambio manualmente el EAX me lo modifica a forma "visual" pero no es dinero real que yo tengo.

apuesto que es un juego online y que no leiste nada de este tema con respecto a ello


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: guardyan18 en 1 Agosto 2014, 00:24 am
disculpe soy nuevo en esto y pues veo que esta paginaesmuybuena y quiero aprender...en este tutorial que colocas podrecrear algo para hackear juegos de facebook..como por ejemplo war of mercenaries...cuando he utilizado en CE con tutos por la red he podidohacerlo pero no hace efecto es solamente visual...entonces quiero saber como lograr los resultados


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: lobosucio35 en 20 Octubre 2014, 06:24 am
Hola, ¿pudieras aconsejarme como usar cheat engine 6.2 con el juego afrika korps vs ratas del desierto?, he logrado incrementar la cantidad de unidades (soldados y vehiculos) permitidos por mision, PERO QUISIERA MODIFICAR LOS PARAMETROS DE LOS TANQUES Y DE LOS VEHICULOS MISMOS (Puntos de impacto, daño, etc. Hasta ahora todos mis intentos han sido vamos.

Te agradeceria un poco de tu tiempo para ver si es posible eso. Gracias


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: xzirx en 22 Octubre 2014, 21:39 pm
BUENO ANTES Q NADA FELICITART POR EL BUEN TUTO DE PRINCIPIO A FIN HE SEGUIDO TODO COMO INDICAS EN LOS 3 TUTOS Y ME FUNCIONO AL 100, PERO TENGO UNAS DUDAS

1RA CONSULTA
SOBRE TU 3ER TUTORIAL EN EL AA SCRIPT AGREGAS add ax,A ENTIENDO QUE AX=6CC ES LA PARTE FINAL DEL REGISTRO EAX=000006CC, PERO COMO SE SI SU VALOR ES 5 U OTRO Y XQ AL FINAL DE add ax,A hay una A mayúscula q significa o es por algún tipo de lenguaje


2DA CONSULTA
ESTABA LEYENDO EL FORO Y NO ME QUEDA BIEN EN CLARO SI EL CE TAMBIEN FUNCIONA EN JUEGOS FLASH DE WEBS HE INTENTADO PERO EL FLASH SE DESHABILITA Y TENGO Q REFRESCAR LA WEB PARA VOLVER A JUGAR Y SIN NINGUN RESULTADO, SI FUESE EL CASO PODRIAS REALIZAR UN TUTO SOBRE ELLO DONDE INCLUYA tiempo, vida y dinero. bueno abusando d tu amabilidad de antemano gracias




Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 22 Octubre 2014, 21:45 pm
BUENO ANTES Q NADA FELICITART POR EL BUEN TUTO DE PRINCIPIO A FIN HE SEGUIDO TODO COMO INDICAS Y ME FUNCIONO AL 100, PERO TENGO UNAS DUDAS

1RA CONSULTA
SOBRE TU 3ER TUTORIAL EN EL AA SCRIPT AGREGAS add ax,A ENTIENDO QUE AX=6CC ES LA PARTE FINAL DEL REGISTRO EAX=000006CC, PERO COMO SE SI SU VALOR ES 5 U OTRO Y XQ AL FINAL DE add ax,A hay una A mayúscula q significa o es por algún tipo de lenguaje


2DA CONSULTA
ESTABA LEYENDO EL FORO Y NO ME QUEDA BIEN EN CLARO SI EL CE TAMBIEN FUNCIONA EN JUEGOS FLASH DE WEBS HE INTENTADO PERO EL FLASH SE DESHABILITA Y TENGO Q REFRESCAR LA WEB PARA VOLVER A JUGAR Y SIN NINGUN RESULTADO, SI FUESE EL CASO PODRIAS REALIZAR UN TUTO SOBRE ELLO DONDE INCLUYA tiempo, vida y dinero. bueno abusando d tu amabilidad de antemano gracias




Tu primera consulta:

El código original del programa ejecuta la instrucción mov [esi+34],ax para almacenar el contenido de ax en la dirección esi+34

Si pongo add ax,A justo antes de mov [esi+34],ax lo que consigo es incrementar (add) el valor de ax en 10 unidades. El número decimal 10 se escribe A en hexadecimal, por eso pongo add ax,A es decir, suma +10 en ax. Luego se ejecuta el mov y en la variable de las monedas se incrementa en 10 unidades.

El hacking en juegos flash es algo más complejo, tienes que abrir el proceso de tu explorador web que maneje el plugin de flashplayer (en firefox creo que se llama plugin-container.exe). Luego la búsqueda de variables es algo complejo porque suelen estar multiplicado por 8. Te pongo un ejemplo:

Tengo un juego donde tengo 5 vidas, pues en CE busco 40 (5*8). Éste truco no funciona siempre, depende de la versión flash del juego se ha de buscar de otra forma. Indaga un poco por google sobre como usar CE para juegos flash, no me quiero extender demasiado en ésta rama de la Ingeniería Inversa.

Saludos :)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: xzirx en 22 Octubre 2014, 22:57 pm
GRACIAS X TU RAPIDA RESPUESTA, AHORA TODO ESTA CLARO, desconozco ESTE LENGUAJE QUE TIPO DE LENGUAJE ES? QUISIERA IR MAS A FONDO. Y LO DEL FLASH HA ESTUDIAR NOMAS PERO GRACIAS DE TODAS MANERAS



Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 22 Octubre 2014, 23:16 pm
GRACIAS X TU RAPIDA RESPUESTA, AHORA TODO ESTA CLARO, desconozco ESTE LENGUAJE QUE TIPO DE LENGUAJE ES? QUISIERA IR MAS A FONDO. Y LO DEL FLASH HA ESTUDIAR NOMAS PERO GRACIAS DE TODAS MANERAS



Estás empezando un poco la casa por el tejado jejej

El lenguaje del script es auto-assembler, un lenguaje MUY parecido al ASM, en éste foro encontrarás muchos tutoriales e información de ASM. Te recomiendo que empieces por ahí


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: xzirx en 24 Octubre 2014, 00:46 am
talvez lo veas un poco molestoso dclpa x la inexperiencia, pero quisiera saber en el ejemplo del juego Maldita Castilla para detener el tiempo no me dio problema pero para lo de Salud/Vida como haces para encontrar la dirección ya q buscando d varias maneras siempre me bota muchas direcciones y solo tengo 3 corazones


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: xzirx en 27 Octubre 2014, 18:58 pm
dclpa por la insistencia pero no quisiera quedarme con la duda y dejarlo ahi, por favor sobre el juego de maldita castilla como hago para lo de salud/vida, gracias saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: KingRasta en 29 Diciembre 2014, 17:08 pm
Hola a todos, soy nuevo y vengo con algunas dudas, a ver si me pueden ayudar.
Quiero inyectar una dll a un juego online de una pagina de internet y no lo logro, probe con varios inyectores: con "Kernel Detective" y me aparece una ventana diciendo "Unsopported Operating System", tambien con "Winject" que me sale error, "Extreme Injector V.3.3" que se cierra la pagina si es chrome o si es en mozilla se tiene q volver a cargar porque aparece el plugin container exe a tenido un error, tambien probe inyectar la dll con el cheat engine 6.4 y lo mismo, no se puede introducir la dll al juego.
Ahora lo que si lei en la pagina donde esta la dll, es que no tienen problema los que usan windows 7, y los que tienen windows 8 dicen que no pueden.
Yo utilizo Windows 8 y quizas ese sea el problema. O no se que pueda ser? Ustedes me podrian decir que inyector puedo utilizar para que funcione?
Muchas gracias


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: VictorFs en 1 Febrero 2015, 01:29 am
Pregunta! Para juegos online no sirve cierto? intente hacerlo con Shadowbound en español. osea si todo bien el scrip pero normalmente al actualizar el juego consume el oro xd


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: .:UND3R:. en 23 Febrero 2015, 16:32 pm
Pregunta! Para juegos online no sirve cierto? intente hacerlo con Shadowbound en español. osea si todo bien el scrip pero normalmente al actualizar el juego consume el oro xd

Cheat Engine modifica las variables del programa de forma local


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: ARISTDS en 5 Marzo 2015, 19:34 pm
oye esta chidisimo como usar el cheat engine pero como le hago para volverlo a cargar despues de haber quitado o apagado el juego xq vuelvo a krgar los datos que me deja pero el juego empieza sin los codigos¡¡¡¡¡???? :-( :-/


Mod: No escribir en mayúsculas


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: sheik_gray en 21 Marzo 2015, 11:55 am
Buen dia,
Mire estoy corriendo un servidor privado de un mmorpg, pero el antihack, gameguard me esta dando problemas, ya que actualizaron a una version que me es incompatible con las recientes actualizaciones de windows, y cosas que en si ellos cambiaron en el antihack, asi que un tutorial de reverse acerca de como remover un antihack o hacer bypass seria muy buen y yo en mi caso buscaria remplazar el antihack por otro mas compatible.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pkj en 28 Marzo 2015, 02:34 am
Saludos y gracias por el tutorial. Me ha servido para empezar con CE entendiendo algo :) Eso anima.
Tengo muchas dudas, pero para no extenderme voy directo al grano:
Tengo un script que encuentra una direccion de un juego Flash con aobscan.

[ENABLE]
aobscan(dbase, A0 6D DF 66 04 00 00 00 ?0 ?F ?? 0? D0 ?3 ?? 0? F8 ?8 ?? 0? 70 54 B1 66 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00)
label(_dirbase)
registersymbol(_dirbase)

dbase:
_dirbase:

[DISABLE]
unregistersymbol(_dirbase)

Añadiendo una direccion manual (address=_dirbase+38) ya tengo el valor en el CE para manipularlo.
Pero quiero congelar el valor con un trainer.exe
¿Puedo congelarlo directamente desde este script?
¿Y cambiar el valor?
Si no, ¿como hago para que se ejecute automaticamente el script al ejecutar el trainer.exe que quiero crear?
De otro modo no encuentro el valor que quiero congelar, a no ser que ponga 2 hotkeys y avise de que la primera es obligatoria.
Espero haberme explicado, es la tercera vez que lo resumo para no excederme :D

Tambien me gustaria que explicarais un poco los codigos. Siempre llevan muchos labels.
Aqui por ejemplo, ¿como funcionan juntos el aobscan y el label?
Entiendo que se declara como label porque es un label, y luego como symbol para que se vea desde afuera del script.
Pero si lo que se ve desde fuera es "_dirbase", ¿porque no se pone asi?:

_dirbase:
dbase:

para que cuando te refieres a _dirbase se use lo que hay despues: "dbase".
Soy incapaz de entender la logica de esto.
Si pongo una etiqueta "exit:" y hago un "jmp exit" aparezco debajo de la etiqueta, ¿no?

En fin, mi mente es todo ruidos :P

EDIT:
Me he puesto a ello y en un rato he creado un programa que compara lineas de caracteres y crea una nueva con los caracteres comunes en todas y los que no los pone como (?), para facilitar el uso de aobscan.
De hecho he tardado mas en encontrar donde subirlo que en hacer el programa.
Ahora lo pongo en Tools con la calculadora y ya no esta sola :D

Si hay problemas por que ponga el enlace que lo quite algun moderador.
MOD EDIT:He quitado el link porque sólo contiene el ejecutable. Si posteas el source, el link se quedará.
(lo he actualizado para quitar un posible bug)

Saludos

EDIT2:
Ya he entendido lo de las etiquetas mientras intentaba aclararme para dar un nuevo paso en CE viendo el codigo automatico de los AA.

Addr:
_Label:

Uno representa una direccion y lo otro es una etiqueta que se "coloca" en esa direccion.
Uff no se si me acabo de aclarar :P

Lo de autoactivar un script, supongo que por eso se suelen poner botones "Activar Trainer".

Ahora me enfrento a encontrar codigo y modificarlo, a ver que tal se me da.
Creo que ya tengo problemas :D

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pkj en 30 Marzo 2015, 12:33 pm
Hola a todos/as.

He actualizado el programa de comparacion de cadenas. Ya va por la v.5.
Espero haber acabado, pero como le pasara a la mayoria de creadores, cada vez que lo miro le sale un grano (un defecto o algo nuevo que añadir) :P
Al final creo que me ha quedado bastante bien. Simple pero eficaz.

He añadido el uso de las teclas Enter y Suprimir en la lista para editar y eliminar lineas.
He añadido la posibilidad de eliminar varias lineas de una vez.
He puesto una barra de desplazamiento para poder revisar las lineas largas, (aunque no consigo ver mucho mas de 340 caracteres).
He quitado algun posible bug mas y he mejorado todo el sistema.
P.ej. si la linea que escribes para insertar no es valida, te vuelve a preguntar manteniendo lo que habias escrito para que lo revises sin tener que escribirlo otra vez.
Tambien se puede maximizar o minimizar para que no estorbe.

Ahora ademas se puede pegar directamente en la lista el texto del portapapeles con un solo click.
Como el visor de codigo de CE te permite copiar el HEX, es todo coser y cantar.
Ya no dara pereza comparar largas lineas de valores HEX. Con tomar 4 o 5 muestras largas (48, 64, 80, 96 bytes... los que necesites) te queda un patron bastante bueno para aobscan.
Mientras lo depuro no dejo de trainear juegos Flash. ¡Mola!.

Si hago otra version igual le pongo tambien un icono, que sigue sin tener :)

http://ge.tt/23HhMLD2/v/0

Os dejo tambien el codigo fuente VB6, ( me han obligado :( ).
Es algo que no me gusta hacer porque soy autodidacta y muchas veces me arreglo con apaños. Ademas siempre sueñas con que alguien diga "¿Alaa!, y como hace eso?" :D
Ademas, si todos tienen las fuentes ¿quien va a querer mi proxima actualizacion? :D Cualquiera puede mejorarlo.
En fin, todo sea por difundir el espiritu de comunidad. Pero luego no me vengais con risas.
Como soy de buen rollo os paso el proyecto, (compilar y jugar, vamos).
En realidad es poca cosa. Mas que nada lo que lleva es imaginacion.

Espero que al menos os guste un poquejo. Dadme likes y favoritos y esas cosas :D ( ah no, que eso es en el tube :P )

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MCKSys Argentina en 30 Marzo 2015, 15:08 pm
Os dejo tambien el codigo fuente VB6, ( me han obligado :( ).

No estás obligado a publicar los sources de tu programa. Que eso quede claro. Nadie obliga a nada aquí. Eso si: no esperes que deje un link de descarga a un ejecutable que no se sabe qué es lo que hace realmente. Hay mucha viruta suelta y no estamos obligados a verificar tu programa tampoco.

Es algo que no me gusta hacer porque soy autodidacta y muchas veces me arreglo con apaños. Ademas siempre sueñas con que alguien diga "¿Alaa!, y como hace eso?" :D
Ademas, si todos tienen las fuentes ¿quien va a querer mi proxima actualizacion? :D Cualquiera puede mejorarlo.

Es evidente que aún te falta recorrer un poco más el camino del software open source.
Por ejemplo, Notepad++ es de código abierto. Es un excelente editor de texto y muchas otras cosas. Ahora, cuántos piensas que "le meten mano" para mejorarlo? Pues, si miras el log, nadie. Sólo los que reportan errores en el programa. Es más, lo que si hay, son peticiones de nuevas características, que el autor va agregando a medida que quiere y dispone de tiempo.

Como ves, "las cosas varían según el cristal con el que se las mire". El objetivo es tener muchos "cristales" diferentes...  ;)

Saludos!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pkj en 30 Marzo 2015, 17:25 pm
Hola de nuevo.

MCKSys Argentina, te contesto para que no pienses que te ignoro, pero realmente creo que era innecesario.
Si no quisiera compartirlo no lo habria hecho. Lo de ser obligado era una especie de chiste.
De hecho tengo programas que compartiria pero que no me apetece que nadie cotillee las fuentes. No soy todo generosidad y me gusta tener mis secretos.
Lo de la actualizacion era otra broma porque yo no me gano la vida con esto y realmente pienso que cualquiera lo puede mejorar. Yo ya tengo una version nueva.
Simplemente soy un solitario buscando ayudar y quizas algo de reconocimiento, pero gracias por el comentario. Al menos se que alguien ha leido mi mensaje :D
Ahora solo falta que alguien lo pruebe y comente :P

Saludos

PD: Me gusta tu firma. Nunca me ha gustado seguir las modas o hacer las cosas "porque todos lo hacen asi". Me gusta saber por que se hacen asi.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: daztan0317 en 30 Marzo 2015, 19:02 pm
tengo una pregunta no se si aun estes en el mercado XD bueno ay juegos o paginas q s epueden modicar con ce pero me pasa en un juego en partigular q solo es visual como hacer q lo modificado se guarde ?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 30 Marzo 2015, 19:12 pm
tengo una pregunta no se si aun estes en el mercado XD bueno ay juegos o paginas q s epueden modicar con ce pero me pasa en un juego en partigular q solo es visual como hacer q lo modificado se guarde ?

supongo que es un juego online... si es así no se puede.. como tu dices, es solo visual, los datos reales no son llevados por tu computadora


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pkj en 1 Abril 2015, 10:07 am
Hola.
Una preguntita rapida.
Si CE es freeware con codigo fuente y todo, ¿porque me dice que ha expirado y que ahora esta capado?
http://i62.tinypic.com/14a62a.jpg


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 1 Abril 2015, 11:51 am
te lo bajaste de la pagina oficial?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pkj en 1 Abril 2015, 13:04 pm
te lo bajaste de la pagina oficial?

Si, solo que lo instale en un Virtual PC y luego lo copie al PC real.
Suelo hacer eso para no instalar cosas innecesarias o que me estropeen lo que va bien, y evitar "sorpresitas".
Siempre ha funcionado sin problemas, aunque nunca lo use mucho.

El caso es que ahora lo instalo en el Virtual PC, que esta igual que antes de instalarlo la primera vez. y me dice lo mismo.

Voy a bajarlo de nuevo y reinstalarlo en el Virtual a ver. En el bueno no pienso instalarlo. Si no deja de expirar ya lo tengo "apañado" :P
Supongo que sera aqui: http://www.cheatengine.org/downloads.php

Nada, sigue igual:
http://i57.tinypic.com/2el9gdx.jpg

Lo que no me pase a mi... :P

EDIT: Estoy leyendo los FAQ de la pagina y dice que hay una version sin instalador.
Voy a probar esa.

EDIT2: Dice lo mismo. Antes hice el reinicio del registro pero solo consegui tener que configurarlo otra vez, asi que ya ni pruebo.
Igual me paso por el foro y les pregunto "what is this?" :)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 1 Abril 2015, 13:33 pm
ya conseguí... hoy es 1/4


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pkj en 1 Abril 2015, 14:42 pm
ya conseguí... hoy es 1/4
Por todo el dia :D

Sobre mi mensaje anterior, no hay cambios.
Solo un detalle: alguna vez le he desactivado sin querer el check "Don't support Creat Engine" y en seguida se lia a carruchar y te saca el formulario para que ingreses.
Yo lo he vuelto a activar y ni lo he leido, asi que no se que pone, pero quizas tiene un bug que a partir de entonces piensa que tienes licencia y comprueba su caducidad (algo preparado para el futuro).
Por cierto, las fuentes de las v6.3 y 6.4 estan corruptas o mi winrar se ha vuento tonto...
Creo que estan pidiendo "donate", "donate", con la intencion de acabar haciendo un programa de pago. Espero que al menos a quien done se lo dejen luego mas barato.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 1 Abril 2015, 14:54 pm
hoy es april fool's XD es un huevo de pascua de CE para hoy XD


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pkj en 1 Abril 2015, 14:57 pm
hoy es april fool's XD es un huevo de pascua de CE para hoy XD

 :laugh:
Nunca se me hubiera ocurrido.
¿Como lo has sabido?

ah, ok, debugeandolo :P


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 1 Abril 2015, 15:00 pm
la ing inversa no es lo mio XD use google jejejeje


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pkj en 1 Abril 2015, 15:04 pm
Pues esta probado. Si uso cualquier otra fecha futura o pasada arranca normalmente :D

Mira que son bromistas.  ;-)

EDIT: Aun me estoy riendo :D
Menos mal que no he dicho nada en la pagina oficial, debe estar atascada.

Gracias por sacarme del error engel lex


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MCKSys Argentina en 1 Abril 2015, 15:11 pm
hoy es april fool's XD es un huevo de pascua de CE para hoy XD

La versión 6.2 (que es la que tengo) ya tenía el Easter Egg...  :xD


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pkj en 1 Abril 2015, 15:23 pm
La versión 6.2 (que es la que tengo) ya tenía el Easter Egg...  :xD
Tambien la probe, la 6.2, la 6.3 y la 6.4 y todas igual, quizas deberia haber supuesto algo como una broma, pero nunca me habia pasado algo asi.

Por cierto, ¿por que las fuentes no se dejan descomprimir? no es que vaya a instalar delphi ni que recuerde ya nada de pascal, pero soy muy curioso.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 12 Abril 2015, 22:37 pm
@pkj

Hola, veo que has ido resolviendo tus dudas poco a poco. Felicidades, respecto al tool para crear cadenas de AoB, yo hice la mía propia (está en el manual):

http://forum.cheatengine.org/viewtopic.php?t=572933
http://pastebin.com/tQsvbSkh

Está en VBS, así que es opensource.

Si tienes cualquier otra duda ven aquí y te ayudaremos. Saludos! :D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Orb en 2 Mayo 2015, 16:21 pm
Alguien tiene este tutorial en pdf¿


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: pkj en 2 Mayo 2015, 18:22 pm
Alguien tiene este tutorial en pdf¿

Si te refieres a este mismo, no se si habra descarga, pero como no tenia nada que hacer y por si te corre prisa te he pasado a pdf la primera pagina de este tema con el curso completo.

http://ge.tt/91cmdcF2/v/0

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: xavieeee en 12 Junio 2015, 10:02 am
Buenas,

Me he leido las 23 páginas, he hecho todos los ejemplos y he buscado nuevos en san google y aún así no puedo modificar las aplicaciones que quiero.

Quiero modificar la visualización, no el valor de la variable, de varios soft de escritorio, pero no he sido capaz de encontrar ni una sola variable.

En vez de  deciros el soft y que lo probéis invirtiendo vuestro tiempo, os quería proponer, a quien le interese, una o dos horas de conexión remota a cambio de una compensación monetaria.

Si alguien esta interesado que me envíe un privado o me agregue a skype.
nick skype: No datos personales

Un saludo,


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: xavieeee en 23 Junio 2015, 22:15 pm
Buenas,

He seguido viendo ejemplos y por fin he conseguido hacer algo con CE

El problema que tenia es que no era capaz de encontrar la dirección estática de las variables que quería. Lo he solucionado con el siguiente script para auto assemble.
Con este código cambio el valor de una variable a 100, sin importar el cambio de dirección.

Código:
[ENABLE]
alloc(stack1,1024)
label(originalcode)
label(exit)
label(returnhere)

stack1:
mov [esi+000000E0],#100
originalcode:
//mov [esi+000000E0],eax

exit:
jmp returnhere

"ClientRuntime.dll"+93600D:
jmp stack1
nop
returnhere:





[DISABLE]
dealloc(stack1)
"ClientRuntime.dll"+93600D:
mov [esi+000000E0],eax

Este esto son los datos de memory viewer  que hay que extraer para elaborarlo analizando la dirección desde find out what writes to this address
ClientRuntime.dll+93600D - 89 86 E0000000        - mov [esi+000000E0],eax

Este es el manual que segui:
https://www.youtube.com/watch?v=Ov37X9Ldn44

Funciona medio bien, me explico, la variable que analizo, no solo cambia cuando es escrita por el proceso que encuentro, entonces en algunos momentos del juego el scrip deja de ser efectivo 100%
He intentado crear el mismo script para las instrucciones que encuentro en find out what accesses to this address, ya que el count de estos aumenta cada segundo pero cada vez que intento activar el script el juego se cierra.

Estos son los dos procesos con los que intento hacer el script y el juego se cierra:
ClientRuntime.dll+935C25 - 81 3A 40420F00        - cmp [edx],000F4240
ClientRuntime.dll+3C18A7 - FF 30                 - push [eax]

No se si es que escribo mal el código ya que la  estructura no es igual o por otra cosa.


Cualquier ayuda sera agradecida.


Un saludo,


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: aquamoon en 24 Junio 2015, 21:42 pm
Quiero saber si se puede hackear Eden Eternal con este metodo?? ayuda plsss


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 30 Junio 2015, 15:24 pm
Buenas,

He seguido viendo ejemplos y por fin he conseguido hacer algo con CE

El problema que tenia es que no era capaz de encontrar la dirección estática de las variables que quería. Lo he solucionado con el siguiente script para auto assemble.
Con este código cambio el valor de una variable a 100, sin importar el cambio de dirección.

Código:
[ENABLE]
alloc(stack1,1024)
label(originalcode)
label(exit)
label(returnhere)

stack1:
mov [esi+000000E0],#100
originalcode:
//mov [esi+000000E0],eax

exit:
jmp returnhere

"ClientRuntime.dll"+93600D:
jmp stack1
nop
returnhere:





[DISABLE]
dealloc(stack1)
"ClientRuntime.dll"+93600D:
mov [esi+000000E0],eax

Este esto son los datos de memory viewer  que hay que extraer para elaborarlo analizando la dirección desde find out what writes to this address
ClientRuntime.dll+93600D - 89 86 E0000000        - mov [esi+000000E0],eax

Este es el manual que segui:
https://www.youtube.com/watch?v=Ov37X9Ldn44

Funciona medio bien, me explico, la variable que analizo, no solo cambia cuando es escrita por el proceso que encuentro, entonces en algunos momentos del juego el scrip deja de ser efectivo 100%
He intentado crear el mismo script para las instrucciones que encuentro en find out what accesses to this address, ya que el count de estos aumenta cada segundo pero cada vez que intento activar el script el juego se cierra.

Estos son los dos procesos con los que intento hacer el script y el juego se cierra:
ClientRuntime.dll+935C25 - 81 3A 40420F00        - cmp [edx],000F4240
ClientRuntime.dll+3C18A7 - FF 30                 - push [eax]

No se si es que escribo mal el código ya que la  estructura no es igual o por otra cosa.


Cualquier ayuda sera agradecida.


Un saludo,


Hola, me alegra leer éste tipo de cosas, veo que has avanzado bastante. Respecto a tu última pregunta... los otros opcodes que has encontrado (ClientRuntime.dll+935C25 - 81 3A 40420F00        - cmp [edx],000F4240 & ClientRuntime.dll+3C18A7 - FF 30                 - push [eax]) seguramente sean sharedcode. Es decir:

La instrucción cmp [edx],000F4240 debe acceder o modificar tu variable y alguna otra variable adicional, por eso cuando inyectas el autoassemble en ese opcode también cambias el valor a otra zona de memoria y por eso crashea. Sigue leyendo el tutorial y aprende como disseccionar los sharedcodes :)

Si tienes dudas me preguntas :)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: xavieeee en 4 Julio 2015, 04:01 am
Buenas,

He encontrado tu manual que habla de shared codes, lo he entendido todo, pero no encuentro las instrucciones para lo que quiero hacer.
Te lo comento a ver si me puedes orientar un poco.

En mi juego cuando comienzo una batalla hay puede haber de 2 a 9 jugadores y ademas se pueden disputar varias batallas al mismo tiempo.

En cualquier caso yo lo único que quiero hacer es dividir el valor de la vida de todos los players x una variable que depende de cada batalla. Me explico, battalla 1 nivel 50, quiero que la vida de todos los palyers se divida por 50, batalla 2 nivel 75, quiero que la vida de todos los players se divida por 75.

Esta es la instrucción que accede a  la vida de todos los players que están en las batallas.  ClientRuntime.dll+935C25
Cuando visualizo la ventana "find out what addresses this instruction accesses" se van añadiendo todas las vidas de los jugadores a medida que voy abriendo batallas.

Llegados a este punto no se como continuar y peor aún, no se que buscar para realizar lo que quiero hacer.

Muchas gracias por tu ayuda.

Un saludo,


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 4 Julio 2015, 12:37 pm
Buenas,

He encontrado tu manual que habla de shared codes, lo he entendido todo, pero no encuentro las instrucciones para lo que quiero hacer.
Te lo comento a ver si me puedes orientar un poco.

En mi juego cuando comienzo una batalla hay puede haber de 2 a 9 jugadores y ademas se pueden disputar varias batallas al mismo tiempo.

En cualquier caso yo lo único que quiero hacer es dividir el valor de la vida de todos los players x una variable que depende de cada batalla. Me explico, battalla 1 nivel 50, quiero que la vida de todos los palyers se divida por 50, batalla 2 nivel 75, quiero que la vida de todos los players se divida por 75.

Esta es la instrucción que accede a  la vida de todos los players que están en las batallas.  ClientRuntime.dll+935C25
Cuando visualizo la ventana "find out what addresses this instruction accesses" se van añadiendo todas las vidas de los jugadores a medida que voy abriendo batallas.

Llegados a este punto no se como continuar y peor aún, no se que buscar para realizar lo que quiero hacer.

Muchas gracias por tu ayuda.

Un saludo,

Bien, al menos ya tienes una tercera parte del shared code resuelta, ahora tienes que continuar. FIjate la instrucción del opcode ClientRuntime.dll+935C25, Imagina que es algo parecdo a mov [esi+CA],ebx

despues de hacer un "find out what addresses this instruction accesses", pulsa Ctrl+R (show registers) en cada dirección, copia el valor de la pointer base (en mi ejemplo sería el valor de ESI), luego agrupa las direcciones similares por grupos en el disseccionador de estructuras.

Si tienes dudas, dejame un mensaje y te miro de ayudar por TeamViewer.

Saludos y suerte


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Adelotrenton234 en 20 Julio 2015, 00:53 am
Estuvo muy bueno el tutorial, gracias. Muy bien explicado. :D

Pero quisiera saber si en vez de inyectar un código que haga que se incremente el dinero [add aex, (cantidad en hex)] quisiera que fuese congelado. ¿Qué instrucción debería de ocupar para hacerlo?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Takeshy en 20 Julio 2015, 01:33 am
Hola, muy buenas, me he leido un poco todo el tema y las replicas que tiene este hilo (sobre todo al principio, con ejercicios y pruebas de otros users)

Me surge una pregunta, como se puede modificar un trainer que ya esta en .exe
Lei mucho que decian que la mayoria de juegos en facebook no se puede y me quedo claro que ciertas cosas (local) si se puede, pero en este caso FARMVILLE y FARMVILLE 2 (este ultimo es el caso) son muy explotados ultimamente con este trainer!!
http://www.iyiblogcu.net/farmville-2-new-trainer-hile-programi-ve-kullanimi/

Lo que me pregunto es como modificarlo? ya que a muchos se les puede hacer una pasada que una cosecha te de 300 rabanos (o lo que estes plantando) pero a otros, (en mi caso) con 100 me bastan, y tambien porque al generar 300 cosechas hace que el juego se tarde en generar esa cantidad, el trainer tiene otras opciones que con solo apretar un boton se automatizan, supongo ahi ya son los scripts presonalizados que aqui han explicao...

Bueno no me quiero alargar (aunque ya lo hice creo), disculpas, la pregunta es esa como modificar internamente ese trainer y volverlo a hacer funcional ahh y de paso trabajar una version en español, Gracias!

PD: Me ha gustado todo el trabajo que ha realizado en este post desde sus inicios, yo no entiendo mucho, solo algunas cositas y he manejado el cheat para hacer cambios de codigos (reemplazar un codigo por otro) para la farmville que de hecho es lo que mas usamos en ese juego, los cambios de codigos y aumentar ciertos indicadores basicos..

Gracias MadAntrax por este post desde el 2013  ;-)
Feliz dia!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 20 Julio 2015, 09:27 am
Hola, muy buenas, me he leido un poco todo el tema y las replicas que tiene este hilo (sobre todo al principio, con ejercicios y pruebas de otros users)

Me surge una pregunta, como se puede modificar un trainer que ya esta en .exe
Lei mucho que decian que la mayoria de juegos en facebook no se puede y me quedo claro que ciertas cosas (local) si se puede, pero en este caso FARMVILLE y FARMVILLE 2 (este ultimo es el caso) son muy explotados ultimamente con este trainer!!
http://www.iyiblogcu.net/farmville-2-new-trainer-hile-programi-ve-kullanimi/

Lo que me pregunto es como modificarlo? ya que a muchos se les puede hacer una pasada que una cosecha te de 300 rabanos (o lo que estes plantando) pero a otros, (en mi caso) con 100 me bastan, y tambien porque al generar 300 cosechas hace que el juego se tarde en generar esa cantidad, el trainer tiene otras opciones que con solo apretar un boton se automatizan, supongo ahi ya son los scripts presonalizados que aqui han explicao...

Bueno no me quiero alargar (aunque ya lo hice creo), disculpas, la pregunta es esa como modificar internamente ese trainer y volverlo a hacer funcional ahh y de paso trabajar una version en español, Gracias!

PD: Me ha gustado todo el trabajo que ha realizado en este post desde sus inicios, yo no entiendo mucho, solo algunas cositas y he manejado el cheat para hacer cambios de codigos (reemplazar un codigo por otro) para la farmville que de hecho es lo que mas usamos en ese juego, los cambios de codigos y aumentar ciertos indicadores basicos..

Gracias MadAntrax por este post desde el 2013  ;-)
Feliz dia!

Hola, vayamos por partes.

Para modificar un trainer ya compilado deberás hacerlo como cualquier otra aplicación ya compilada; descompilar, desensamblar, analizar el código y recompilar de nuevo. Es una tarea bastante compleja sobretodo si se pretende hacer sin conocimientos de ingeniería inversa. Yo te recomiendo que en lugar de eso, intentes crear tu mismo el trainer, ya que será más sencillo. No tengo demasiado interés en juegos tipo flash/facebook, así que poco podré ayudarte, pero los que aquí se ha explicado debería bastar al menos para que puedas lograr "hackear" algo.

Otro tema que me viene a la cabeza es... es muy probable que ese trainer de farmville no se base en la edición/injección de memoria... quizás se trate de un trainer que envía paquetes TCP modificados al server para lograr el hack (no he analizado ni el juego ni el trainer, pero podría ser una opción), en cualquier caso te recomiendo que trates de crear el trainer por ti mismo.

Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: scillablade en 29 Agosto 2015, 07:15 am
Me gustaria preguntar algo, pasa algo curioso, estoy tratando de encontrar valores en el Cheat Engine 6.4 de un juego llamado Redident Evil Remake para Game Cube, jugado en el emulador Dolphin, y no puedo hayar los valores de memoria adecuados, pero sin embargo usando el mismo administrador de trucos del Emulador encuentro una posicion de memoria, que el mismo administrador de trucos codifica como un valor de 8 bits, es decir 1 byte e incluso cuando trato de ingresar manualmente la direccion de memoria arrojada por el administrador de trucos al Cheat Engine, no me deja trabajar con eso.

La direccion del Administrador de Trucos es 0x022a2aa 0x0b 11/11 entiendo que el valor siguiente a la direccion de memoria es el valor que contiene en hexadecimal y el siguiente en decimal, pero si lo ingreso en Cheat Engine y no refleja dicho valor..... quizas esta en el tipo de datos, 8bits son 1byte, pero asi no es como los busca el administrador de trucos, trabajaria en el administrador de trucos, pero lamentablemente en las versiones que he probado del emulador (de la 4.0.2 en adelante, betas y todo) no funciona el administrador de trucos del emulador y no he hayado foro alguno donde se hable de eso exepto para indicar como agregar los codigos de AR.

Cualquier ayuda la agradezco, gracias


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 31 Agosto 2015, 11:02 am
Me gustaria preguntar algo, pasa algo curioso, estoy tratando de encontrar valores en el Cheat Engine 6.4 de un juego llamado Redident Evil Remake para Game Cube, jugado en el emulador Dolphin, y no puedo hayar los valores de memoria adecuados, pero sin embargo usando el mismo administrador de trucos del Emulador encuentro una posicion de memoria, que el mismo administrador de trucos codifica como un valor de 8 bits, es decir 1 byte e incluso cuando trato de ingresar manualmente la direccion de memoria arrojada por el administrador de trucos al Cheat Engine, no me deja trabajar con eso.

La direccion del Administrador de Trucos es 0x022a2aa 0x0b 11/11 entiendo que el valor siguiente a la direccion de memoria es el valor que contiene en hexadecimal y el siguiente en decimal, pero si lo ingreso en Cheat Engine y no refleja dicho valor..... quizas esta en el tipo de datos, 8bits son 1byte, pero asi no es como los busca el administrador de trucos, trabajaria en el administrador de trucos, pero lamentablemente en las versiones que he probado del emulador (de la 4.0.2 en adelante, betas y todo) no funciona el administrador de trucos del emulador y no he hayado foro alguno donde se hable de eso exepto para indicar como agregar los codigos de AR.

Cualquier ayuda la agradezco, gracias

El tema de emuladores es un mundo a parte. Lo voy a explicar de una manera que se pueda entender... Cuando ejecutamos un juego o una room en un emulador sucede "algo parecido" al ejecutar una máquina virtual de vmware o virtualbox. Se crea y se reserva una zona de tu memoria ram física para ser usada en tu juego. Te pongo un ejemplo:

Imaginemos que tu PC físico tiene las siguientes posiciones ram:

Inicio 0x000
Fin 0xFFF

Cuando ejecutas un emulador, lo que sucede es que se reserva una zona de ram, suponiendo que se reserva la zona 0x100 hasta 0x500. Dentro de esa zona, para el juego emulado es como si tuviera la siguiente ram:

Inicio 0x000 (emulada) = 0x100 (real)
Fin 0x0400 (emulada) = 0x500 (real)

Por eso, cuando encuentras una dirección de memoria en el emulador jamás se corresponderá con la dirección ram "real" que podrás detectar con Cheat Engine. Espero que se haya entendido, no es fácil explicarlo de forma escrita jaja.

Para solucionarlo tienes 2 opciones; Utilizar el administrador de cheats integrado en el propio emulador o actuvar la función MEM_MAPPED:

(https://i.imgur.com/gVCxkiq.png)

De ésta forma, CE podrá escanear la memoria mappeada (por ejemplo en ficheros físicos utilizados por vmware o en secciones de memoria utilizados por los emuladores).

Pruebalo y nos cuentas, pero ya te aviso que una dirección encontrada en el emulador jamás se corresponderá en la ram física por lo que te he explicado


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: xzirx en 1 Septiembre 2015, 06:22 am
hay cheat engine para android u otro tan completo como este?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MCKSys Argentina en 1 Septiembre 2015, 06:50 am
hay cheat engine para android u otro tan completo como este?

Te has tomado, siquiera, la molestia de buscar en Google?  :¬¬

El 1er. resultado: click (http://forum.cheatengine.org/viewtopic.php?t=579943).

Y en el mismo foro, hay mucho más sobre el tema.

La cosa no es sólo preguntar y esperar respuestas. Te imaginas si todos hubiéramos hecho lo mismo? Hoy no tendríamos un foro... no? Hay que poner un poco de esfuerzo de uno mismo.

El ser autodidacta es muy importante en la Ing. Inversa.

Saludos!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: xzirx en 1 Septiembre 2015, 16:07 pm
si papa t entiendo no hagas higado, es obvio q ya lo habia googleado y tb tngo ese link, solo q lo habia probrado en bluestacks root y tenia algunos incovenientes con un ekipo rooteado talvez mi error fue preguntar en general y no en especifico. dclp x habert malogrado la mañana... pero grax x responder


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: MCKSys Argentina en 1 Septiembre 2015, 17:19 pm
si papa t entiendo no hagas higado, es obvio q ya lo habia googleado y tb tngo ese link, solo q lo habia probrado en bluestacks root y tenia algunos incovenientes con un ekipo rooteado talvez mi error fue preguntar en general y no en especifico. dclp x habert malogrado la mañana... pero grax x responder

D-4-ku3rd0pib3m34l3gr4ky4t3ng4s3s4nf0siti3n3spr0bl3m4sk0nun3quip0d3b3ri4smir4r3s3mism0f0r0xqu3ti3n3much4inf0s0br33s4t00lYn0s0ytuvi3j0sil0fu3r4t3h4bri40blig4d043ntr4r4l43scu3l43nv3zd3p4s4rxl4v3r3d4.

Saludos!

PD: Si estuvieras mandando un SMS, sería aceptable ese tipo de escritura, pero no es el caso... no?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: xzirx en 2 Septiembre 2015, 23:17 pm
ajaja que exigente y mantener una escritura correcta esta bien por respeto al foro pero no era necesario la ironía sino tambien serias parte, gracias por todo


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: .:UND3R:. en 3 Septiembre 2015, 16:50 pm
ajaja que exigente y mantener una escritura correcta esta bien por respeto al foro pero no era necesario la ironía sino tambien serias parte, gracias por todo

Lo que ocurre es que estás hablando con un usuario muy avanzado y de gran conocimiento, debes demostrar algo de respeto (no por sus habilidades si no por norma general y más aun cuando es una persona que lleva años en esta área), ese es el problema.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: infraud en 10 Septiembre 2015, 16:14 pm
Muchas gracias por la guia!

Habia cosas que no podia localizar pero sobretodo con la opcion de revisar el decrecimiento me a  facilitado mucho

Pero en el juego, sheltered, no he logrado "capturar" el tiempo,
el tiempo ahi se muestran por minutos, horas y dias,
intente con los minutos y despues con las horas, una cosa a la vez, uso la tecla ESC para poner en pausa el juego
y modifico las direcciones que resultan, tres en cada caso,
pero al quitar la pausa el tiempo sigue corriendo igual y si lo pauso de nuevo, el valor que habia puesto se muestra en el reloj, pero solo mientras esta pausado puesto que al correr el juego todo sigue normal

Mi objetivo es capturar el tiempo para despues hacer que corra mas lento, solo el tiempo, no que vaya mas lento el juego, ya use el speedhack y la funcion de este no es lo que busco,
me ha gustado mucho el juego pero la cuestion del tiempo es que va demasiado rapido a mi gusto

que puedo hacer en ese caso? hay que hacer alguna operacion mas compleja ya que el tiempo no es el usual contador hacia atras?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 10 Septiembre 2015, 16:21 pm
Muchas gracias por la guia!

Habia cosas que no podia localizar pero sobretodo con la opcion de revisar el decrecimiento me a  facilitado mucho

Pero en el juego, sheltered, no he logrado "capturar" el tiempo,
el tiempo ahi se muestran por minutos, horas y dias,
intente con los minutos y despues con las horas, una cosa a la vez, uso la tecla ESC para poner en pausa el juego
y modifico las direcciones que resultan, tres en cada caso,
pero al quitar la pausa el tiempo sigue corriendo igual y si lo pauso de nuevo, el valor que habia puesto se muestra en el reloj, pero solo mientras esta pausado puesto que al correr el juego todo sigue normal

Mi objetivo es capturar el tiempo para despues hacer que corra mas lento, solo el tiempo, no que vaya mas lento el juego, ya use el speedhack y la funcion de este no es lo que busco,
me ha gustado mucho el juego pero la cuestion del tiempo es que va demasiado rapido a mi gusto

que puedo hacer en ese caso? hay que hacer alguna operacion mas compleja ya que el tiempo no es el usual contador hacia atras?

probablemente estás modificando la variable que muestra el valor en pantalla... tienes que buscar la que le da el tiempo relamente... el como, es casi un arte jejeje


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: infraud en 10 Septiembre 2015, 16:32 pm
probablemente estás modificando la variable que muestra el valor en pantalla... tienes que buscar la que le da el tiempo relamente... el como, es casi un arte jejeje

Ahi si me mataste  :xD
Eso estaba leyendo ahora en unos comentarios de este mismo post
y parece que tengo que buscar con el increased
aunque en el CE, aparece increased value e increased value by,
he probado con increased value pero siempre me da muchas direcciones,
y eso es que no solo da las del tiempo, sino que tambien las estadisticas de los pj
que tambien son en valor ascendente

Como puedo diferenciarlas?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 10 Septiembre 2015, 16:43 pm
Muchas gracias por la guia!

Habia cosas que no podia localizar pero sobretodo con la opcion de revisar el decrecimiento me a  facilitado mucho

Pero en el juego, sheltered, no he logrado "capturar" el tiempo,
el tiempo ahi se muestran por minutos, horas y dias,
intente con los minutos y despues con las horas, una cosa a la vez, uso la tecla ESC para poner en pausa el juego
y modifico las direcciones que resultan, tres en cada caso,
pero al quitar la pausa el tiempo sigue corriendo igual y si lo pauso de nuevo, el valor que habia puesto se muestra en el reloj, pero solo mientras esta pausado puesto que al correr el juego todo sigue normal

Mi objetivo es capturar el tiempo para despues hacer que corra mas lento, solo el tiempo, no que vaya mas lento el juego, ya use el speedhack y la funcion de este no es lo que busco,
me ha gustado mucho el juego pero la cuestion del tiempo es que va demasiado rapido a mi gusto

que puedo hacer en ese caso? hay que hacer alguna operacion mas compleja ya que el tiempo no es el usual contador hacia atras?

Hola

Vayamos por partes… Dices que has encontrado la variable del tiempo, logras editarla pero cuando quitas el pause en el juego vuelve a su valor original, verdad? Eso ocurre porque has encontrado la variable que “pinta” o “dibuja” el tiempo en pantalla, pongamos un ejemplo:

Tengo una variable que almacena la vida del jugado, el jugador tiene 100 puntos de vida pero en lugar de almacenar 100 lo que hago es almacenarlo de forma ofuscada, por ejemplo en hexadecimal (64). Luego programo una rutina que me transforme el valor de mi variable de vida (64) a decimal (100) y lo muestro en pantalla, aquí te dejo el código de ejemplo:

Código:
Variable varVidaReal
Variable varVidaContador

varVidaReal = 0x64;
varVidaContador = Hex2Dec(varVidaReal)

Call dibujaVidaPantalla(varVidaContador)

Si utilizo el CE y busco el valor de la vida por su número absoluto (decimal = 100) terminaré encontrando la dirección de memoria que apunta a varVidaContador, editaré ese valor e inmediatamente la función dibujaVidaPantalla() pintará en la pantalla del juego la vida modificada. En la siguiente interacción, varVidaContador calculará su valor a partir de varVidaReal, eliminando tu “hack” y volviendo a pintar el valor real de la vida (100).

Espero que hayas podido entender éste ejemplo, lo que te ocurre en tu juego es exactamente lo mismo, pero con otras variables y funciones. ¿Cómo solucionarlo? No es complicado, pero tampoco es fácil…

Una vez encuentres el valor del tiempo “contador” deberás ver que instrucción escribe en esa dirección, para ello pulsa F5 sobre el address para meter un breakpoint on access, CE te dumpeará todos los opcodes que accedan a la variable contador. Uno de esos opcodes será el que almacene el valor real del tiempo (posiblemente expresado en segundos o milisegundos).

Si tengo tiempo me bajo ese juego e intento hacerlo yo mismo…


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: infraud en 10 Septiembre 2015, 16:55 pm
Gracias tio Mad por responder

El ejemplo si lo entendi pero lo de breakpoint on access, no   ;D
Probare de todos modos en las direcciones que resulten a ver cual es
solo espero entender lo que tenga escrito,
ademas que siempre aparecen bastantes

Seguire usando el increased value
y agradezco cualquier otra ayuda :D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 10 Septiembre 2015, 17:03 pm
Gracias tio Mad por responder

El ejemplo si lo entendi pero lo de breakpoint on access, no   ;D
Probare de todos modos en las direcciones que resulten a ver cual es
solo espero entender lo que tenga escrito,
ademas que siempre aparecen bastantes

Seguire usando el increased value
y agradezco cualquier otra ayuda :D

Entiendo entonces que te faltan algunos conceptos previos para poder completar lo que te propones... Cuando encuentres la variable del tiempo, le das doble-click para añadirla a la ventana inferior, selecciona el address y pulsa F5, activarás el debugger de CE, vuelve al juego y tras unos segundos el debugger te enseñará los opcodes que han accedido a tu address. Ahí podrás saltar al memory view, inspeccionar las instrucciones ASM y reversar el código hasta encontrar la rutina que calcula el valor real del tiempo.

Por la forma en la qu ete has expresado y las preguntas que has hecho doy por sentado que careces de esos conceptos básicos de ASM y reversing. Así que te tocará leer en lugar de empezar la casa por el tejado :)

Lo siento.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: infraud en 10 Septiembre 2015, 17:16 pm
Pos me voy a poner a ello,
a ver si logro captar algo

ASM y reversing cierto?

PD: por cierto cuando le doy a primer scan, con unknown initial value y en valye type: all
no me sale nada, ahi si como hago para encontrar la del tiempo si la que muestra en pantalla no sirven


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 10 Septiembre 2015, 17:34 pm
Pos me voy a poner a ello,
a ver si logro captar algo

ASM y reversing cierto?

PD: por cierto cuando le doy a primer scan, con unknown initial value y en valye type: all
no me sale nada, ahi si como hago para encontrar la del tiempo si la que muestra en pantalla no sirven

Partiendo de la base en que puedes encontrar la dirección visual del tiempo, utiliza la opción F5, los opcodes que accedan a ella estarán muy cerca de la dirección del tiempo real.

Puedes tambien intentar adivinar el método utilizado para almacenar el timepo en memoria, la mayoría de juegos lo hace en segundos, es decir:

Si tienes un juego que marca la hora 09:34:15 am su equivalente en segundos es 34440

EDIT, intenta completar el siguiente tutorial, que es más completo: http://foro.elhacker.net/ingenieria_inversa/tutorial_cheat_engine_nivel_avanzado_tutorial_completo-t413372.0.html


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: infraud en 10 Septiembre 2015, 17:48 pm
hmm si voy a intentar en segundos

Use el debuger en las tres direcciones que me salen pero con el tiempo que se pinta en pantalla, no me salio nada con F5 asi que lo hice como decias en una parte de esta guia, tras dejar correr el juego unos segundos, se capto otra "cosa" y al meterme en ello aparecieron cientos de numeros y letras en secciones, hasta ahi llegue

Vere el tutorial avanzado... avanzado?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: quesudoqueso en 29 Septiembre 2015, 08:24 am
hola que tal, eh intentado bastante tiempo poder hackear un juego pero no eh podido...........quisiera saber si lo prodrias hacer, para vos seria pan comido jajja el juego es tiny toons acme all star de sega genesis con emulador obviamente.....es un juego que trae deportes en especial el football......si te fijas en el juego cada personaje tiene una barra de energia que se gasta al realizar un movimiento especial, yo solo e detectado la direccion del valor y la cambie visualmente...pero no puedo hacer que no decresca PD: el valor maximo de energia es 24...es el maximo de cada player!!! por favor ayudame :D


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 29 Septiembre 2015, 08:26 am
que sea pan comido no quiere decir que te lo tenga que hacer de gratis... si lo quieres hazlo tu, aquí se te ayuda, el fin de este foro es aprendizaje...


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Machacador en 2 Noviembre 2015, 12:34 pm
He hecho todo como dice aquí en muchos otros tutoriales, y no he podido tener un millón de Euros en "Euro Truck Simulator 2"... tendré que seguir llevando cargas para poder ganar dinero y tener mi propia empresa de camiones...

Uff... que pesadas están las carreteras!!!... jejejejeeeeee...


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Isiparate en 12 Noviembre 2015, 20:53 pm
He hecho todo como dice aquí en muchos otros tutoriales, y no he podido tener un millón de Euros en "Euro Truck Simulator 2"... tendré que seguir llevando cargas para poder ganar dinero y tener mi propia empresa de camiones...

Uff... que pesadas están las carreteras!!!... jejejejeeeeee...
El Euro Truck Simulator 2 usa conexión a internet constantemente, no recuerdo si necesitas internet para jugar pero era algo así, es posible que guarde alguna variable en el server. ¿Has probado a hacerlo sin conexión a internet?



Antes que nada quiero felicitarte por el tutorial, por el tiempo invertido en responder a los que han expuesto sus dudas y tal. También quiero avisar de que me voy a extender un poco (tranquilos tampoco voy a escribir la biblia jaja) y de que, como he leído en las últimas páginas, estoy intentado empezar la casa por el tejado ya que carezco de conocimientos básicos de ASM y de muchas otras cosas que comentáis por akí (i.e. dumpear, opcodes, offset... cosas que no entiendo o no se lo que son) pero como me he dado cuenta tarde de que iba a necesitar más conocimientos de los que kreía y he empezado, voy a exponer lo que quiero hacer y hasta donde he llegado y volveré a hacer un inciso en esto:

EDIT: A los que leáis esto con intención de resolverme dudas y ayudarme: Antes que nada gracias, ;D me he extendido más de lo que quería en un principio con este post para evitar dobles posteos y tal (sigue sin ser la biblia tranquilos xd), así que para ahorraros algo de tiempo os aconsejo que primero lo leais todo (ya que algunas dudas que tengo al principio las acabo resolviendo yo solo). Espero que esto os sirva de algo y también espero que todas las dudas y preguntas que posteo ayuden a mejorar el tutorial o al contestarlas resuelvan también las dudas que puedan tener otros.

Bien, lo que quiero es hacer un trainer para el FlatOut, el primero, para este a diferencia de los siguientes juegos de la saga no hay ningún trainer hecho, por lo menos que yo haya encontrado, tampoco he buscado mucho porque no me interesa un trainer hecho (la cosa es que al no haber trainers no hay información sobre como modificar/encontrar algunos valores complicados), el juego ya me lo pasé al 100% de forma legal y ahora lo que quería era explorar más el juego, coches con mucha potencia por ejemplo etc...
El CE ya lo había utilizado alguna vez para encontrar y cambiar valores, en eso no tengo problema, pero no sabía es que hay que meterse al lio para que cada vez que abras el juego puedas cambiar valores, es decir, yo lo abría, buscaba el valor lo cambiaba y cada vez que lo quería volver a alterar lo volvía a buscar, me iba bien en la ignorancia hasta que me he topado con valores más complicados de encontrar (más que lo típico que suele ser la vida, maná, dinero...) y me decidí a buscar un tutorial más general sobre el uso del CE en vez de buscar uno especifico de como usarlo en mi juego.

Algunos de los valores que estuve tocando o quería cambiar son:
El dinero: este lo encuentro fácil no tengo problemas mas que los que expondré luego que son básicamente con lo de que cambian las address cada vez que ejecuto el juego.
La potencia: este no sabía como dar con el pero después de leer el tutorial ya se como buscarlo.
La velocidad: este estuve intentando hallar el value antes de ver este tuto y probe en kph, en mph, en ms... jajaja al final gracias al tuto logré dar con una variable que afectaba a la velocidad, el problema es que en este juego (en otros creo que no es igual) la velocidad no es value real si no que solo se muestra en pantalla, no me refiero a que solo modifico el valor que esta en la pantalla si no a que no hay un solo valor que sea la velocidad sino que depende de varios factores que forman la velocidad y hay un vlaue que la muestra, he llegado a esta conclusión porque la vez que más me acerqué a un valor que afectara a la velocidad fue cuando dí con un valor de 10 cifras que si lo aumentaba hacía que una de las ruedas empezara a girar, quemaba rueda básicamente (solo una porque creo que influye lo mejorado que tengas el coche, neumáticos, transmisión... y las pruebas las hice con un coche básico sin modificar) y conseguía alcanzar una velocidad máx mucho mayor y mucho más rápido (es decir no era poner un value de speed y instantaneamente me ponía a esa velocidad), esté ultimo valor es el que más estuve trabajando pero como no se utilizar bien los pointers ni los AAsripts perdía el valor cada vez que iniciaba el juego o lo crasheaba haciendo pruebas, se como usarlos, porque está en el tutorial, pero como no lo entiendo no estaba cómodo y no podía controlar bien lo que hacía me decidí por empezar por algo más básico y que no me llevara más de 5 minutos encontrar el value para poder hacer pruebas y ir entendiendolo poco a poco, el dinero.
Como anécdota curiosa, no lo he comprobado, pero creo que hay dos values de dinero, uno que controla todas las cifras menos las dos últimas y otro que controla estas dos últimas, lo digo porque de repente no encontraba el dienro con exact value y me estaba volviendo loco porque antes no me pasaba, siempre aparecía, así que lo busque con unknown/increse/decrese value y dí con lo que digo, un value que era el dinero pero las dos últimas cifras eran 00 (en el juego en ese momento tenía xxxxxxxx44), no le dí más importancia en ese momento para centrarme en lo que me trae más de culo (volvedme a perdonar que me extienda tanto pero es que no se muy bien como explicarlo de forma clara).

Paso a explicar lo que hice, encontré el valor y cree un AAscript, esto mismo también lo hice con lo que comentaba de la velocidad pero no sabía que poner en el script ya que realmente no quería que hiciera nada, solo que "recordara" (más bien buscara) el address para poder seguir experimentando con ese value sin tener que buscarlo cada vez que iniciara el juego. Como no entendía el funcionamiento al final lo borré y he seguido con el dinero.

Ok, sigamos, resumo: hallo el valor, lo bajo, buco que escribe en esa address (addr. a partir de ahora), voy al juego muevo el dinero y obtengo una instrucción y a partir de esta instrucción creo un script con inyección de código que ahora pondré, compruebo que funciona y reinicio el juego.
Ahora la address que tenía abajo con el valor del dinero ya no muestra nada (ha cambiado), el script sigue funcionando así que lo he hecho bien, como a partir del script no sé encontrar la addr. para poder ver y modificar ese valor en tiempo real la vuelvo a buscar (akí el proceso y algunas de mis dudas resumidas en una foto):

Hay muchas preguntas y muchas cosas que no entiendo, pero no espero que me lo expliquéis todo, al final comentaré esto un poco.
(http://i.imgur.com/AjuvrJdh.png)
(Por cierto a ver si me podéis ayudar brevemente ¿como hago para que la imagen quede cuadrada? ¿y donde la puedo subir para que se vea bien y no se borre al tiempo o se cambie por otra? es que he visto que muchas fotos dejan de estar disponibles, se caen o aparecen otras sin sentido, está la he subido a Imgur, no quiero desviar el tema comentadme por mp o lo que sea y cuando lo tenga claro borraré este parentesis).

*Si esta linea fuera por ej.: 06590004 querría decir que el juego usa memoria relativa y solo funcionaría el trainer en mi PC ¿no? Para que funcionara en todos habría que hacer un AOBScan para hayar la dirección correcta. Esto es lo que he entendido pero me surgen dudas que me gustaría aclarar para ir más suelto:
¿Que es exactamente esta línea? en este caso "flatout.exe" es el proceso ¿y +4DB55? ¿Es un pointer de esos?
Me lio mucho con lo de las direcciones y los pointers y tal. ¿Sería xxxxxxxxx (direción en la que ejecuta el proceso ¿En este caso sería 00000B 3C?) + 4DB55 = yyyyyyyy (¿Que sería esta dirección?)

**Aunque mi intención era que al pulsar un botón se añadieran 50000, ha sido un fallo de novato por no entender Assemble ni mucho hex, creo que lo que intentaba hacer sería substituyendo el código "mov [esi+74],C350" o "mov [esi+74],ecx" por "add [esi+74],C350" lo cual haría que al ejecutar el script con una hotkey diera la instrucción de ¿comprar? (no se si haría esto o directamente inyectaría el código, o es que "la instrucción" es la acción de inyectarlo, esto no lo entiendo mucho pero sigo) pero en vez del código normal usaría "add [esi+74],C350" y me añadiría 50000 ¿correcto? Seguro que hay formas más simples de hacerlo pero de momento no se como encontrar la address del dinero cada vez que inicio el juego (creo que es eso de los pointers pero no lo entiendo), creo que podría obtener la addr. cada vez que inicia el juego con un pointer y poder añadir en el trainer una hotkey para incrementar 50000 a ese valor, pero no se si funciona así... xd

***Se que esto es básico pero no lo acabo de comprender por más que leo y releo el tuto (aunque conforme voy leyendo páginas y releyendo voy entendiendo más) ¿Como puedo obtener la address del dinero directamente cada vez que inicio el juego? Es decir, se que se almacena en esi+74 ¿pero como obtengo el address para buscarla ver el value y hacer lo que quiera sin tener que complicarme tanto con Sripts y tal? Es decir, nada más ejecutar el juego es posible obtener la addr. que busco con la información que tengo, para poder probar cosas y tal. O si ya la tengo ¿como la puedo comprobar y modificar sin tener que inyectar códigos y eso? Espero que me entendáis porque esto es lo que más me está costando y me cuesta explicarme jajaja creo que si logro comprender esto doy un paso muy grande porque es de lo que más me frena...

Acabando, vuelvo a lo que he comentado brevemente un par de veces:
No se si debería meterme en el fregao de aprender ASM, auto-assembler y todo eso, cuando lo único que quiero es encontrar un valor (esto sé), cambiarlo y que cuando vuelva a iniciar el juego pueda seguir alterando ese valor. A partir de aquí tengo más o menos claro como continuar, codes, trainers... Eso creo que lo he entendido y cosas algo más complejas, me quiero explicar, no es que lo tenga todo claro pero en estos caso más complejos como por ejemplo el de que una instrucción se aplica a varias addr. (no se si esta bien dicho así, me refiero a lo de nopear tu daño y que el nopeo afecte a tus enemigos también), al ser contratiempos eventuales no me interesa (por lo menos de momento) comprender como funcionan para solucionarlos, me bastaría con saber hacerlo, recordar los pasos y saber "un poco" lo que he hecho. Un ejemplo de lo que quiero decir es que ya se como hackear el dinero, se como obtener los valores y hacer un script básico o nopear una instrucción, lo que hay en el tutorial más o menos se como hacerlo pero no acabo de comprender lo que estoy haciendo, me gustaría ir más suelto y poder hacer un trainer más a mi gusto, por ej en un tutorial nos enseñaba a nopear, podría nopear la instrucción de gastar dinero y sería como tener dinero infinito, pero no es exactamente eso lo que quiero, en otra nos enseña a inyectar un código para que en vez que gastar dinero nos lo sume, pero yo lo que quiero es tener más soltura para poder hacer lo que quiera, por ejemplo: [hotkey] sumar 50000 [hotkey] congelar el dinero [hotkey] set 100000 (poner el dinero en 100.000 sin alterar nada más, sin hacer freeze ni cambiar cosas básicas del juego como que al comprar se gaste dinero en ver de darte más, solo como si fuera un truco, luego ya si quiero congelar o hacer alguna movida "más compleja" pues con otra hotkey o otro script), además de modificar valores algo más complejos como la velocidad, la potencia y algún valor más... Espero que podáis entender lo que quiero decir y me ayudéis a encontrar lo que necesito saber, que me lo expliquéis o me digáis que tengo que aprender o sobre que tengo que leer algo, tampoco me gustaría ahora verme forzado a invertir horas en aprender lenguajes o cosas que apenas necesito. Para remarcar, lo que quería era simplemente alterar valores para divertirme, hacerlo en un día o dos invirtiendo unas 10h o algo así, habiendo comprendido es un poco más complejo de lo que esperaba me propongo invertir horas para obtener unos conocimientos básicos que me permitan modificar cosillas de este u otros juegos libremente, sabiendo un poco lo que estoy tocando y crear algún trainer pero lo justo para esto, que no se cuanto es. xd

Por último, haciendo el tutorial del cheat engine me quede atrapado en lo de los pointers , es complicado, porque no me quede atrapado porque no me lo podía pasar si no porque no comprendía el funcionamiento, pasarmelo me lo pasé, es fácil solo seguir los pasos pero... a ver si hay algo que no he entendido, voy a volverlo a hacer y os postearé las dudas que me vayan saliendo.

Gracias de antemano Mad Antrax eres un jefe! Salu2

PD: Siento no ponerlo todo tan estructurado como hacéis algunos con negrita y colores y tal pero no se como se hace y no me apetece ponerme a aprender BBCode también que batante liado ando con esto y otras cosillas jajaja Llevo todo el día preparando esto para intentar que se entienda y no dejarme nada, y ahora se viene toda la noche seguramente para preparar lo del tuto del CE  :-( . jajaja espero con ansias vuestras respuestas!



Uff al final este post si que va a ser largo por eso de evitar el doble post pero mejor así jajaja
A lo largo de la noche he completado el tutorial del CE que propuso Mad Antrax, hasta el "Step 7: Code Injection" de momento...
A modo de repaso y ejercicios he hecho algunas capturas y he ido escribiendo sobre ellas dudas que me han ido surgiendo, cosas que no entendía, preguntas y también lo que creo que he entendido, como me ha llevado largo comprenderlo y prepararlo hay cosas que he escrito como dudas o preguntas y que luego yo mismo me he contestado al ir comprendiendo cosas sobre la marcha. Lo que pido es que respondáis a las preguntas o dudas y corrijáis mis afirmaciones si no son correctas, también para el "post anterior" (arriba de la linea separatoria) pero como ya puse no pido que me expliquéis cosas muy básicas de otros temas (tampoco pido que no me los expliquéis eh jaja si tenéis tiempo y ganas...) ni que me respondais a todas las dudas o preguntas porque para vosotros la mayoría seguro que son tonterías o cosas básicas que debería saber, no quiero desviar el post ni nada pero si que me aclaréis dentro de lo posible las dudas que tengo, aunque sea solo diciendome lo que tengo que aprende o que tengo que buscar para leer sobre algo que me resuelva la duda (esto me da un poco de palo porque no quiero invertir "demasiadas" horas en esto pero bueno, si no me dedicaría yo a indagar y leer para resolver duda por duda, aprendería ASM y tal, pero como no me apetece xd recurro al foro y a vuestra sabiduría, espero que me podáis ayudar). Paso a postearlas:

(http://i.imgur.com/30C7Rd5h.png)

(http://i.imgur.com/JKVzVVDh.png)

(http://i.imgur.com/3ZPEEUih.png)

Esta es en la que más me extiendo y es con la que más me lio así que voy a intentar aclarar un par de cosillas :P : Cuando hablo de "Value" hago referencia a la linea que tiene como descripción Value. Cuando hablo de Value hago referencia al value (es decir, valor o cantidad, generico). Y cuando hablo de "value" me refiero a el valor final que es el que nos muestra el "juego". Por ejemplo: Añadiendo 500 de Value a "Value" sumamos 500 de "value", traducido a algo normal sería: Añadiendo 500 de value a "Vida" sumamos 500HP.
(http://i.imgur.com/kdOp1Rqh.png)

Hacer esto me ha ayudado a desenvolverme mejor con CE, tengo ganas de acabar el tutorial y ver que puedo hacer en el FlatOut. Anoche, de perdidos al río empecé el Step 7: Code Injection, porque ya se hacerlo y pensaba que no me costaría, pero lo dejé para hoy porque ya me salieron un par de dudas.  ;D

El procedimiento para inyectar código lo explica de manera diferente en el tutorial de Mad Antrax y en el de CE, a ver si alguien nos aclara las diferencias entre usar un método u otro y cual es el "mejor" proceso; voy a enumerar a grandes rasgos las dos diferencias principales:
 
1. El tutorial del CE cuando creamos AA dice que le demos a "Code injection" directamente en vez de darle primero a "Cheat Table framework code", en el tutorial Mad Antrax recalca que sigamos un orden: primero a "Cheat Table framework code" y luego a "Code injection". Según he comprobado esto es porque si los haces en orden contrario la parte de [DISABLE] queda vacía (y por lo tanto no se podría desactivar el script ¿cierto?). (Ya que estamos, mi nivel de inglés es el justo, en el tutorial explica un poco las lineas del AA y dice que "alloc" asigna un bloque de memoria para nuestro "code cave" ¿Que quiere decir esto? Pone que antes de w2000 había que encontrar "code caves" en regiones de memoria que no usara el juego, "and will these days cause errors when trying to be used" debido a SP2de XP y los NX bit de los nuevos CPU's. No entiendo bien esa frase ¿Pueden causar errores intentando ser usados? ¿El que? En fin, este paréntesis os lo podéis ahorrar de contestar si no tenéis ganas xd)

2. En el tutorial del CE dice que pongamos el código que queremos inyectar debajo de "newmem:", donde está el texto, en vez de debajo de "originalcode:" ¿Esto hace que cambie algo? También recomiendan borrar la linea que hace que disminuya tu vida, o hacer que aumente en 3 puntos tu vida (el code original te quita uno y el objetivo del tuto es que suba 2 puntos tu vida) eso último es similar a lo que hace Mad Antrax en su tuto, esto hace que me surja una duda: el original code es "dec [ebx+00000478]" ¿no sería lo más fácil substituir esa linea por "add [ebx+00000478],2" (es lo que he hecho yo para pasar el tuto)? Concluyendo, de la forma que explica el tutorial del CE ¿se podría activar y desactivar el cheat? Sin usar "Cheat Table framework code", ¿o solo en caso de que usaramos "add [ebx+00000478],3" debajo de "newmem:" y dejaramos "originalcode:" sin tocar?

Otra cosa, como he dicho para completar el tutorial he subtituido "dec [ebx+00000478]" por "add [ebx+00000478],2" y ahora cuando veo que es lo que escribe la addr del value me aparece esta instrucción "add dword ptr [ebx+00000478],02" ¿Por que aparecen "dword" y "ptr"? Esto aparecía también en algunas instucciones del FlatOut y busque muy por encima que significaban (para saber como editarlo), pero poco entendí de lo que encontré así os agradecería que me explicarais brevemente que son y sobre todo por que aparecen de repente. (A unas malas que me paséis algo para leer, aunque como digo ya leí algo pero como tampoco lo entendía mucho y no es importante lo dejé estar)


Acabando, me haríais un gran favor si me explicarais este punto:
Citar
Notice 2:
In some games the original code can exist out of multiple instructions, and sometimes, not always, it might happen that a code at another place jumps into your jump instruction end will then cause unknown behavior. If that happens, you should usually look near that instruction and see the jumps and fix it, or perhaps even choose to use a different address to do the code injection from. As long as you're able to figure out the address to change from inside your injected code.
Porque por ejemplo el código del dinero del FlatOut estaba compuesto de 2 instrucciones (no se si se refieren a eso), y lo de los saltos no lo entiendo muy bien pero bueno porke no entiendo el idioma (ASM), se refiere a que una instrucción puede saltar a tu código y modificarlo ¿no? y que para evitar esto habría que buscarlo en el Memory Viewer y "nopear" el salto, o inyectar el código antes del salto ¿Correcto?

Bueno voy a seguir con los dos últimos steps del tutorial "Multilevel pointers" y "Shared code" a ver si me aclaro y cuanto me lleva jajaja con lo que sea ya postearé algo más. De nuevo gracias por vuestro tiempo.
EDITO: Mejor voy a esperar un tiempo a que me respondáis y mientras a ver si encuentro este tutorial si lo llegaste a publicar:
Para descubrir ese puntero he tenido que usar una herramienta llamada Multi-Level Scan Pointer. Ahora no tengo tiempo para explicarlo, pero mañana os posteo un tutorial para utilizar punteros :)
¡Si no me esperaré a que lo hagas! jaja Mientras a ver que puedo ir aprendiendo sobre todo esto.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Mad Antrax en 18 Noviembre 2015, 11:03 am
No había leído esa biblia jajaja. Dame un tiempo que pueda leerlo todo bien y despacio y te respondo a todas tus preguntas, vale? Saludos


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Isiparate en 19 Noviembre 2015, 02:03 am
No había leído esa biblia jajaja. Dame un tiempo que pueda leerlo todo bien y despacio y te respondo a todas tus preguntas, vale? Saludos
¡Muchas gracias Mad, admiro tu paciencia y tu dedicación! Ya encontré el tutorial de los Pointers (es decir, el tutorial completo) y aclare bastantes de las dudas que tenía, esperaba acabar el otro tutorial+el del CE y editar mi respuesta borrando las dudas que ya tenía resueltas pero me he quedado atascado y también se me complicaron un poco las cosas intentando hacer el trainer del FlatOut así que decidí dejarlo a ver si las respuestas podían ayudarme, de nuevo gracias, ojalá todos los profesores tuvieran tu dedicación ¡¡No me habría salido del instituto!!  :xD
También he estado leyendo y estudiando algo sobre todo esto desde que escribí esa reply para tener unos cimientos más sólidos, poco a poco jajaja.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: javiervetero en 2 Febrero 2016, 17:39 pm
Hola excelente tutorial porque además subes los juegos para ir modificando, sin embargo tengo un problema, quiero cambiar un valor de un juego de Android y para ello estoy usando el bluestack, encontré el valor del juego y lo modifique, y en el juego cambio, sin embargo al cabo de unos segundos volvió al valor normal. busque de nuevo el valor, lo modifique pero vuelve a cambiarlo a pesar de bloquear la casilla, ojala me puedas ayudar me paso como en 2 juegos, el que quiero se llama empire four kingdom. Gracias


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Isiparate en 7 Marzo 2016, 00:47 am
...sin embargo al cabo de unos segundos volvió al valor normal. ...se llama empire four kingdom. Gracias
Es porque es un juego online, los valores se guardarán en el servidor no en el cliente. :)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Jinta en 11 Julio 2016, 10:42 am
Ruego por un tutorial avanzado de juegos online:c no necesariamente con cheat engine, pero es que me gustaría aprender de verdad, al menos concepto general, y programas útiles para hacerlo pues, conozco sólo uno que no sé su nombre técnico, el "Wpe Pro" , además tengo problemas para descargarlo; la pag oficial anda con dramas o el edge y chrome no me dejan entrar al sitio, y realmente no lo encuentro por ahí libre de virus, intenté buscar alternativas con pésimos resultados... I need help :c


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Terk0 en 19 Noviembre 2016, 10:32 am
Completisimo, pedazo de hilo, por si os sirve de algo, he estado buscando mucho sobre el programa y hay una información bastante completa para complementar todo esto en NO SPAM Saludos!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: deadly913 en 29 Noviembre 2016, 21:41 pm
hola me llamo joaquin,
sabes que cuando uso el tiny o tony, me aparece este mensaje cuando ejecuto el trainer que creo
Error:...gram Files (x86)\Cheat Engine 6.5\autorun\monoscript.lua:1682: attempt to index a nil value (local 'mfm')



en cambio cuando lo hago con Gigantic osea es como que se olvida la codificacion o nose, pero no me funca y ya probe en 64 bits, tengo 64 bits, pero aun asi nada, espero que puedas darme alguna recomendacion o explicacion, para entender mas o menos que es lo que me sucede, saludos buen tuto


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: karlitoxrey en 30 Marzo 2017, 00:11 am
Buenas,hay alguien por aqui que pueda ayudarme??
me gustaria saber como hay que hacer para que me modifique los resultados finales,porque me modifica el del juegopero cuando terminano me cuenta eso que modifique me pone el real y no el hackeado. se entinde? es en un juego del GSN "big money". alguien que me ayude¿¿???


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 30 Marzo 2017, 00:20 am
Buenas,hay alguien por aqui que pueda ayudarme??
me gustaria saber como hay que hacer para que me modifique los resultados finales,porque me modifica el del juegopero cuando terminano me cuenta eso que modifique me pone el real y no el hackeado. se entinde? es en un juego del GSN "big money". alguien que me ayude¿¿???

los datos están en servidor y no cliente, cualquier cambio que hagas será solo estético


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: kakashi hatakext en 27 Abril 2017, 01:50 am
hola que tal mi problema esq yo Creo el trainer y funCiona muy bn pero Cuando Cierro el juego y lo vuelvo a ejeCutar el trainer ya no me funCiona algun metodo para que funCione siempre? graCias


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 27 Abril 2017, 01:53 am
tu juego tiene direcciones dinamicas, tienes que buscar las estaticas creo que esto puede ayudarte
https://www.youtube.com/watch?v=8CJdV1Vfvv0 (https://www.youtube.com/watch?v=8CJdV1Vfvv0)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: kakashi hatakext en 1 Mayo 2017, 21:06 pm
graCias amigo pero lastimosamente no me funCiono usted podria ayudarme o enseñarme Como puedo haCer el trainer para empire earth pero que se pueda usar siempre que se abra el juego ???


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 1 Mayo 2017, 21:59 pm
que no te funcionó (da detalle y se especifico que hiciste y que falla)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: kakashi hatakext en 2 Mayo 2017, 20:29 pm
bueno hiCe los pasos del video de la Creasion total del trainer y en la desCripsion dejan un arChivo que segun eso se utiliza para que el trainer sirva siempre lo que no se esq datos debo poner ahi ya que en el video el solo Copea y pega pero Como son juegos diferentes lo que aparece en el arChivo es esto Cuatro arChivos kon estos nombre

1 AutoAttach
2 button+editbox
3 FreezeTimer
4 Regluar Button

y en Cada uno algo asi

1 form_show(CETrainer)
strings_add(getAutoAttachList(), "HillClimbRacing.Windows.exe")


2 function CEButton1Click(sender)
writeFloat("[[[[[HillClimbRacing.Windows.exe+001DFB28]+14c]+1c]+1f4]+a8]+218", getProperty(CETrainer_CEEdit2,"Text"))
writeInteger("HillClimbRacing.Windows.exe+1DFB54", getProperty(CETrainer_CEEdit1,"Text"))
end


3 local t = createTimer(nil)
 timer_onTimer(t, CEButton2Click)
 timer_setInterval(t,1000)
 timer_setEnabled(t, true)


4 function CEButton1Click(sender)
writeFloat("[[[[[HillClimbRacing.Windows.exe+001DFB28]+14c]+1c]+1f4]+a8]+218", 9999999)
writeInteger("HillClimbRacing.Windows.exe+1DFB54", 0)
end


en el video el si sierra el trainer y sierra el juego vuelve abrir el juego y el trainer y funCiona normal ......................................ayuda graCias

el link del video es este https://www.youtube.com/watch?v=j-uSFCKwQ9I


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 2 Mayo 2017, 23:36 pm
te dejo el mismo video de la primera vez... nada haces intentando crear un trainer sin tener los static pointers... si no lo entiendes te recomiendo dejar de lado este proyecto, hacer los tutoriales de ingenieria inversa y cracking y despues de entenderlos retormarlos, estas cosas a pesar de parecer simples requieren de un nivel de conocimientos base

https://www.youtube.com/watch?v=8CJdV1Vfvv0



Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: DARKNESS1994 en 23 Junio 2017, 05:21 am
excelente tuto me sirvio bastante pero podrias acer uno para saber el codigo de un objeto en un juego para poder reeplazarlo por otro, o si ya hiciste un tuto sobre eso podrias darme la direccion de la pagina me srias de gran ayuda por cierto el juego que trato de hakear es el juego divinity 2  the dragon knight saga


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 23 Junio 2017, 05:23 am
excelente tuto me sirvio bastante pero podrias acer uno para saber el codigo de un objeto en un juego para poder reeplazarlo por otro, o si ya hiciste un tuto sobre eso podrias darme la direccion de la pagina me srias de gran ayuda por cierto el juego que trato de hakear es el juego divinity 2  the dragon knight saga

no lo hará XD este tema es de hace 4 años, por otro lado, eso es harina de otro costal no creo que sea posible con CE, para eso hay que tener por lo menos algo de seriedad en conocimiento de ingeniería inversa y hacer un inyector para eso


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: doblebw en 12 Julio 2017, 16:34 pm
Que buen TUTORIAL. El mejor que he visto hasta ahora!
Les aviso que no se nada!
Pero puse en práctica este TUTORIAL con el Royal Revolt 2.(Que por cierto, no hay ningún hack para ese juego, son todas huevadas las que suben).
Logré que al consumir GEMAS, en lugar de decrecer, sume.
Pero, al rato el juego se desconecta y resulta que me figuran las GEMAS como sino hubiera existido el hack, es decir, me contó las que consumí.
Alguien me ayudaría con Royal Revolt 2?
Gracias!


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 12 Julio 2017, 16:39 pm
usualmente cuando sucede eso quiere decir que los datos los lleva el servidor, el cliente es solo una visión, de eso, así que si cambias los numeros, es solo una ilusión, porque no cambiará la "verdad" (la información alojada en el server y que se usa para validar)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: doblebw en 12 Julio 2017, 16:44 pm
usualmente cuando sucede eso quiere decir que los datos los lleva el servidor, el cliente es solo una visión, de eso, así que si cambias los numeros, es solo una ilusión, porque no cambiará la "verdad" (la información alojada en el server y que se usa para validar)

Gracias por la info!
Anteriormente había probado lo básico (para mi) que no se mucho. Ponerle directamente 999999 a todo. Y me dí cuenta que solo era una ilusión.
Pero después de leer el tutorial, probé cambiar el comportamiento de las gemas a la hora de consumirlas. Para que en lugar de restar, sume.
Me funcionó, pero luego te desconecta y te das cuenta de que era otra ilusión :(.
Algun concejo?


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: engel lex en 12 Julio 2017, 16:54 pm
si los datos están en servidor nada se puede hacer (implicaría hackear el servidor y olvidate que eso sea facil)


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: doblebw en 12 Julio 2017, 16:58 pm
OK. Entiendo. Muchas gracias y los felicito por este espacio de aprendizaje.


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: cartu en 17 Octubre 2017, 15:34 pm
hola recien entro y mi pregunta es el cheat sirve para los juegos online tipo alpha, delta island war esos no aparecen como juegos en el cheat sino comp pagina web con numero de codigo.... grcias >:( >:( >:( >:(


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: llShidoll en 24 Mayo 2018, 02:38 am
Hola.

Saludos men,  me gustan tus tutoriales y eh aprendido mucho muchas gracias. ::)

lo siguiente es por que no eh podido hacer el  truco con CE 6.2 que es el que uso para tener el máximo de daño con el arma en RE 2 sles 009.76 en la plataforma expsxe 2.5 ya eh intentado de las maneras que explicas en tus tutoriales pero no lo encuentro como hacer el truco en el juego haber  si me ayudas o me das una guía para ello.

De antemano muchas Gracias.   :silbar:


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: p3rn4l0ng4 en 10 Junio 2018, 00:24 am
hello friends I found a very good game online facio for a bypass
and I already have a functional teleport hack.
I have the Speed pointer, hp and damage
I can do a tutorial for the new ones to learn and those who already know how to help me

if the adm of the forum guides me where I can do it not to do in this thread :silbar:

----------------------------------------------------------------------------------------------------
hola amigos yo encontre un juego muy bueno online facio para un bypass
y ya tengo un teleport hack funcional .
tengo el puntero del Speed , hp y daño
puedo hacer un tutorial para los nuevos aprender y los que ya sebem echar me una ayuda

si el adm del forum me guia donde puedo hacero para no hacer en este hilo


Título: Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
Publicado por: Jersa89 en 28 Marzo 2019, 17:11 pm
Saludos, me gustaría poder contactarte por e-mail para que pudieras ayudarme con un problema que tengo atorado con un juego y cheat engine, de antemano muchas gracias.