fbpx
Wikipedia

Win32 Thread Information Block

En computación, el Win32 Thread Information Block (TIB) es una estructura de datos en los sistemas Win32, específicamente en la arquitectura x86, que almacena información acerca del hilo que se está ejecutando. También es conocido como el Thread Environment Block (TEB).[1]

El TIB no está documentado oficialmente para Windows 9x. El DDK de la familia Windows NT incluye una estructura NT_TIB en winnt.h que documenta la parte independiente de subsistema. El emulador Wine incluye declaraciones para el TIB extendido (una parte especifica del subsistema). Todavía muchos programas de Win32 usan estos campos no documentados que son en efecto una parte de la API. El primer campo, en particular, está directamente referenciado por el código producido por el propio compilador de Microsoft.[1]

El TIB puede ser usado para obtener una buena cantidad de información sobre el proceso sin tener que llamar a ninguna API de Win32 (por ejemplo, emulaciones de GetLastError() , GetVersion() ). A través del puntero al PEB se puede obtener acceso a las tablas de importación (IAT), los argumentos de inicio pasados al proceso, nombre de la imagen, etc.

Contenido del TIB

Posición Longitud Versión de Windows Descripción
FS:[0x00] 4 Win9x y NT Marco actual del Structured Exception Handling (SEH)
FS:[0x04] 4 Win9x y NT Parte superior de la pila
FS:[0x08] 4 Win9x y NT Parte inferior actual de la pila
FS:[0x0C] 4 Desconocido (Subsistema TIB?)
FS:[0x10] 4 NT Fibra de datos (hilo)
FS:[0x14] 4 Win9x y NT Espacio de datos arbitrario
FS:[0x18] 4 Win9x y NT Dirección lineal del TIB
---- Fin de la parte independiente del Subsistema NT ----
FS:[0x1C] 4 NT Puntero de ambiente
FS:[0x20] 4 NT ID del Proceso
FS:[0x24] 4 NT ID del hilo actual
FS:[0x28] 4 NT Manejador activo del RPC
FS:[0x2C] 4 Win9x y NT Dirección lineal del array Thread-local storage
FS:[0x30] 4 NT Dirección lineal del Process Environment Block (PEB)
FS:[0x34] 4 NT Número de último error
FS:[0x38] 4 NT Conteo de secciones críticas propias
FS:[0x3C] 4 NT Dirección del CSR Client Thread
FS:[0x40] 4 NT Información del hilo Win32
FS:[0x44] 124 NT, Wine Información del cliente Win32 (NT), datos privados de user32 (Wine), 0x60 = LastError (Win95), 0x74 = LastError (WinME)
FS:[0xC0] 4 NT Reservado para Wow32
FS:[0xC4] 4 NT Internacionalización actual
FS:[0xC8] 4 NT Registro de estado de software FP
FS:[0xCC] 216 NT, Wine Reservado para el Sist. Operativo (NT), datos privados de kernel32 (Wine)
FS:[0x124] 4 NT Puntero a estructura KTHREAD (ETHREAD)
FS:[0x1A4] 4 NT Código de excepción
FS:[0x1A8] 18 NT Pila de contexto de activación
FS:[0x1BC] 24 NT, Wine Bytes de repuesto (NT), datos privados de ntdll (Wine)
FS:[0x1D4] 40 NT, Wine Reservado para el Sist. Operativo (NT), datos privados de ntdll (Wine)
FS:[0x1FC] 1248 NT, Wine GDI TEB Batch (OS), datos privados de vm86 (Wine)
FS:[0x6DC] 4 NT GDI Region
FS:[0x6E0] 4 NT GDI Pen
FS:[0x6E4] 4 NT GDI Brush
FS:[0x6E8] 4 NT Real Process ID
FS:[0x6EC] 4 NT Real Thread ID
FS:[0x6F0] 4 NT GDI cached process handle
FS:[0x6F4] 4 NT GDI client process ID (PID)
FS:[0x6F8] 4 NT GDI client thread ID (TID)
FS:[0x6FC] 4 NT Información de internacionalización para GDI thread
FS:[0x700] 20 NT Reservado para aplicación de usuario
FS:[0x714] 1248 NT Reservado para librería GL
FS:[0xBF4] 4 NT Valor de último estado
FS:[0xBF8] 214 NT Reservado para advapi32
FS:[0xE0C] 4 NT Puntero para la pila de desasignación
FS:[0xE10] 256 NT Espacios de TLS, 4 bytes por espacio
FS:[0xF10] 8 NT Enlaces de TLS (estructura LIST_ENTRY)
FS:[0xF18] 4 NT VDM
FS:[0xF1C] 4 NT Reservado para RPC
FS:[0xF28] 4 NT Modo de errores de hilo (RtlSetThreadErrorMode)

