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?
Y cuando haces SetThreadContext? Osea, cuando le seteas el contexto al rpoceso nuevamente?
Creo que ahi esta el error...
Saludos!
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?