Tutorial sobre Windbg [Parte VI]

En la quinta parte de este tutorial introductorio de depuración de aplicaciones vimos algunos comandos de Windbg que nos permiten mostrar información sobre la pila de ejecución en un determinado momento, una tarea bastante cotidiana en el ámbito de la depuración. En esta parte veremos algunas otras tareas relacionadas con la pila de ejecución y los correspondientes comandos de Windbg que nos permite llevarlas a cabo. Puede darse el caso de que necesitemos saber el espacio que ocupa cada marco de pila de una traza de pila concreta. Para ello podemos obtenerlo de dos formas: Aplicando la teoría que vimos … Continue reading Tutorial sobre Windbg [Parte VI]

Un método más para detectar defectos en extensiones de shell

Una cosa en la que destaca Windows, y en especial su shell, es que se trata de un componente muy extensible por parte de los desarrolladores de aplicaciones. Por ejemplo, se pueden crear manejadores de propiedades para que el usuario pueda verificar el código CRC de un fichero accediendo a sus propiedades; manejadores del menú contextual que nos permitan examinar un fichero o carpeta con un antivirus, etc. El problema de ser tan extensible es que no siempre el software que extiende el shell cumple con las guías de desarrollo que se explican en la documentación oficial (MSDN Library). Este … Continue reading Un método más para detectar defectos en extensiones de shell

Práctica: Ver cómo ciertas aplicaciones cancelan la reproducción automática usando Spy++

En un artículo anterior en el que expliqué cómo funciona la reproducción automática en Windows 7 comenté que hay aplicaciones que deciden cancelar la reproducción automática bajo ciertas circunstancias. Un ejemplo de este tipo de aplicaciones es la aplicación de grabación de imágenes ISO de Windows 7 (Isoburn.exe), que cancela la reproducción automática si el dispositivo de grabación que está seleccionado en la lista desplegable es el responsable del evento de la reproducción automática. Vamos a verlo gráficamente. Spy++ es una herramienta de Microsoft presente en Visual Studio. Esta herramienta muestra de manera jerárquica la relación entre ventanas, procesos e … Continue reading Práctica: Ver cómo ciertas aplicaciones cancelan la reproducción automática usando Spy++

Tutorial sobre Windbg [Parte V]

A continuación vamos a ver técnicas para examinar de manera útil y detallada una de las estructuras de datos más importantes: la pila. ¿Qué es una pila? La pila es una de las estructuras de datos más sencillas que existen. Consta básicamente de dos operaciones: apilar, que introduce elementos en la pila, y desapilar, que quita el elemento que ocupa la primera posición (la cima) de la pila, siempre y cuando tenga alguno. Como ve, se asemeja a una pila de platos o una pila de libros. Los primeros elementos que llegan a la estructura son los últimos que la … Continue reading Tutorial sobre Windbg [Parte V]

Tutorial sobre Windbg [Parte IV]

En esta cuarta parte del tutorial sobre Windbg, se van a tratar algunos comandos básicos para conocer el estado de la máquina que estamos depurando. El primer aspecto que se va a tratar es el estado del banco de registros. Estado del banco de registros Toda computadora dispone de un conjunto compuesto por un cierto número de registros. El número de registros y su tamaño (en número de bits) es algo que depende de la arquitectura de la plataforma. Los registros principalmente sirven para almacenar de manera temporal pequeños valores que se van necesitando durante la ejecución del código máquina, … Continue reading Tutorial sobre Windbg [Parte IV]

Tutorial sobre Windbg [Parte III]

En el anterior artículo vimos cómo abrir nuestra aplicación en modo usuario dentro de Windbg y comprendimos mejor qué es lo que ocurre cuando este se hace cargo de nuestra aplicación. Ahora tenemos a nuestra disposición una ventana con salida de texto y una caja de entrada de comandos pero, ¿qué podemos hacer? Es importante saber que podemos manejar la ventana de Windbg e introducir comandos en su caja de texto porque nuestra aplicación está detenida debido a la excepción STATUS_BREAKPOINT que se recibe por defecto nada más abrir la aplicación en Windbg. Así pues, lo primero que buscamos es una forma … Continue reading Tutorial sobre Windbg [Parte III]

ProcDump: Una herramienta muy útil

A principios de este mes Technet ha publicado una nueva utilidad que no debería faltar en la «caja de herramientas» de toda persona que se enfrente a un problema con Windows. ProcDump es una herramienta que se adhiere a un proceso de la máquina y genera un volcado de memoria en el momento que se cumplan ciertas condiciones, como por ejemplo un alto consumo de CPU, una ventana que no responde, una excepción no manejada, etc. En este sentido se trata de una herramienta similar al script ADPlus.vbs, aunque considero que ProcDump resulta más intuitiva y algo más sencilla de … Continue reading ProcDump: Una herramienta muy útil

Tutorial sobre Windbg [Parte II]

En la primera parte de esta serie de artículos aprendió a instalar Windbg y a configurar un aspecto básico, los símbolos de depuración. En este artículo veremos cómo configurar otros aspectos menores de Windbg, pero que le pueden resultar necesarios, y depuraremos la primera aplicación en modo usuario. Configurar la ruta de código fuente Si está depurando una aplicación que no haya desarrollado, es probable que no disponga del código fuente de la misma; sin embargo, si estuviera depurando una aplicación de la que dispone el código fuente, es muy buena idea configurar Windbg para que sea capaz de usar toda … Continue reading Tutorial sobre Windbg [Parte II]

"MMC no puede abrir el archivo". Cómo analizar el error

Un problema que le ocurre a no poca gente que usa Windows XP consiste en que al intentar abrir un fichero con extensión MSC (Services.msc, Diskmgmt.msc, etc.) el sistema muestra el siguiente mensaje de error: MMC no puede abrir el archivo C:\WINDOWS\system32\services.msc. Puede ser que el archivo no exista, no sea una consola de MMC o fue creado por una versión más reciente de MMC. También puede ser que no tiene suficientes derechos de acceso para abrir el archivo. El propio mensaje nos explica las posibles causas del problema, pero ciertamente la información que ofrece es algo vaga e inespecífica. … Continue reading "MMC no puede abrir el archivo". Cómo analizar el error

Tutorial sobre Windbg [Parte I]

A petición de un buen número de personas que me han escrito a través del blog, he decidido comenzar un tutorial sobre depuración de aplicaciones y el sistema operativo Windows usando Windbg. A través de este tutorial espero cubrir conceptos introductorios (tales como aprender a configurar Windbg, saber qué comandos son los más destacados y para qué sirven, etc.), hasta llegar a conceptos más avanzados que impliquen la aplicación de la teoría al análisis y solución de problemas reales. Se van a tratar tanto la depuración de volcados de memoria (algo que se conoce como postmortem debugging), como la depuración … Continue reading Tutorial sobre Windbg [Parte I]