FS conduce a un TIB que está incorporado en un bloque de datos conocido como el TDB (Thread Data Base). El TIB contiene la cadena de manejo de excepciones específico a cada hilo y punteros al TLS (Thread Local Storage). El TLS no es lo mismo que el C local storage.

Acceso al TIB

El TIB se puede acceder como un desplazamiento del segmento de registro FS.

No es común acceder a campos del TIB por medio de un desplazamiento desde FS:[0], sino que primero se obtiene un puntero de auto-referencia lineal a este, almacenado en FS:[0x18]. Este puntero se puede usar con aritmética de punteros o se puede transformar a un puntero struct.

Ejemplos en C inlined-assembly para x86 de 32 bits:

// gcc (AT&T-style inline assembly). void *getTIB() { void *pTib; __asm__("movl %%fs:0x18, %0" : "=r" (pTib) : : ); return pTib; } 
// Microsoft C void *getTib() { void *pTib; __asm { mov EAX, FS:[18h] mov [pTib], EAX } return pTib; } 
// Usando intrinsics de Microsoft en vez de inline assembly void *getTib() { void *pTib = ( void * ) __readfsdword( 0x18 ); return pTib; } 

Referencias

  1. Error en la cita: Etiqueta <ref> no válida; no se ha definido el contenido de las referencias llamadas Pietrek-May96

Enlaces externos

  • Under The Hood - MSJ, May 1996
  • Wine HQ
  •   Datos: Q8023585

