Ver Mensaje Individual
  #2  
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
He probado esto:
Código PHP:
DWORD64 __fastcall THiloDebugger::GetTEBHANDLE hThread)
{
        
#ifndef THREAD_BASIC_INFORMATION
            #define SIZE_NTSTATUS 4
            #define SIZE_PADDING 4
            #define SIZE_CLIENT_ID 16
            #define SIZE_KAFFINITY 8
            #define SIZE_KPRIORITY 4

            
typedef DWORD NTSTATUS;
            
typedef __int128 CLIENT_ID;
            
typedef DWORD KPRIORITY;

            
typedef struct _THREAD_BASIC_INFORMATION
            
{
                
NTSTATUS                ExitStatus;
                
PVOID                   TebBaseAddress;
                
CLIENT_ID               ClientId;
                
KAFFINITY               AffinityMask;
                
KPRIORITY               Priority;
                
KPRIORITY               BasePriority;
            } 
THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
        
#endif

        
typedef NTSTATUS (WINAPI *PNTQIT)(HANDLETHREADINFOCLASSPVOIDULONGPULONG);
        
PNTQIT pNtQueryInformationThread;

        
THREAD_BASIC_INFORMATION infoBuff={0};
        
HMODULE hMod LoadLibrary(L"Ntdll.dll");
        
pNtQueryInformationThread = (PNTQITGetProcAddress(hMod,"NtQueryInformationThread");
        
NTSTATUS stat pNtQueryInformationThread(hThread, (THREADINFOCLASS0, &infoBuffsizeof(THREAD_BASIC_INFORMATION), NULL);
        if (!
NT_SUCCESS(stat)) {
            
ShowMessage(WideString().sprintf(L"ERROR (code 0x%8x): No se pudo obtener la informacion del TEB del proceso. \n"stat));
            return 
0;
        }
        return (
DWORD64)infoBuff.TebBaseAddress;

Aparentemente funciona pero no se si lo que obtengo es lo que busco o está obteniendo otra cosa:
Código:
infoBuff		{ 0x00000103, :0000000000336000, 168750814786294978186064, 0x000000000000000f, 0x00000009, 0x00000000 }
	infoBuff.ExitStatus	259 (0x00000103)
	infoBuff.TebBaseAddress	:0000000000336000
	infoBuff.ClientId	168750814786294978186064
	infoBuff.AffinityMask	15 (0x000000000000000f)
	infoBuff.Priority	9 (0x00000009)
	infoBuff.BasePriority	0 (0x00000000)
Lo que me extraña es la TebBaseAddress ¿no tendria que estar dentro del header del programa? Ademas en cada ejecucion me da un valor diferente
Pienso que esto no vale
Responder Con Cita