send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Code] GetThreadTEB

  • 0 Respuestas
  • 1318 Vistas

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

Desconectado Arkangel

  • *
  • Underc0der
  • Mensajes: 15
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« 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 »

 

¿Te gustó el post? COMPARTILO!



[C] Code/Decode Cifrado Garbo

Iniciado por S[e]C

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