Las API siempre estan cargadas en memoria?

Iniciado por theternitend, 2 Julio 2011, 20:47 PM

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

theternitend

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?

[Case]

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.

[Zero]

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

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

theternitend

Entiendo... y la posicion donde se carguen esas API dependera de su ImageBase

Gracias por sus respuestas  ;-)