Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Иōҳ

#111
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

Cita de: $Edu$ en 19 Mayo 2012, 06:38 AM
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.

Cita de: $Edu$ en 19 Mayo 2012, 06:38 AM
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)
#112
Creo que aquí está tu respuesta:

CitarNop, 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.
#114
Ingeniería Inversa / Re: Duda Formato PE
19 Mayo 2012, 05:50 AM
Mayormente lo usan los VB, mira el excelente paper que escribió karmany:

http://www.karmany.net/index.php/ingenieria-inversa/35-peheader/72-boundimportdirectory

Iczelion (maestro):

http://win32assembly.online.fr/pe-tut6.html

Saludos,
Nox.
#115
Hola Edu, haber si te resuelvo las dudas....

Cita de: $Edu$ en 19 Mayo 2012, 05:12 AM
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.

Cita de: $Edu$ en 19 Mayo 2012, 05:12 AM

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.
#116
Ingeniería Inversa / Re: OEP
18 Mayo 2012, 23:12 PM
Aquí te vamos a ayudar, tu tranquilo, pero vamos lee con calma que roma no se hizo en un día, yo nunca terminé los tutes de ricardo (no me peguen u.u) me quedé en el tute 33, pero con esas bases que me sentaron pude hacer muchas cosas, todo lo que me encontré por el camino fue ingenio, pero gracias a las bases principales que me sentaros esos 33 tuts que leí.


pd: no sigas mi ejemplo y termina todos los tuts

Saludos,
Nox.
#117
Ingeniería Inversa / Re: Duda Formato PE
18 Mayo 2012, 23:01 PM
Cita de: karmany en 18 Mayo 2012, 19:23 PM
De todos modos si The Swash te ha dicho que es tema de Bound Import, ya te lo puedes creer.

Sip, esa era la única lógica que le encontraba, y The Swash lo confirmó :P

Saludos,
Nox.
#118
Ingeniería Inversa / Re: Duda Formato PE
18 Mayo 2012, 18:34 PM
Confirmando lo que sospechaba con un gran bro The Swash, ese especie de padding de 0s entre la section headers y el comienzo de la primera sección (casi siempre la de código), es generalmente para la Bound Import.

Saludos,
Nox.
#119
Puede estar empaquetado? xD, si termino unas cosas que estoy haciendo lo miro.

Saludos,
Nox.
#120
Qué es lo que realmente deseas?, que lo crackemos? en la introducción al cracking desde 0 está como empezar :D.

Saludos,
Nox.