Cheat Engine
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Cheat Engine es un programa 煤til para encontrar d贸nde se guardan valores importantes dentro de la memoria de un juego en ejecuci贸n y cambiarlos.
Cuando lo descargas y lo ejecutas, se te presenta un tutorial sobre c贸mo usar la herramienta. Si deseas aprender a usar la herramienta, se recomienda encarecidamente completarlo.
驴Qu茅 est谩s buscando?
Esta herramienta es muy 煤til para encontrar d贸nde se almacena alg煤n valor (generalmente un n煤mero) en la memoria de un programa.
Generalmente los n煤meros se almacenan en forma de 4bytes, pero tambi茅n podr铆as encontrarlos en formatos double o float, o puede que desees buscar algo diferente de un n煤mero. Por esa raz贸n, necesitas asegurarte de seleccionar lo que deseas buscar:
Tambi茅n puedes indicar diferentes tipos de b煤squedas:
Tambi茅n puedes marcar la casilla para detener el juego mientras escanea la memoria:
Teclas de acceso r谩pido
En Editar --> Configuraci贸n --> Teclas de acceso r谩pido puedes establecer diferentes teclas de acceso r谩pido para diferentes prop贸sitos, como detener el juego (lo cual es bastante 煤til si en alg煤n momento deseas escanear la memoria). Otras opciones est谩n disponibles:
Modificando el valor
Una vez que encontraste d贸nde est谩 el valor que est谩s buscando (m谩s sobre esto en los siguientes pasos), puedes modificarlo haciendo doble clic en 茅l, luego haciendo doble clic en su valor:
Y finalmente marcando la casilla para realizar la modificaci贸n en la memoria:
El cambio en la memoria se aplicar谩 inmediatamente (ten en cuenta que hasta que el juego no use este valor nuevamente, el valor no se actualizar谩 en el juego).
Buscando el valor
Entonces, vamos a suponer que hay un valor importante (como la vida de tu usuario) que deseas mejorar, y est谩s buscando este valor en la memoria.
A trav茅s de un cambio conocido
Suponiendo que est谩s buscando el valor 100, realizas un escaneo buscando ese valor y encuentras muchas coincidencias:
Luego, haces algo para que el valor cambie, y detienes el juego y realizas un siguiente escaneo:
Cheat Engine buscar谩 los valores que pasaron de 100 al nuevo valor. Felicitaciones, encontraste la direcci贸n del valor que estabas buscando, ahora puedes modificarlo.
&#xNAN;Si a煤n tienes varios valores, haz algo para modificar nuevamente ese valor y realiza otro "siguiente escaneo" para filtrar las direcciones.
Valor desconocido, cambio conocido
En el escenario en que no conoces el valor pero sabes c贸mo hacerlo cambiar (e incluso el valor del cambio), puedes buscar tu n煤mero.
As铆 que, comienza realizando un escaneo de tipo "Valor inicial desconocido":
Luego, haz que el valor cambie, indica c贸mo el valor cambi贸 (en mi caso disminuy贸 en 1) y realiza un siguiente escaneo:
Se te presentar谩n todos los valores que fueron modificados de la manera seleccionada:
Una vez que hayas encontrado tu valor, puedes modificarlo.
Ten en cuenta que hay un mont贸n de posibles cambios y puedes hacer estos pasos tantas veces como desees para filtrar los resultados:
Direcci贸n de memoria aleatoria - Encontrando el c贸digo
Hasta ahora hemos aprendido c贸mo encontrar una direcci贸n que almacena un valor, pero es muy probable que en diferentes ejecuciones del juego esa direcci贸n est茅 en diferentes lugares de la memoria. As铆 que vamos a averiguar c贸mo encontrar siempre esa direcci贸n.
Usando algunos de los trucos mencionados, encuentra la direcci贸n donde tu juego actual est谩 almacenando el valor importante. Luego (deteniendo el juego si lo deseas) haz clic derecho en la direcci贸n encontrada y selecciona "Descubrir qu茅 accede a esta direcci贸n" o "Descubrir qu茅 escribe en esta direcci贸n":
La primera opci贸n es 煤til para saber qu茅 partes del c贸digo est谩n usando esta direcci贸n (lo cual es 煤til para m谩s cosas como saber d贸nde puedes modificar el c贸digo del juego).
La segunda opci贸n es m谩s espec铆fica, y ser谩 m谩s 煤til en este caso ya que estamos interesados en saber desde d贸nde se est谩 escribiendo este valor.
Una vez que hayas seleccionado una de esas opciones, el depurador se adjuntar谩 al programa y aparecer谩 una nueva ventana vac铆a. Ahora, juega el juego y modifica ese valor (sin reiniciar el juego). La ventana deber铆a llenarse con las direcciones que est谩n modificando el valor:
Ahora que encontraste la direcci贸n que est谩 modificando el valor, puedes modificar el c贸digo a tu antojo (Cheat Engine te permite modificarlo r谩pidamente a NOPs):
As铆 que, ahora puedes modificarlo para que el c贸digo no afecte tu n煤mero, o siempre afecte de manera positiva.
Direcci贸n de memoria aleatoria - Encontrando el puntero
Siguiendo los pasos anteriores, encuentra d贸nde est谩 el valor que te interesa. Luego, usando "Descubrir qu茅 escribe en esta direcci贸n", averigua qu茅 direcci贸n escribe este valor y haz doble clic en ella para obtener la vista de desensamblado:
Luego, realiza un nuevo escaneo buscando el valor hex entre "[]" (el valor de $edx en este caso):
(Si aparecen varios, generalmente necesitas la direcci贸n m谩s peque帽a)
Ahora, hemos encontrado el puntero que modificar谩 el valor que nos interesa.
Haz clic en "Agregar direcci贸n manualmente":
Ahora, marca la casilla "Puntero" y agrega la direcci贸n encontrada en el cuadro de texto (en este escenario, la direcci贸n encontrada en la imagen anterior fue "Tutorial-i386.exe"+2426B0):
(Ten en cuenta c贸mo la primera "Direcci贸n" se completa autom谩ticamente a partir de la direcci贸n del puntero que introduces)
Haz clic en Aceptar y se crear谩 un nuevo puntero:
Ahora, cada vez que modifiques ese valor, estar谩s modificando el valor importante incluso si la direcci贸n de memoria donde se encuentra el valor es diferente.
Inyecci贸n de c贸digo
La inyecci贸n de c贸digo es una t茅cnica donde inyectas un fragmento de c贸digo en el proceso objetivo, y luego rediriges la ejecuci贸n del c贸digo para que pase por tu propio c贸digo escrito (como darte puntos en lugar de restarlos).
As铆 que, imagina que has encontrado la direcci贸n que est谩 restando 1 a la vida de tu jugador:
Haz clic en Mostrar desensamblador para obtener el c贸digo desensamblado.
Luego, haz clic en CTRL+a para invocar la ventana de Auto ensamblado y selecciona Plantilla --> Inyecci贸n de c贸digo
Completa la direcci贸n de la instrucci贸n que deseas modificar (esto generalmente se completa autom谩ticamente):
Se generar谩 una plantilla:
As铆 que, inserta tu nuevo c贸digo ensamblador en la secci贸n "newmem" y elimina el c贸digo original de "originalcode" si no deseas que se ejecute**.** En este ejemplo, el c贸digo inyectado sumar谩 2 puntos en lugar de restar 1:
Haz clic en ejecutar y as铆 sucesivamente y tu c贸digo deber铆a ser inyectado en el programa cambiando el comportamiento de la funcionalidad!
Referencias
- Tutorial de Cheat Engine, compl茅talo para aprender c贸mo comenzar con Cheat Engine
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.