Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: theternitend en 2 Julio 2011, 20:47 pm



Título: Las API siempre estan cargadas en memoria?
Publicado por: theternitend en 2 Julio 2011, 20:47 pm
Siempre que abro un fichero con el Olly y miro el volcado de memoria veo que por ejemplo la direccion donde comienza el kernel32.dll (que incorpora muchas API) es siempre la misma.
Eso quiere decir que siempre estan cargadas en memoria y lo unico que hacen los programas es llamarlas?


Título: Re: Las API siempre estan cargadas en memoria?
Publicado por: [Case] en 4 Julio 2011, 01:55 am
Yo solo he usado API's en Linux y en MacOSX, y la mayoria de las veces me corren bien. Pero recuerda que solo es mi experiencia personal.


Título: Re: Las API siempre estan cargadas en memoria?
Publicado por: [Zero] en 4 Julio 2011, 02:09 am
Suponiendo Windows, pues no tengo ni idea de como se hace el proceso en otros SO's.

Cuando tu programas, y usas alguna API, en compilador se encarga de guardar en la Import Descriptor Table una lista de las API's que importas y otra información relacionada con ellas. Una vez que el ejecutable arranca, ya sea al ejecutarlo o al abrirlo con Olly, el loader de Windows recorre esa tabla, cargando las librerías que utiliza el ejecutable en memoria y "diciendole" al ejecutable donde están cargadas las API's que utiliza. Entonces, respondiendo a tu pregunta, estarán cargadas las API's correspondientes a todas las librerías que use tu ejecutable.

Saludos


Título: Re: Las API siempre estan cargadas en memoria?
Publicado por: theternitend en 4 Julio 2011, 22:11 pm
Entiendo... y la posicion donde se carguen esas API dependera de su ImageBase

Gracias por sus respuestas  ;-)