Te explico el código asm que expones:
Código:
xor eax, eax // Ponemos en eax un 0
push offset @being_debugged // Apilamos la rutina manejadora de excepciones
push dword fs:[eax] // y añadimos esa rutina
mov fs:[eax], esp // al manejador de excepciones
push esp // Pasamos como parámetro a CloseHandle un valor cualquiera inválido
call CloseHandle // Tratamos de cerrar el Handle que hemos pasado
Ahora tienes que implementar tu rutina begin_Debugged que si se llega a ella, es que estamos siendo debuggeados.
Saludos.