Ver Mensaje Individual
  #2  
Antiguo 01-06-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Reputación: 14
aguml Va por buen camino
El original era así:
Código PHP:
bool __fastcall TMyThread2::QueryNtSetInformationThread(void)
{
    
HMODULE NtDll;
    
NTSTATUS ntStat;
    
bool check = false;
    
bool retval=false;
    
int ThreadHideFromDebugger = 0x11;

    
NtDll = LoadLibrary(L"ntdll.dll");
    
LONG (WINAPI *NtSetInformationThread)(HANDLE ThreadHandle, ULONG ThreadInformationClass, PVOID ThreadInformation, ULONG ThreadInformationLength);
    
LONG (WINAPI *NtQueryInformationThread)(HANDLE ThreadHandle, ULONG ThreadInformationClass, PVOID ThreadInformation, ULONG ThreadInformationLength, PULONG ReturnLength);
    *(
FARPROC *)&NtSetInformationThread = GetProcAddress(NtDll, "NtSetInformationThread");
    *(
FARPROC *)&NtQueryInformationThread = GetProcAddress(NtDll, "NtQueryInformationThread");

    
//invalid parameter
    
ntStat = NtSetInformationThread(NULL, ThreadHideFromDebugger, &check, sizeof(ULONG));
    if (
ntStat >= 0) //it must fail
    
{
        
//Detectado con metodo 1
        
return true;
    }

    
//invalid handle
    
ntStat = NtSetInformationThread((HANDLE)0xFFFFF, ThreadHideFromDebugger, 0, 0);
    if (
ntStat >= 0) //it must fail
    
{
        
//Detectado con metodo 2
        
return true;
    }

    
//En x32 si estamos depurandolo se cerrará directamente el proceso
    
ntStat = NtSetInformationThread(NULL, ThreadHideFromDebugger, 0, 0);

    if (
ntStat >= 0)
    {
        
//only available >= VISTA
        
ntStat = NtQueryInformationThread(NULL, ThreadHideFromDebugger, &check, sizeof(bool), 0);
        if (
ntStat >= 0)
        {
            if (!
check)
            {
                
//Detectado con metodo 4
                
return true;
            }
            else
            {
                return 
false;
            }
        }
    }else{
        
//Detectado por metodo 3
        
return true;
    }

    return 
retval;
} 
Pero siempre me decía que me había detectado con el método 3 aunque no hubiese depurador
Responder Con Cita