Articulo de referencia

Bloque de entorno de proceso

En informática, el Bloque de Entorno de Proceso (abreviado PEB ) es una estructura de datos en la familia de sistemas operativos Windows NT . Es una estructura de datos opaca qu...

En informática, el Bloque de Entorno de Proceso (abreviado PEB ) es una estructura de datos en la familia de sistemas operativos Windows NT . Es una estructura de datos opaca que el sistema operativo utiliza internamente, y la mayoría de sus campos no están destinados a ser utilizados por nada más que el sistema operativo. [ 1 ] Microsoft señala, en su documentación de la Biblioteca MSDN —que documenta solo algunos de los campos— que la estructura "puede ser alterada en futuras versiones de Windows". [ 2 ] El PEB contiene estructuras de datos que se aplican a todo un proceso , incluyendo el contexto global, los parámetros de inicio, las estructuras de datos para el cargador de la imagen del programa, la dirección base de la imagen del programa y los objetos de sincronización utilizados para proporcionar exclusión mutua para las estructuras de datos de todo el proceso. [ 1 ]

El PEB está estrechamente asociado con la estructura de datos del modo kernelEPROCESS , así como con las estructuras de datos por proceso gestionadas dentro del espacio de direcciones del proceso del subsistema de tiempo de ejecución cliente-servidor . Sin embargo, (al igual que las estructuras de datos CSRSS) el PEB no es una estructura de datos del modo kernel en sí misma. Reside en el espacio de direcciones del modo aplicación del proceso al que se relaciona. Esto se debe a que está diseñado para ser utilizado por el código del modo aplicación en las bibliotecas del sistema operativo, como NTDLL , que se ejecuta fuera del modo kernel, como el código para el cargador de imágenes de programa y el administrador de montón. [ 3 ]

En WinDbg , el comando que vuelca el contenido de un PEB es el !pebcomando, al que se le pasa la dirección del PEB dentro del espacio de direcciones de la aplicación de un proceso. Esa información, a su vez, es obtenida por el !processcomando, que muestra la información de la EPROCESSestructura de datos, uno de cuyos campos es la dirección del PEB. [ 3 ]

El contenido del PEB se inicializa mediante la llamada al sistema, la función de la API nativa que implementa parte de, y sustenta, las funciones de la biblioteca Win32 , , , y que se encuentran en las bibliotecas kernel32.dll y advapi32.dll, así como sustenta la función en la biblioteca POSIX de Windows NT , posix.dll. [ 3 ]NtCreateUserProcess()CreateProcess()CreateProcessAsUser()CreateProcessWithTokenW()CreateProcessWithLogonW()fork()

Para los procesos POSIX de Windows NT, el contenido del PEB de un nuevo proceso se inicializa simplemente copiando directamente el PEB del proceso padre, de acuerdo con el funcionamiento de la función. Para los procesos Win32, el contenido inicial del PEB de un nuevo proceso se obtiene principalmente de variables globales mantenidas dentro del kernel. Sin embargo, algunos campos pueden obtenerse de la información proporcionada en el archivo de imagen del proceso, en particular de la información contenida en la estructura de datos del formato de archivo PE (PE+ o PE32+ en imágenes ejecutables de 64 bits). [ 3 ]NtCreateUserProcess()fork()IMAGE_OPTIONAL_HEADER32

El proyecto WineHQ proporciona una definición PEB más completa en su versión de winternl.h. [ 5 ] Las versiones posteriores de Windows han ajustado el número y el propósito de algunos campos. [ 6 ]

Referencias

  1. 1 2 Rajeev Nagar ( 1997). Windows NT file system internals: a developer's guide . O'Reilly Series. O'Reilly. pp. 129. ISBN  9781565922495.
  2. 1 2 3 4 "Estructuras de procesos e hilos: Estructura PEB" . Biblioteca MSDN . Microsoft . 15 de julio de 2010. Archivado del original el 22 de octubre de 2012. Consultado el 15 de julio de 2010 .
  3. 1 2 3 4 5 6 Mark E. Russinovich , David A. Solomon y Alex Ionescu (2009). Windows Internals . Serie de Microsoft Press (5.ª ed.). Microsoft Press. págs. 335–336 , 341–342 , 348, 357–358 . ISBN   9780735625303.{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace )
  4. "Estructuras de procesos e hilos: Estructura RTL_USER_PROCESS_PARAMETERS" . Biblioteca MSDN . Microsoft . 15 de julio de 2010. Consultado el 15 de julio de 2010 .
  5. "wine winternl.h: typedef struct _PEB" . GitHub . wine-mirror. 29 de octubre de 2019.
  6. Chappel, Geoff. "PEB" . Consultado el 30 de octubre de 2019 .
  • Definiciones PEB para varias versiones de Windows