Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-01-2021
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Problemas con NtSetInformationThread

Buenas, estoy intentando aplicar unos trucos antidebug relacionados con esa Api de Windows pero no consigo que me funcionen.
Tengo esto:
Código PHP:
void __fastcall TForm1::QueryNtSetInformationThread(RETURN_DETECTION *Detection)
{
    
HMODULE NtDll;
    
NTSTATUS ntStat;
    
bool check false;
    
int ThreadHideFromDebugger 0x11;

    
Detection->NtSetInformationThread.isDebugger false;

    
NtDll LoadLibrary(L"ntdll.dll");
    
LONG (WINAPI *NtSetInformationThread)(HANDLE ThreadHandleULONG ThreadInformationClassPVOID ThreadInformationULONG ThreadInformationLength);

    *(
FARPROC *)&NtSetInformationThread GetProcAddress(NtDll"NtSetInformationThread");

    
//invalid parameter
    
ntStat NtSetInformationThread((HANDLE)Application->HandleThreadHideFromDebugger, &checksizeof(ULONG));
    if (
ntStat >= 0//it must fail
    
{
        
Detection->NtSetInformationThread.cadena "Detectado con SetInformationThread con parámetro inválido";
        
Detection->NtSetInformationThread.isDebugger true;
        return;
    }

    
//invalid handle
    
ntStat NtSetInformationThread((HANDLE)0xFFFFFThreadHideFromDebugger00);
    if (
ntStat >= 0//it must fail
    
{
        
Detection->NtSetInformationThread.cadena "Detectado con SetInformationThread con HANDLE inválido";
        
Detection->NtSetInformationThread.isDebugger true;
        return;
    }

    
ntStat NtSetInformationThread((HANDLE)Application->HandleThreadHideFromDebugger00);

    if (
ntStat >= 0)
    {
        
Detection->NtSetInformationThread.cadena "SetInformationThread pasado con éxito";
    }
    else
    {
        
Detection->NtSetInformationThread.cadena "Detectado con SetInformationThread con tercer método";
        
Detection->NtSetInformationThread.isDebugger true;
        return;
    }
}
//--------------------------------------------------------------------------- 
Se supone que cuando falla tiene que ocultar el hilo indicado por el Handle a esta Api del debugger con lo que el debugger falla.
La cosa es que por ejemplo en el primero me da la salida 0x80000002 que se supone que es lo que debe dar pero no oculta el hilo o algo hago mal porque el debugger lo sigue depurando sin problema.
En los 3 casos tendría que tener el mismo comportamiento pero en ninguno hace lo que se espera.
Responder Con Cita
  #2  
Antiguo 06-01-2021
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Application->Handle no es el Handle del hilo actual ni el de la aplicación, es Handle de la ventana principal.


Saludos.
Responder Con Cita
  #3  
Antiguo 06-01-2021
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Probé también usando desde el método del hilo tanto hilo->Handle como this->Handle y no hizo lo que espero que haga. Sobre el handle del proceso ¿Como lo obtengo?
Responder Con Cita
  #4  
Antiguo 06-01-2021
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
ZwCurrentThread, GetCurrentThread

Saludos.
Responder Con Cita
  #5  
Antiguo 06-01-2021
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
GetCurrentThread la intenté usar y el builder me decía que era una función privada de Clases::TThread o algo así.
Responder Con Cita
  #6  
Antiguo 06-01-2021
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por aguml Ver Mensaje
GetCurrentThread la intenté usar y el builder me decía que era una función privada de Clases::TThread o algo así.
Es una API de Windows y devuelve -2 (FFFFFFFEh) mientras no lo modifiquen.


Saludos.
Responder Con Cita
  #7  
Antiguo 06-01-2021
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Pues con -2 tampoco funciona.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Truco Antidebug con NtSetInformationThread no funciona aguml C++ Builder 1 01-06-2020 15:18:47


La franja horaria es GMT +2. Ahora son las 08:01:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi