Cargador de programas
# Cargador de programas

En informática, el cargador de programas es la parte del sistema operativo cuya función es cargar programas en memoria desde los ejecutables. El cargador es usualmente una parte del núcleo del sistema operativo y es cargado al iniciar el sistema y permanece en memoria hasta que el sistema es reiniciado o apagado. Algunos sistemas operativos que tienen un núcleo paginable pueden tener el cargador en una parte paginable de la memoria, entonces a veces el cargador hace un intercambio de memoria.

Todos los sistemas operativos que soportan la carga de programas tienen cargadores. Algunos sistemas operativos empotrados de computadoras altamente especializadas corren un único programa y no existen capacidades de carga de programas, por lo tanto no usan cargadores. Ejemplos de estos sistemas embebidos se encuentran en equipos de audio para automóviles. En los sistemas Unix, el cargador es el manejador para la llamada del sistema execve.

Algunas computadoras necesitan cargadores relocalizables, los cuales ajustan direcciones de memoria (punteros) en un ejecutable para compensar las variaciones en la cual la memoria disponible de la aplicación empieza. Las computadoras que necesitan de los cargadores relocalizables son aquellos en los cuales los punteros son direcciones absolutas en vez de compensaciones de direcciones base del programa. Un ejemplo muy conocido está en las mainframes IBM Sistema 360 y sus descendientes, incluyendo la serie de los sistemas Z9.

Los enlazadores dinámicos son otro tipo de cargador que carga y liga biblioteca de enlace dinámico, como lo son los archivos dll o so.

## En Windows

En sistemas Windows, por defecto, es el Windows PE loader el que se encarga de realizar la carga en memoria los ficheros en formato Portable Executable (de acuerdo a sus cabeceras), actualiza todas las referencias y crea el primer hilo el cual ejecutará el programa desde su punto de entrada.

Algunos malware usan su propio PE loader. Por ejemplo, la "Operation WizardOpium" usaba un exploit que después de lograr una lectura/escritura en el proceso de Gooble Chrome, a través de código JS vulnerable, corrompía algunos punteros en la memoria para redirigir la ejecución del código al PE loader, el cual localizaba y carga un archivo DLL incrustado en el exploit. Se usaba el PE loader para eludir las restricciones de sandbox de Google Chrome. Algunos componentes del malware Stantinko también usan un PE loader personalizado.

