Curiosidad: pantallazos azules de otros colores con NotMyFault

NotMyFault es un programa de demostración de Mark Russinovich para los libros Microsoft Windows Internals, de los que es coautor, y que él mismo usa ocasionalmente en sus presentaciones técnicas. Su propósito es exhibir las consecuencias de algunos errores de programación típicos en controladores, tales como bloqueos, fugas de memoria de núcleo, procesos zombis y especialmente la temida pantalla azul.

Nota: esta entrada no contiene ningún método de diagnóstico o resolución de problemas. Se recomienda encarecidamente ensayar el funcionamiento de NotMyFault exclusivamente en un sistema de pruebas (para mayor comodidad, una máquina virtual de usar y tirar), ya que su uso entraña el riesgo de corromper archivos y perder datos. En algún caso puede ocasionar que el sistema operativo no vuelva a arrancar.

La denominación de NotMyFault (“la culpa no es mía”) surge del supuesto de que un programa en modo usuario no puede derribar el sistema por sí mismo, de modo que se sirve de un controlador en modo núcleo, MyFault.sys, para tan vil propósito. Este es el agente ejecutor que lleva a cabo realmente la orden escogida en la ventana de la aplicación, acción que se compara con la elección de un veneno. Puesto que el privilegio de la carga de controladores de núcleo se restringe a las cuentas de usuario con mayor poder, la aplicación requiere credenciales de administrador para funcionar correctamente. En verdad, la utilidad práctica de NotMyFault es limitada y su relevancia igualmente escasa por tratarse de una herramienta de demostración. Sin embargo, Russinovich ha ido ampliando poco a poco sus funciones para exponer problemas típicos adicionales.

Uno de los acontecimientos que más diversión suele producir entre el público de una charla técnica, así como una indescriptible sensación de bochorno en los ponentes, es la aparición de un error inesperado en la pantalla de proyección, cuanto más espantoso mejor. Todo el mundo recuerda la pantalla azul durante la presentación de Windows 98 en la exposición Comdex de 1998 con Bill Gates como maestro de ceremonias. Pues bien, parece ser que a Mark Russinovich le gusta agradar al auditorio con una pantalla azul auténtica en algunas de sus sesiones sobre investigación de problemas en Windows. Aún puede darse una vuelta más de tuerca convirtiendo lo “cotidiano” en excepcional; vale, lo he destripado en el título. ¿Y si la pantalla azul ya no tuviese fondo azul o texto blanco?

Windows 3.1 y sus sucesores (Windows 3.11, Windows 95, Windows 98 y Windows Millennium) permitían modificar los colores del texto y el fondo de sus “pantallas azules” a través de los valores MessageTextColor y MessageBackColor de la sección [386Enh] del archivo System.ini. No obstante, en la familia Windows NT los valores de color están especificados directamente (hardcoded) en el código fuente del núcleo y por tanto incorporados al flujo de instrucciones de código máquina, así que variarlos no resulta fácil. El mes pasado, Russinovich explicó en su blog un método bastante complicado para modificar directamente en memoria estos números mediante el depurador del núcleo. Por supuesto, el éxito de esta empresa es efímero y, desde luego, alterar el archivo Ntoskrnl.exe con un editor hexadecimal tampoco es una opción por diversos motivos.

Entonces, ya que NotMyFault es tan “útil” para generar errores de sistema a propósito, el experto Alex Ionescu sugirió la idea de añadir esta peculiaridad de algún modo al programa. La implementación, según ha relatado hace unos días Russinovich, consiste en una rutina que manipula la paleta de colores VGA del controlador básico de vídeo. Para conseguir que el núcleo la invoque inmediatamente después de mostrar el texto de la pantalla azul, se inserta en una lista específica mediante la función KeRegisterBugCheckReasonCallback. Este mecanismo de retrollamada (callback) es totalmente opcional y está concebido particularmente para agregar datos al volcado de memoria, restablecer un dispositivo a un estado seguro o copiar la información del volcado a otro sistema de almacenamiento.

Por cierto, también hablaron de forma más resumida sobre este tema en Softzone.es: Cambiar el color de los pantallazos azules (BSOD) ahora es posible. Si alguien desea probar la aplicación, insistiré en la advertencia de la nota de arriba (únicamente en entornos de pruebas o pondrás en serio riesgo tus datos). La descarga se encuentra en la página oficial del libro Microsoft Windows Internals, Fifth Edition, incluye código fuente además de los archivos binarios firmados digitalmente, y es compatible con las ediciones x86 y x64 a partir de Windows XP. No obstante, al momento de publicar esta entrada, el código fuente del controlador MyFault distribuido en el archivo ZIP está anticuado: no se corresponde con los archivos compilados, sino que continúa siendo el de la actualización de marzo de 2009.

En fin, que os divirtáis provocando fallos a diestro y siniestro con pantallas de colorines, pero sin hacer maldades, ¿eh? 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *