Confidencial de WindowsLlamada al Dr. Watson

Raymond Chen

Es posible que haya observado que si solicita a Dr. Watson (drwtsn32.exe) que haga un volcado de la memoria del proceso Winlogon, Windows® se apaga en cuanto finaliza dicha operación. Algunas personas se preguntan, "¿por qué conectar un depurador para que Winlogon detenga todo el sistema?"

En realidad esto no es así. Ejecutar Dr. Watson en un proceso no es lo mismo que conectar un depurador a un proceso. La conexión de un depurador implica el uso de un programa como ntsd, y funciona correctamente, si tiene los privilegios necesarios. En realidad, este es el modo en que el equipo de Windows depura los problemas con Winlogon. Así que la respuesta literal a esta pregunta es: "la conexión de un depurador a Winlogon no detiene el sistema".

Pero Dr. Watson es un médico forense, no un médico general y primero toma un volcado de memoria de un proceso problemático, y después detiene dicho proceso. Como el Dr. Watson no intenta en realidad solucionar el problema, si permitiera que el proceso se siga ejecutando, ese proceso simplemente se volvería a bloquear. Y enseguida llamaría al médico para que volviera a entrar, lo que conduciría a un bucle infinito. En cierto sentido, Dr. Watson es un depurador que en realidad no realiza ninguna depuración. Un médico eficiente simplemente aparece en la escena, toma notas cuidadosamente, y después detiene el proceso. Y es precisamente esto, eliminar Winlogon después de tomar el volcado de la memoria, lo que hace que el sistema se bloquee.

Si detiene Winlogon, su sistema se rearrancará

Si detiene Winlogon, su sistema se rearrancará  (Hacer clic en la imagen para ampliarla)

Winlogon es lo que se conoce como un "proceso crítico de sistema" y la muerte de un proceso crítico fuerza el reinicio del sistema. ¿Por qué el sistema considera a Winlogon crítico para su funcionamiento? En primer lugar, Winlogon es responsable de administrar la secuencia de aviso de seguridad, Ctrl+Alt+Supr. Si Winlogon muere, la secuencia de aviso de seguridad deja de funcionar. Lo cuál, en sí, ya es negativo. Lo que agrava el problema es que dada la ausencia del vigilante oficial de la secuencia de aviso de seguridad, lo único que puede hacer cualquier otro programa es esperar a que el usuario presione Ctrl+Alt+Supr y mostrar en respuesta un diálogo de contraseña falso. ¡No sería una secuencia de aviso de seguridad muy buena si su identidad pudiera ser suplantada! Como una medida protectora, Windows se apaga antes de que la situación negativa se vuelva peor.

Ahora, si ejecuta el Administrador de tareas, resalte un proceso crítico de sistema como Winlogon, haga clic en Finalizar proceso, confirme y, vaya, acaba de eliminar Winlogon y el sistema se rearrancará (se supone, por supuesto, que realiza la ejecución con una cuenta elevada de administrador y, por lo tanto, tiene los privilegios suficientes para eliminar el proceso).

En versiones anteriores de Windows, el Administrador de tareas intentaba evitar que eliminara estos procesos críticos de sistema, pero su algoritmo para decidir qué procesos eran críticos no era muy inteligente. Si era lo suficientemente hábil, se podía falsificar el Administrador de tareas y crear un programa que dicho administrador considerara imposible eliminar. Por supuesto, en realidad no sucedía así. Seguía siendo posible eliminar el programa: sólo tenía que usar otro programa que no fuera el Administrador de tareas para hacerlo. Por ejemplo, quizás se podía probar el programa taskkill.

Para evitar falsificaciones, el Administrador de tareas simplemente ya no intentaba evitar que eliminara los procesos críticos de sistema. Después de todo, si el usuario no hace nada, no puede hacerlo mal. Esto significa que el Administrador de tareas ya no lo vigila cuando elimina un proceso. No le dará un tirón de orejas cuando intente eliminar algo que probablemente convendría dejar estar. Si elige eliminar un proceso crítico de sistema, simplemente tendrá asumir las consecuencias.

Raymond Chen The Old New Thing, y en su libro homónimo (Addison-Wesley, 2007) se trata la historia de Windows y la programación de Win32. Chen considera que hay que dejar a otros el trabajo de los mecanismos operativos.

© 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda prohibida la reproducción parcial o total sin previa autorización.