Las direcciones virtuales de un ejecutable, ¿pueden variar?

Iniciado por 0x98364, 30 Mayo 2018, 09:26 AM

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

0x98364

Buenas a todos,

Es una pregunta tonta, lo sé, pero me surgió el otro día y no pude fundamentar con lógica la respuesta.

Las direcciones virtuales que, por ejemplo, te puede dar OllyDBG de un ejecutable, ¿pueden variar de un equipo a otro? O siempre van a ser las mismas independientemente del equipo donde se depure un programa.

Entiendo que lo que cambia es la traducción de virtual a física, pero qisiera mas info sobre este tema.

Muchas gracias.
Un saludo.
while(!noHacking)
      KeepCalmAndHackThePlanet.start();

MCKSys Argentina

Hola!

Si el ejecutable está compilado con ASLR es muy probable (casi 100%  :P) que cambien.

Si no fue compilado con eso, entonces el binario principal estará siempre a partir de la ImageBase que figura en el Header.

Si tiene libs propias y las mismas no están con ASLR y, además, la dirección de su ImageBase no está ocupada al momento de cargarse; entonces la misma se cargará en la dirección que indica la ImageBase del header también.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


0x98364

Muchas gracias por la respuesta.

He estado leyendo sobre la ImageBase de los ejecutables, y tengo entendido que por defecto se cargan en  0x400000, ¿es cierto?

La cosa cambia entonces cuando se cargan DDLs y éstas necesitan tirar de .reloc y entonces es ahí donde las direcciones virtuales varian.

Creo que ya empiezo a entender, mi duda era que siempre que cargaba un ejecutable en OllyDBG siempre empezaba por la misma dirección virtual independientemente del equipo que utilizase y de la memoria del equipo, pero ya empiezo a tener idea jeje. Gracias de nuevo.

Un saludo.
while(!noHacking)
      KeepCalmAndHackThePlanet.start();

Geovane

Para servicios, envíe un mensaje privado, sólo para servicios en curso hasta fecha de 10/06/2019