[Code] GetThreadTEB

  • 0 Respuestas
  • 2597 Vistas

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

Desconectado Arkangel

  • *
  • Underc0der
  • Mensajes: 15
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

[Code] GetThreadTEB

  • en: Junio 17, 2013, 08:58:55 am
Otro codigo  mas de hace un tiempo
Esta función que te da la localización del TEB de cualquier hilo:

Código: C++
  1. #include <Windows.h>
  2. #include <Winternl.h>
  3.  
  4. TEB* GetThreadTEB(ushort TID){
  5.    LDT_ENTRY ldt;//La LDT es un tipo de GDT que es diferente para cada hilo. http://wiki.osdev.org/GDT
  6.    CONTEXT context;
  7.    void* BaseTIB;
  8.    HANDLE hThread;
  9.  
  10.    //Inicializamos a zero
  11.    ZeroMemory(&context,sizeof(context));
  12.    ZeroMemory(&ldt,sizeof(ldt));
  13.    //Le decimos que queremos los registros de segmento del hilo
  14.    context.ContextFlags = CONTEXT_SEGMENTS;
  15.    //Abrimos el hilo con los flag de THREAD_GET_CONTEXT y THREAD_QUERY_INFORMATION
  16.    hThread = OpenThread(THREAD_GET_CONTEXT | THREAD_QUERY_INFORMATION,0,TID);
  17.    //Conseguimos el contexto del hilo
  18.    GetThreadContext(hThread,&context);
  19.    //Conseguimos la LDT asignada a el selector del segmento fs
  20.    GetThreadSelectorEntry(hThread,context.SegFs,&ldt);
  21.    //Cerramos el handle
  22.    CloseHandle(hThread);
  23.  
  24.    //La direccion base esta repartida en tres campos de la ldt BaseLow 0-15,BaseMid 16-23 y BaseHi 24-31
  25.    BaseTIB = (void*)(ldt.BaseLow | (ldt.HighWord.Bits.BaseMid<<16)| (ldt.HighWord.Bits.BaseHi<<24));
  26.    printf("base TIB: %p\n",BaseTIB);
  27.  
  28.    return (TEB*)BaseTIB;
  29. }
  30.  
en el TIB es donde se guarda la informacion de u hilo concreto como los valores de el almacenamiento local, la direccion de la pila, manejo de excepciones, etc

Espero que a alguien le sea util. Yo lo uso para modificar el Thread local storage de cualquier hilo.

Saludos Arkangel
« Última modificación: Febrero 08, 2014, 05:37:41 pm por Expermicid »

 

[C] Code/Decode Cifrado Garbo

Iniciado por S[e]C

Respuestas: 3
Vistas: 3779
Último mensaje Junio 25, 2010, 12:49:52 pm
por rabulu