Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Rojodos en 3 Diciembre 2003, 15:37 pm



Título: Entrypoint....
Publicado por: Rojodos en 3 Diciembre 2003, 15:37 pm
Bueno, tengo una duda que creo que es basica, pero no me aclaro....

El entrypoint es la "punta del hilo" del programa, es decir, donde empieza el codigo del programa...

Pero todo esto cuando se carga en memoria, es decir, en la RAM.

Segun tengo entendido, el 99% de los programas en win se cargan en la direccion 00400000h, no?

Bueno, entonces ese es el entrypoint no?

Pero si se cargan mas ejecutables iguales a ese o simplemente, otros ejecutables?? Donde esta el Entrypoint de cada uno de ellos?

No se cumple la "regla" de cargarse siempre en la direccion 00400000h, ya que ya esta "ocupada" por otro ejecutable. O si se carga...

A ver si alguien me entiende y me resuelve la duda :D

Salu2


Título: Re:Entrypoint....
Publicado por: byebye en 3 Diciembre 2003, 16:06 pm
00400000 es la image base, es decir la direccion virtual donde se proyectara el archivo y el entry point en disco pongamos que es 1000. ok entonces el entrypoint es 00401000.por eso cuando se vuelca un archivo desde la memoria al disco para desenpacarlo por ejemplo,  se tiene que arreglar el entrypoint (restarle la imagebase). y vale estaras pensando pero si 2 ejecutables tienen la misma imagebase y el mismo entry point ¿que pasa?. jejeej pos pasa.... te lo voy a explicar asi por encima lo poco que pueda recordar, de todos modos lo lei en un tutorial de numit_or que creo que es de obliada lectura, tanto el formato pe como el de como w32 convierte direcciones  virtuales en direccion reales. (me pondre a buscarlo y pondre el link). bueno a lo que vamos, segun explicaba decia que se crea una tabla en memoria para cada proceso y esta tabla tiene punteros a las direcciones reales de memoria donde estan los datos, luego tambien decia algo sobre el registro CR3 que tambien tiene que ver con esas cosas y bueno  mejor que le des un ojo a los manuales ya que lo explica mas detallado y mejor que yo. (cuando los encuentre te pongo los links)


Título: Re:Entrypoint....
Publicado por: Rojodos en 3 Diciembre 2003, 22:03 pm
Entonces hay dos Entrypoint por cada ejecutable?

Uno es el Entrypoint del HD (1000) que supongo que es unico y otro es el Entrypoint en memoria, que es la imagen base de todo ejecutable en memoria (00400000) + Entrypoint en el HD de dicho archivo.

Es asi?

Me vendrian de perlas los manuales, a ver si los encuentras :D

Thx Mek


Título: Re:Entrypoint....
Publicado por: byebye en 4 Diciembre 2003, 06:25 am
el entrypoint es variable en cada ejecutable, solo hay 1,mmmm.... se podria similar a cuando trabajas con archivos proyectados en memoria. por ejemplo para acceder a X datos en X direccion  seria rva+direccion donde se mapea parea llegar a ellos. (siempre yn cuando se este trabajando sobre ellos en memoria). http://usuarios.lycos.es/mrridk/Win32Asm/Documentos/PE_by_nmt.zip aqui esta uno de el formato pe son 3 si no recuerdo mal, el de la memoria aun no lo encontre.

no encuentro el otro o si lo encuentro el link esta roto. pero mira encontre este que tampoco tiene desperdicio.
http://www.geocities.com/eidan.rm/memoria1.htm


Título: Re:Entrypoint....
Publicado por: Rojodos en 5 Diciembre 2003, 08:26 am
Thx por los links....

La pagina del mrridk es muy interesantes :D

Salu2