Se pueden hacer muchas cosas jeje, hay formas que desde ring3 puedes inhabilitar los soft breakpoints por ejemplo ejecutando instrucciones privilegiadas (ring0) cambiando la dirección contenida en el vector de la IDT de la INT3, jeje..
Agregando a lo que te dijo Under para los BPM también puedes usar la api VirtualQuery + la struct MEMORY_BASIC_INFORMATION, para saber los permisos actuales de las páginas de memorias
.
Saludos,
Nox.