Creando un HideIsDebuggerPresent

Iniciado por aguml, 13 Junio 2014, 18:25 PM

0 Miembros y 1 Visitante están viendo este tema.

aguml

Bueno pues despues de haber estado googleando y leyendo he dado con esto:

void HideIsDebuggerPresent(bool hide) {
    unsigned char being_debugged = (hide ? 0 : 1);

    __asm {
        MOV EAX, FS:[0x18]
        MOV EAX, [EAX + 0x30]
        MOV CL, being_debugged
        MOV BYTE PTR [EAX + 2], CL
    }
}


Y luego en el evento de depuracion CREATE_PROCESS_DEBUG_EVENT pongo esto:
CurrentExceptionThread = DebugEv.u.CreateProcessInfo.hThread;
con.ContextFlags= CONTEXT_FULL | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS;
GetThreadContext(CurrentExceptionThread, &con);
HideIsDebuggerPresent(false);


Pero el programa que he creado para depurarlo y probar me sigue mostrando que es detectado el debugger. ¿que me falta?

MCKSys Argentina

Y cuando haces SetThreadContext? Osea, cuando le seteas el contexto al rpoceso nuevamente?

Creo que ahi esta el error...

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


x64core

La idea no es escribirlo en el PEB del proceso remoto en lugar que en el de uno mismo? o esta el código en el remoto?