ImageBase cambia...

Iniciado por ignorantev1.1, 1 Diciembre 2011, 19:59 PM

0 Miembros y 1 Visitante están viendo este tema.

ignorantev1.1

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!

.:UND3R:.

Cita de: 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!

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

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

ignorantev1.1

Aparece, pero no es la misma:



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!

Иōҳ

#3
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.
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

ignorantev1.1

Perfecto @Иōҳ...

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

Saludos!

The Swash

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.

BlackZeroX

The Dark Shadow is my passion.

Karman

Cita de: ignorantev1.1 en  1 Diciembre 2011, 19:59 PMHola, 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