Ver Mensaje Individual
  #1  
Antiguo 01-06-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Reputación: 11
aguml Va por buen camino
Truco Antidebug con NtSetInformationThread no funciona

Hola amigos, estoy intentando añadir ese truco a un proyecto mio pero no detecta el debugger nunca. Estoy en Windows 10 x64 y lo tengo 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 ThreadHandleULONG ThreadInformationClassPVOID ThreadInformationULONG ThreadInformationLength);
    
LONG (WINAPI *NtQueryInformationThread)(HANDLE ThreadHandleULONG ThreadInformationClassPVOID ThreadInformationULONG ThreadInformationLengthPULONG ReturnLength);
    *(
FARPROC *)&NtSetInformationThread GetProcAddress(NtDll"NtSetInformationThread");
    *(
FARPROC *)&NtQueryInformationThread GetProcAddress(NtDll"NtQueryInformationThread");

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

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

    
//En x32 si estamos depurandolo se cerrará directamente el proceso
    
ntStat NtSetInformationThread(NULLThreadHideFromDebugger00);

    
//only available >= VISTA
    
ntStat NtQueryInformationThread(NULLThreadHideFromDebugger, &checksizeof(bool), 0);
    if (
ntStat >= 0)
    {
        if (!
check)
        {
            
//Detectado con metodo 4
            
return true;
        }
        else
        {
            return 
false;
        }
    }
    return 
retval;

¿Que hago mal?
Responder Con Cita