Ver Mensaje Individual
  #1  
Antiguo 21-05-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Reputación: 12
aguml Va por buen camino
Obtener el TEB de un proceso en x64

Buenas amigos, ya estoy depurando mi clase TDebugger y el primer pero que tengo es algo que uso para los métodos antidebug para lo cual necesito obtener el TEB. He modificado la función que tenia en x86 para adaptarla en x64 y quedó así:
Código PHP:
DWORD64 __fastcall THiloDebugger::GetTEBHANDLE hThreadHANDLE hProcess )
{
        
LDT_ENTRY Selector;
        
DWORD64 nTEBAddr;
        
CONTEXT Context = {0};

        
Context.ContextFlagsCONTEXT_FULL CONTEXT_FLOATING_POINT CONTEXT_DEBUG_REGISTERS;

        if(!
GetThreadContext(hThread, &Context))
        {
                return 
0;
        }

        if(!
GetThreadSelectorEntry(hThreadContext.SegFs, &Selector))
        {
                return 
0;
        }

        
nTEBAddr = ((Selector.HighWord.Bits.BaseHi << 24) + (Selector.HighWord.Bits.BaseMid << 16) + Selector.BaseLow);

        return 
nTEBAddr;

El problema es que GetThreadSelectorEntry solo sirve para x86 (lo miré en la msdn). ¿No existe el TEB en x64?¿como lo obtengo?

Última edición por aguml fecha: 21-05-2020 a las 10:39:44. Razón: El titulo estaba mal
Responder Con Cita