Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: ignorantev1.1 en 1 Diciembre 2011, 19:59 pm



Título: ImageBase cambia...
Publicado por: ignorantev1.1 en 1 Diciembre 2011, 19:59 pm
Hola, pués una duda:

Estoy leyendo posiciones de memoria, pero se me complica, ya que la "ImageBase" varía en cada ejecución o en cada maquina...

¿Cómo puedo saber la imagebase de un programa en ejecución?

No me sirve leer la cabecera PE...

Saludos y gracias!


Título: Re: ImageBase cambia...
Publicado por: .:UND3R:. en 1 Diciembre 2011, 20:05 pm
Hola, pués una duda:

Estoy leyendo posiciones de memoria, pero se me complica, ya que la "ImageBase" varía en cada ejecución o en cada maquina...

¿Cómo puedo saber la imagebase de un programa en ejecución?

No me sirve leer la cabecera PE...

Saludos y gracias!

Por lógica debería aparecer la ImageBase en la cabecera PE, también me parece extraño que cambie mientras está en ejecución, recuerda que si quieres obtener el VA (variable absoluta)debes restarle 400000 (que es el valor general que posee la ImageBase)

PD: aun recuerdo lo que te prometi que iba a ver pero no he tenido tiempo, mis 1000 disculpas por lo del juego


Título: Re: ImageBase cambia...
Publicado por: ignorantev1.1 en 1 Diciembre 2011, 20:23 pm
Aparece, pero no es la misma:

(http://i44.tinypic.com/vesv1j.jpg)

Arriba 2 imagenes sacadas del debugger, en dos ejecuciones distintas, y 1 imagen de lectura de PE Header...

@.:UND3R:.
Pués es sobre la misma duda de la otra vez, pero creo que ahora es más concreta...

Saludos!


Título: Re: ImageBase cambia...
Publicado por: Иōҳ en 1 Diciembre 2011, 20:27 pm
No precisamente siempre va hacer igual, la ImageBase cambia, y dónde la encuentras, en la cabezera PE, dónde más?, quién te dijo que la ImageBase debe de cargarse siempre en la misma dirección?  :huh:


Aquí hay un ejemplo de Zero, dónde cambia la ImageBase

http://zero.h-sec.org/inyeccion-ejecutable-memoria-dummysection

Nox.


Título: Re: ImageBase cambia...
Publicado por: ignorantev1.1 en 1 Diciembre 2011, 21:54 pm
Perfecto @Иōҳ...

Citar
¿Cómo puedo saber la imagebase de un programa en ejecución?

Saludos!


Título: Re: ImageBase cambia...
Publicado por: The Swash en 22 Diciembre 2011, 15:23 pm
En el PECOFF de Microsoft afirma que en caso de que la direccion de la ImageBase este ocupado o no se pueda acceder el loader de Windows le asignará una dirección que pueda ocupar.
Para ello el ejecutable debe tener directorio de relocations(reubicación).

Un saludo.


Título: Re: ImageBase cambia...
Publicado por: BlackZeroX en 23 Diciembre 2011, 00:01 am
Perfecto @Иōҳ...

Saludos!

ReadProcesMemory...

Dylces Lunas!¡.


Título: Re: ImageBase cambia...
Publicado por: Karman en 30 Diciembre 2011, 05:30 am
Hola, pués una duda:

Estoy leyendo posiciones de memoria, pero se me complica, ya que la "ImageBase" varía en cada ejecución o en cada maquina...

¿Cómo puedo saber la imagebase de un programa en ejecución?

No me sirve leer la cabecera PE...

Saludos y gracias!

no confundamos las cosas, todo depende que estés analizando, por ejemplo, la imagebase de los ejecutables (exe) es fija (dado que es lo que primero carga el loader y se supone que la memoria está vacía [salvo excepciones muy raras]), lo que puede variar es la imagebase de las dll's (gracias a la relloctable), dado que si una dll tiene una base 100000 y dicha dirección está ocupada, el loader tratará de cargarla en otra (y modificar la relloc table), ahora para saber la dirección en memoria de una dll, no te queda otra que preguntarle a windows donde la cargó (existen muuuuchos métodos)

S2