win32, thread, information, block, computación, estructura, datos, sistemas, win32, específicamente, arquitectura, almacena, información, acerca, hilo, está, ejecutando, también, conocido, como, thread, environment, block, está, documentado, oficialmente, para. En computacion el Win32 Thread Information Block TIB es una estructura de datos en los sistemas Win32 especificamente en la arquitectura x86 que almacena informacion acerca del hilo que se esta ejecutando Tambien es conocido como el Thread Environment Block TEB 1 El TIB no esta documentado oficialmente para Windows 9x El DDK de la familia Windows NT incluye una estructura NT TIB en winnt h que documenta la parte independiente de subsistema El emulador Wine incluye declaraciones para el TIB extendido una parte especifica del subsistema Todavia muchos programas de Win32 usan estos campos no documentados que son en efecto una parte de la API El primer campo en particular esta directamente referenciado por el codigo producido por el propio compilador de Microsoft 1 El TIB puede ser usado para obtener una buena cantidad de informacion sobre el proceso sin tener que llamar a ninguna API de Win32 por ejemplo emulaciones de GetLastError GetVersion A traves del puntero al PEB se puede obtener acceso a las tablas de importacion IAT los argumentos de inicio pasados al proceso nombre de la imagen etc Indice 1 Contenido del TIB 2 Acceso al TIB 3 Referencias 4 Enlaces externosContenido del TIB EditarPosicion Longitud Version de Windows DescripcionFS 0x00 4 Win9x y NT Marco actual del Structured Exception Handling SEH FS 0x04 4 Win9x y NT Parte superior de la pilaFS 0x08 4 Win9x y NT Parte inferior actual de la pilaFS 0x0C 4 Desconocido Subsistema TIB FS 0x10 4 NT Fibra de datos hilo FS 0x14 4 Win9x y NT Espacio de datos arbitrarioFS 0x18 4 Win9x y NT Direccion lineal del TIB Fin de la parte independiente del Subsistema NT FS 0x1C 4 NT Puntero de ambienteFS 0x20 4 NT ID del ProcesoFS 0x24 4 NT ID del hilo actualFS 0x28 4 NT Manejador activo del RPCFS 0x2C 4 Win9x y NT Direccion lineal del array Thread local storageFS 0x30 4 NT Direccion lineal del Process Environment Block PEB FS 0x34 4 NT Numero de ultimo errorFS 0x38 4 NT Conteo de secciones criticas propiasFS 0x3C 4 NT Direccion del CSR Client ThreadFS 0x40 4 NT Informacion del hilo Win32FS 0x44 124 NT Wine Informacion del cliente Win32 NT datos privados de user32 Wine 0x60 LastError Win95 0x74 LastError WinME FS 0xC0 4 NT Reservado para Wow32FS 0xC4 4 NT Internacionalizacion actualFS 0xC8 4 NT Registro de estado de software FPFS 0xCC 216 NT Wine Reservado para el Sist Operativo NT datos privados de kernel32 Wine FS 0x124 4 NT Puntero a estructura KTHREAD ETHREAD FS 0x1A4 4 NT Codigo de excepcionFS 0x1A8 18 NT Pila de contexto de activacionFS 0x1BC 24 NT Wine Bytes de repuesto NT datos privados de ntdll Wine FS 0x1D4 40 NT Wine Reservado para el Sist Operativo NT datos privados de ntdll Wine FS 0x1FC 1248 NT Wine GDI TEB Batch OS datos privados de vm86 Wine FS 0x6DC 4 NT GDI RegionFS 0x6E0 4 NT GDI PenFS 0x6E4 4 NT GDI BrushFS 0x6E8 4 NT Real Process IDFS 0x6EC 4 NT Real Thread IDFS 0x6F0 4 NT GDI cached process handleFS 0x6F4 4 NT GDI client process ID PID FS 0x6F8 4 NT GDI client thread ID TID FS 0x6FC 4 NT Informacion de internacionalizacion para GDI threadFS 0x700 20 NT Reservado para aplicacion de usuarioFS 0x714 1248 NT Reservado para libreria GLFS 0xBF4 4 NT Valor de ultimo estadoFS 0xBF8 214 NT Reservado para advapi32FS 0xE0C 4 NT Puntero para la pila de desasignacionFS 0xE10 256 NT Espacios de TLS 4 bytes por espacioFS 0xF10 8 NT Enlaces de TLS estructura LIST ENTRY FS 0xF18 4 NT VDMFS 0xF1C 4 NT Reservado para RPCFS 0xF28 4 NT Modo de errores de hilo RtlSetThreadErrorMode FS conduce a un TIB que esta incorporado en un bloque de datos conocido como el TDB Thread Data Base El TIB contiene la cadena de manejo de excepciones especifico a cada hilo y punteros al TLS Thread Local Storage El TLS no es lo mismo que el C local storage Acceso al TIB EditarEl TIB se puede acceder como un desplazamiento del segmento de registro FS No es comun acceder a campos del TIB por medio de un desplazamiento desde FS 0 sino que primero se obtiene un puntero de auto referencia lineal a este almacenado en FS 0x18 Este puntero se puede usar con aritmetica de punteros o se puede transformar a un puntero struct Ejemplos en C inlined assembly para x86 de 32 bits gcc AT amp T style inline assembly void getTIB void pTib asm movl fs 0x18 0 r pTib return pTib Microsoft C void getTib void pTib asm mov EAX FS 18 h mov pTib EAX return pTib Usando intrinsics de Microsoft en vez de inline assembly void getTib void pTib void readfsdword 0x18 return pTib Referencias Editar a b Error en la cita Etiqueta lt ref gt no valida no se ha definido el contenido de las referencias llamadas Pietrek May96Enlaces externos EditarUnder The Hood MSJ May 1996 Wine HQ Datos Q8023585Obtenido de https es wikipedia org w index php title Win32 Thread Information Block amp oldid 132314228, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos