Conocer que programas se están ejecutando actualmente y que DLLs tienen cargadas en memoria

Nada más iniciarse Windows, se inician muchos programas (casi todos en segundo plano) que a su vez cargan un buen número de DLLs que quedan cargadas en la memoria ocupando espacio y consumiendo recursos.

Las DLL son necesarias…muchos dirían que son una jauría de lobos enfurecidos…otros incluso que son peligrosas pues son usadas por muchos malwares.


Todo eso es cierto…pero matizando. Las DLL son una serie de rutinas, códigos y funciones que son necesarias para el funcionamiento de cualquier aplicación. Unas son compartidas por varios ejecutables y otras son exclusivas de un determinado programa…pero todas ellas necesarias.

Imaginemos un plato de paella. Podríamos llamarlo "programa". Ese programa (plato de paella) necesita una serie de elementos para que sea funcional…necesita arroz, pescado, carne, ajos, cebolla…necesita cocinarse…y para eso también se necesita una olla, agua, aceite, gas para cocinarlo…etc, etc, etc….todos esos elementos podrían ser las DLL del plato de paella…elementos necesarios para que pueda llamarse paella. Lo mismo ocurre con cualquier programa o ejecutable…para que sea funcional, necesita una serie de ayudantes llamados DLL.

También cada vez que abrimos o ejecutamos un programa, este carga en memoria una serie de DLLs y puede que también subprogramas adicionales en segundo plano, que a su vez cargan también sus propias DLL. Algunas son "comunitarias", compartidas por varios ejecutables porque usan funcionalidades comunes para todas ellas…se hace así para evitar tener decenas de DLLs duplicadas haciendo la misma función.

De todas formas, aun usando DLLs compartidas, el número de ellas que se cargan en memoria puede ser abrumador. La mayoría no suelen consumir muchos recursos, pero otras comen como leones hambrientos.

Lo normal y deseable es que cuando se cierra un ejecutable, como una aplicación, por ejemplo, las DLL correspondientes que ha cargado se eliminen y así se libere espacio y consumo de recursos, pero no todos los ejecutables lo hacen. Algunos programas las mantienen a propósito cargadas en memoria bajo la disculpa de que cuando volvamos a ejecutarlo este se comportará más fluido pues las DLL que necesita usar ya están cargadas.

Si somos curiosos, podemos ver fácilmente los ejecutables que actualmente están en uso en tu equipo, así como las DLL que están cargadas en memoria en ese momento y que aplicación las ha cargado y está usando.

Abrimos una sesión de la Consola de comandos (Símbolo del sistema).

Creo que ya todos saben cómo abrir el CMD…pero por si acaso se los recuerdo.

Pulsamos la combinación de teclas WIN+R para abrir el comando Ejecutar.

Ahí escribimos CMD y pulsamos Aceptar

En la ventana del Símbolo del sistema, escribimos

tasklist/m

y pulsamos Intro

En un momento se mostrará una lista de los programas en ejecución, seguido de la lista de DLLs que esos programas están usando y están cargadas en memoria.

Como observaremos, la cantidad de ejecutables en uso y el número de DLLs cargadas en memoria es grande. Muchos es posible que se sorprendan de ver ejecutables que pensaban que estaban cerrados, pero que podemos comprobar que no era así y se han quedado en segundo plano, o al menos una versión sin interfaz.

Aunque nos sorprenda, esto es normal y no debemos espantarnos. Es la forma en la que un sistema operativo actual puede funcionar de forma fluida.

Si queremos saber las DLL que tiene en uso y cargadas en memoria un determinado ejecutable, podemos navegar por ese listado, o mejor aún solo tomar nota del ejecutable de la lista inicial y escribir en el Símbolo del sistema lo siguiente:

tasklist /m /fi "imagename eq [programa]"

Donde [programa] lo sustituiremos por el nombre del ejecutable, junto con su extensión.

Ejemplos:

tasklist /m /fi "imagename eq ShadowFXSRV.exe"

tasklist /m /fi "imagename eq vivaldi.exe"

El uso que se le puede dar a toda esta información dependerá de lo que busquen ustedes. Yo personalmente solo lo miro con curiosidad y poco más, un programador podría usarlo para ver algunos aspectos del comportamiento de una aplicación en desarrollo, un administrador de IT podría ver si hay o no hay determinadas DLL en ejecución ante los errores de una aplicación, o un encargado de seguridad de una empresa podría tratar de ver rápidamente si hay alguna DLL sospechosa en memoria.

De momento, si no lo sabían, ya saben que esa información está ahí, disponible y fácilmente a su alcance.

Hasta otra…si tienen espejito…ahí se ven.

0 comentarios