elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 01:20  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: Shaddy, karmany)
| | |-+  [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine  (Leído 3,160 veces)
.:UND3R:.


Desconectado Desconectado

Mensajes: 1.960


Ingeniería inversa


Ver Perfil WWW
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #15 en: 29 Noviembre 2011, 23:42 »

Muy buen tutorial, explica claramente. Agrego que con CE también es posible realizar una inyección de código sin necesidad de utilizar OllyDBG, una vez que tengamos el valor de las vidas en la lista, presionamos con el secundario sobre el valor y buscamos la opción “Find out what accesses this address”, los mostrara al igual que OllyDBG una lista con las direcciones que acceden al valor.

efectivamente pero preferí realizarlo de manera más manual pero más segura.

Saludos
En línea

$Edu$


Conectado Conectado

Mensajes: 1.409



Ver Perfil
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #16 en: 19 Mayo 2012, 05:12 »

Ya entendi el tutorial y todo lo que me explicaste por privado UND3R los otros dias. Pero como siempre tengo otras dudas mas especificas que la puede contestar el que sepa, no necesariamente vos.

La duda es.. que el trainer lo que hace es modificar esta address ahora: 0041E844 , la de la instruccion, para cambiarla por otra instruccion que quieramos, en este caso solo la invertimos. Pero esa address porque no cambia nunca? asi como cambiaba la address del valor. Es porque una address esta dentro del ejecutable y la otra fuera? o que?

Es decir.. vieron como lo del funcionamiento de la IAT? algo asi se hace para que siempre que leamos la direccion 0041E844 en realidad estamos leyendo otra en la memoria RAM?

Otro ejemplo seria de que la mayoria de los programas empiezan en su OEP en el address 00401000, pero no esta haciendo referencia a la memoria RAM porque sino cuando cargo 2 programas en el Olly me dicen q los 2 empiezan en esa address, cosa q no seria posible..

Espero que alguien me entienda xD

Iba a crear un tema a parte sobre esto pero si pueden contestarme aca le queda la respuesta a otro que venga por este tema..

Yo he leido sobre esto pero no he entendido bien aun lo que es la ImageBase y que es un Offset, no llego a entenderlo bien aun, me cuesta horrores esto jaja.
En línea

Estado en el MSN:
Иōҳ


Desconectado Desconectado

Mensajes: 454


Ver Perfil
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #17 en: 19 Mayo 2012, 05:38 »

Hola Edu, haber si te resuelvo las dudas....

La duda es.. que el trainer lo que hace es modificar esta address ahora: 0041E844 , la de la instruccion, para cambiarla por otra instruccion que quieramos, en este caso solo la invertimos. Pero esa address porque no cambia nunca? asi como cambiaba la address del valor. Es porque una address esta dentro del ejecutable y la otra fuera? o que?

Es decir.. vieron como lo del funcionamiento de la IAT? algo asi se hace para que siempre que leamos la direccion 0041E844 en realidad estamos leyendo otra en la memoria RAM?

Eso depende si la dirección que haces referencia es una estática o dinámica, si es dinámica necesitas encontrar el BasePointer que hace referencia a tu address dinámica, en ocasiones pueden haber muchos punteros de punteros, o multilevelpointer como lo llama el CheatEngine (buen nombre por cierto).

Como sabes que es estática o no?, pues mi experiencia en el gamehacking de hace años (estoy en retiro momentaneo del gamehacking ojo! xD) me dice que todo esto depende, primero el game usa librerías, entonces como se cargan estas librerías?, cuál es la ImageBase de ellas?, aveces son programas de tal manera que la ImageBase sea fija y así al cargarlas las direcciones de esa librearía sean estáticas.

Ejemplo:

DLL1 ImageBase = 03500000h
DLL2 ImageBase = 03600000h
DLL3 ImageBase = 03700000h

.
.
.

DLLn ImageBase = 0XX00000h


Pero no siempre se cumple, entonces en ese casi las direcciones serían "dinámicas".

Es algo que se crea en juego?, un stage o una misión por ejemplo?, pues es dinámica en la gran mayoría de los casos pero como siempre puede haber excepciones.


Otro ejemplo seria de que la mayoria de los programas empiezan en su OEP en el address 00401000, pero no esta haciendo referencia a la memoria RAM porque sino cuando cargo 2 programas en el Olly me dicen q los 2 empiezan en esa address, cosa q no seria posible..

Nop, en los sistemas de 32 bits hay 4gb de direccionamiento en MEMORIA (ojo, no significa que ese sea su peso en disco), 2gb asignados a usermode, y los otros 2gb a kernel, cada proceso tiene un ÚNICO espacio de memoria, un ejemplo es que en memoria de tu target en la dirección ficticia 0B4DC0D3h tienes la vida de tu personaje, en tu trainer NO puedes hacer esto

mov [0B4DC0D3h] , -1

Por que estás haciendo refencia a tu trainer no al target.

Recuerda que el modelo de memoria NO es FLAT, como en ms-dos.

Saludos,
Nox.
« Última modificación: 19 Mayo 2012, 05:47 por Иōҳ » En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
$Edu$


Conectado Conectado

Mensajes: 1.409



Ver Perfil
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #18 en: 19 Mayo 2012, 06:19 »

Creo que le has dado en tu ultima frase "Recuerda que el modelo de memoria NO es FLAT, como en ms-dos". Lo demas no lo entendi bien pero es algo que aprendere luego, yo por ahora quiero saber lo basico basico y con tu frase me hizo pensar distinto sobre la RAM.

A ver, ya vengo voy a ver el libro que estoy leyendo como es que dice algo ahi...xD ya vine jajajaja, no entiendo bien lo que pasa. Pero pone la RAM como un edificio y cada piso tiene una altura, lo que seria el tamaño u offset. Algo asi:

RAM

FFFF





2000

1000

0000

Yo entiendo a la RAM como eso, como un edificio empezando desde la address 0000 hasta FFFF por ejemplo, entonces pienso que cada programa se carga en el lugar que entre, que no este ocupado, por ejemplo a partir del address 2000, y entonces pensaba que esa tendria que ser la ImageBase y luego entonces cuando en ese programa cargado se ve en el olly algo como:

2100   Add BX...
2200   MOV ...

En el medio de 2100 y 2200 estan los offsets, que serian los que se muestran en el Dump por columnas.

Pero se arruina todo lo que pensaba, al ver que la mayoria de los programas tienen la misma ImageBase, por lo que entonces no se cumple lo que digo, porque significaria que cargan en la misma direccion de la RAM y no se puede...

Pero.. tal vez eso de que la memoria RAM no es FLAT, quiere decir que no es asi como tenia pensado que era y entonces espero que me puedan explicar, asi de la misma forma que intente yo recien, solo que esta bien me diran como es de verdad xD
En línea

Estado en el MSN:
Иōҳ


Desconectado Desconectado

Mensajes: 454


Ver Perfil
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #19 en: 19 Mayo 2012, 06:26 »

Creo que aquí está tu respuesta:

Citar
Nop, en los sistemas de 32 bits hay 4gb de direccionamiento en MEMORIA (ojo, no significa que ese sea su peso en disco), 2gb asignados a usermode, y los otros 2gb a kernel, cada proceso tiene un ÚNICO espacio de memoria, un ejemplo es que en memoria de tu target en la dirección ficticia 0B4DC0D3h tienes la vida de tu personaje, en tu trainer NO puedes hacer esto

mov [0B4DC0D3h] , -1

Por que estás haciendo refencia a tu trainer no al target.

Recuerda que el modelo de memoria NO es FLAT, como en ms-dos.

Si no entiendes alguna parte dímelo y te lo explico mejor, el libro que estás leyendo cuando fue editado? no será en sistemas de 16bits? cuando el modelo de memoria ERA FLAT?

Saludos,
Nox.
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
$Edu$


Conectado Conectado

Mensajes: 1.409



Ver Perfil
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #20 en: 19 Mayo 2012, 06:38 »

Esque habla de todos los tipos, de real mode, de protected mode y virtual mode. Pero no le entiendo porque no le encuentro logica, pero a ver.. lo que tu dices entonces es que la RAM al no ser FLAT (plano no?) significa que habra muchos edificios como el que puse no? Cuando se carga un programa, donde se mete en la RAM?

Tipo imaginando de la forma esta:

RAM

-----
Programa 1
-----
Programa 2
-----
Programa 3
------

Donde cada programa es un proceso nuevo, y todos arrancan desde el address 0000 hasta FFFF (para dar un ejemplo, no se a cuantos llegan, los q sean 4gb en hexadecimal no?)

Entonces el Trainer esta configurado para que modifique el address 40156F por ejemplo pero indicando que se refiere a la del proceso del juego que se indico. Ya que sino modificaria a cualquier otro proceso abierto q tenga la misma address (cosa que tendra).

Ahora si entendi? esque es lo mas logico que se me ocurre ahora.
En línea

Estado en el MSN:
Иōҳ


Desconectado Desconectado

Mensajes: 454


Ver Perfil
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #21 en: 19 Mayo 2012, 06:54 »

Ahí vas pero te estás confundiendo los tipos de modos

http://computacion.cs.cinvestav.mx/~ameneses/pub/tesis/ltesis/node29.html

http://es.wikipedia.org/wiki/Modo_protegido

http://es.wikipedia.org/wiki/Modo_real

Donde cada programa es un proceso nuevo, y todos arrancan desde el address 0000 hasta FFFF (para dar un ejemplo, no se a cuantos llegan, los q sean 4gb en hexadecimal no?)

Nop, en 32 bits sería 00000000h ... 7FFFFFFFh, eso son los 2gb de direccionamiento en memoria para modo usuario (las app de escritorio que haces en vb, corren en este nivel de privilegios). Los otros 2gb son para modo kernel.

Entonces el Trainer esta configurado para que modifique el address 40156F por ejemplo pero indicando que se refiere a la del proceso del juego que se indico. Ya que sino modificaria a cualquier otro proceso abierto q tenga la misma address (cosa que tendra).

Ahora si entendi? esque es lo mas logico que se me ocurre ahora.

Si tu quieres modificar la diercción 40156F del game, pero tu trainer haces esto:

mov dword ptr [40156Fh], -1

NO estás modificando la dirección de cualquier proceso, estás modificando la dirección 40156F que pertenece a tu trainer.

Para modificar la dirección 40156F de otro proceso se usa la API WriteProcessMemory.

WriteProcessMemory ( hProcesoAModificar, 40156F, &lpbuffer, nSize, NULL)
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
$Edu$


Conectado Conectado

Mensajes: 1.409



Ver Perfil
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #22 en: 19 Mayo 2012, 07:19 »

Lo del trainer, es como dice el tutorial, le indico el address del juego a modificar con el value que indique, que este sera la nueva instruccion en hexadecimal. Eso lo tengo claro, la cosa es lo de la RAM.

Ya creo que le entendi, ahora q me dijiste eso de que no es plana. Pero vamos por parte..solamente contestame esto por ahora:

La memoria RAM seria un listado de address, desde 00000000h hasta el tamaño de la RAM supongamos que de 4GB.
A lo que cada programa se carga a la RAM creando un espacio de 2GB de reserva cada uno? como es posible, si ejecuto 3 programas ya consume todo.

Sacame esa duda y luego sigo con otras cosas xD Gracias Nox! un viernes de noche me estas ayudando, sos un grande!
En línea

Estado en el MSN:
Иōҳ


Desconectado Desconectado

Mensajes: 454


Ver Perfil
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #23 en: 19 Mayo 2012, 07:43 »

Sobre la memoria RAM especificamente no sé que decirte no tengo mucha información sobre eso, voy a tratar de buscar, pero el tema de segmentación parrafos, etc, ya no es preocupante en los sistemas de 32 bits.

Jeje, ahora estás confundiendo con los términos, son 4gb de direccionamiento (2^32), 2gb de DIRECCIONAMIENTO en memoria son para modo usuario, es decir que las direcciones 00000000 ... 7FFFFFFFh equivalen a 2gb.

En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.830


I'Love...!¡.


Ver Perfil WWW
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #24 en: 19 Mayo 2012, 17:04 »

mmm OllyDBG no es necesario... el propio Cheat Engine tiene la opción de detectar desde que direccion se edito el offset X...

Solo hay que darle click secundario al elemento en-listado y en la opción:







En la ultima ventana inclusive puedo inyectar código ASM, dll, o con lo que le haya al ASM generar directamente un trainer.

Dulces Lunas!¡.
« Última modificación: 19 Mayo 2012, 17:13 por BlackZeroX (Astaroth) » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
$Edu$


Conectado Conectado

Mensajes: 1.409



Ver Perfil
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #25 en: 19 Mayo 2012, 18:17 »

Sobre la memoria RAM especificamente no sé que decirte no tengo mucha información sobre eso, voy a tratar de buscar, pero el tema de segmentación parrafos, etc, ya no es preocupante en los sistemas de 32 bits.

Jeje, ahora estás confundiendo con los términos, son 4gb de direccionamiento (2^32), 2gb de DIRECCIONAMIENTO en memoria son para modo usuario, es decir que las direcciones 00000000 ... 7FFFFFFFh equivalen a 2gb.



Yo pregunto, no tienes porque saberlo, todos aprendemos algo nuevo siempre jeje. Tal vez viene alguien a explicarme bien esto.
Lo de los 4gb lo dije por dar un ejemplo en la memoria RAM, yo digo porque.. a que te referis con 2gb de direccionamiento en memoria?

Tal vez creo un tema nuevo para debatir todo esto no?
En línea

Estado en el MSN:
.:UND3R:.


Desconectado Desconectado

Mensajes: 1.960


Ingeniería inversa


Ver Perfil WWW
Re: [TUTORIAL]Creación de trainers con OllyDBG y Cheat engine
« Respuesta #26 en: 23 Mayo 2012, 18:50 »

mmm OllyDBG no es necesario... el propio Cheat Engine tiene la opción de detectar desde que direccion se edito el offset X...

Solo hay que darle click secundario al elemento en-listado y en la opción:







En la ultima ventana inclusive puedo inyectar código ASM, dll, o con lo que le haya al ASM generar directamente un trainer.

Dulces Lunas!¡.

Efectivamente, cuando hacía el tutorial (año atrás) sabía que se podía hacer directamente con Cheat Engine, pero de todas maneras siempre me ha gustado irme por el camino un poco más difícil que es justo el que más te enseña, saludos
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cheat Engine
Juegos y Consolas
UTU 1 1,086 Último mensaje 12 Marzo 2006, 20:47
por SmopuiM
Cheat engine V5.3
Juegos y Consolas
yukigon 0 2,517 Último mensaje 22 Marzo 2008, 04:36
por yukigon
Uso del cheat engine
Dudas Generales
kamaleon25 1 1,268 Último mensaje 27 Junio 2008, 04:02
por Hocker
Cheat Engine + Tutorial
Juegos y Consolas
deivid95 2 2,280 Último mensaje 13 Diciembre 2009, 15:34
por deivid95
cheat engine
Juegos y Consolas
CaZ4d0R 3 2,343 Último mensaje 6 Agosto 2010, 14:04
por Castiblanco
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines