Compartir a través de


[Archivo de boletines ^] [Volumen 1, Número 2 >]

Boletín de The Systems Internals Volume 1, Number 1

http://www.sysinternals.com


14 de abril de 1999- En este problema:

  1. NOVEDADES DE SYSTEMS INTERNALS

    • VolumeID para Windows 9x
    • EFSDump
    • ListDLLs for Compaq Alpha
    • "Dentro del proceso de arranque, parte 2"
    • Mi artículo de abril de Windows NT Magazine
    • Sin crédito donde es debido
    • Cosas no tan nuevas
  2. NOTICIAS INTERNAS

    • Comprobador del controlador Win2K
    • Pruebas de Y2K con Boot.ini
  3. PRÓXIMAMENTE

    • Interbloqueos en cola en Win2K
    • Tokenmon

PATROCINADOR: WINTERNALS SOFTWARE

El Boletín de The Systems Internals está patrocinado por Winternals Software, en la Web en http://www.winternals.com. Winternals Software es el principal desarrollador y proveedor de herramientas avanzadas de sistemas para Windows NT/2K. Los productos de Winternals Software incluyen FAT32 para Windows NT 4.0, ERD Commander (funcionalidad de disco de arranque para Windows NT) y NTRecover.

Hola a todos:

Bienvenido a la primera entrega del Boletín de Systems Internals. Me complace decir que el boletín ya ha adquirido 1000 suscriptores desde su anuncio hace un poco más de una semana.

Mi objetivo en el boletín informativo es proporcionarle información oportuna sobre las nuevas utilidades y artículos que aparecen en Systems Internals, además de proporcionar curiosidades con información sobre los aspectos internos de Windows que no tienen un foro adecuado en el sitio web de Systems Internals. Si tiene algún comentario o sugerencia sobre el boletín, no dude en enviármelos a mark@.... Además, por favor reenvíe el boletín a cualquier persona que considere que podría estar interesado en él. Al final del boletín se proporcionan instrucciones sobre la suscripción, su anulación o su modificación.

Gracias

-Mark

NOVEDADES DE SYSTEMS INTERNALS

VOLUMEID PARA WINDOWS 9X

Aunque Windows NT y Windows 9x le permiten cambiar la etiqueta en una unidad lógica o un disquete mediante el comando "label", no proporcionan ningún medio para que pueda cambiar los identificadores de volumen que se asignan arbitrariamente al dar formato a las unidades. El programa VolumeID, que ha estado disponible para Windows NT en el sitio de Systems Internals durante más de un año, se acaba de migrar a Windows 9x. Este applet le permite cambiar los identificadores de volumen en unidades de disco duro y discos de disquete a lo que desee.

VolumeID usa API que permiten a las aplicaciones leer y escribir directamente en unidades lógicas, y en Win9x, unidades físicas (discos disquete), omitiendo los sistemas de archivos. En Windows NT/2K VolumeID usa ReadFile y WriteFile normales para acceder a los datos de la unidad sin procesar: el truco está en cómo especifica el nombre del volumen al que quiere acceder. Puede averiguar cómo acceder a unidades físicas o lógicas desde una aplicación en Windows NT/2K en el artículo de Microsoft Knowledge Base Q100027. Para el acceso de Windows 9x a unidades lógicas, puede basar el código en el código de ejemplo proporcionado en el artículo de Microsoft Knowledge Base Q174569. Si necesita realizar el acceso directo a la unidad de disquete desde la aplicación en Windows 9x, use el VWIN32_DIOC_DOS_INT13 IOCTL de Win32, que se documenta en MSDN.

Descargar VolumeID en http://www.sysinternals.com/misc.htm.

EFSDUMP

Windows 2000 será el debut de la tecnología de cifrado de archivos integrada de Microsoft, el sistema de cifrado de archivos. Con EFS se incluyen varias API nuevas para manipular archivos cifrados, incluida una, QueryUsersOnEncryptedFile, que permite ver qué usuarios están registrados para tener acceso a archivos cifrados y qué usuarios están registrados como agentes de recuperación para esos archivos. He escrito un pequeño programa llamado EFSDump que le permite ver fácilmente esta información para archivos cifrados en su sistema.

Aunque estoy en el tema de las API de EFS, hay varias API nuevas que no se han documentado a partir del MSDN de abril, algo bastante preocupante a estas alturas del ciclo de lanzamiento de Windows 2000. En particular, OpenEncryptedFileRaw, ReadFileEncryptedRaw, WriteFileEncryptedRaw y CloseEncryptedFileRaw (todos se exportan en la ADVAPI32.DLL de Win2K) son todos actualmente no documentados. El uso de estas API es necesario para cualquier aplicación que desee hacer una copia de seguridad de los archivos cifrados, lo que significa que Microsoft está transmitiendo información sobre ellas solo a asociados seleccionados, o las empresas de software de copia de seguridad tendrán que apresurarse para sacar sus productos al mercado cuando Microsoft finalmente los documente públicamente. Una cosa es cierta, los desarrolladores del programa NTBACKUP de Windows 2000 ya han tenido acceso a la documentación de la API: NTBACKUP de Win2K Beta 3 está usando activamente las API.

Si está interesado en los elementos internos de EFS, asegúrese de consultar mi próxima serie de dos partes de junio/julio en EFS en mi columna "NT Internals" en Windows NT Magazine. En el artículo describo exactamente dónde se almacenan las FEK (claves de cifrado de archivos) y las claves EFS de usuario, cómo funciona el proceso de cifrado NTFS, el controlador EFS y LSASRV (el servidor del subsistema de autoridad de seguridad local) y, por supuesto, cómo funciona el descifrado.

Descarga de EFSDump con código fuente completo en http://www.sysinternals.com/misc.htm.

LISTDLLS PARA COMPAQ ALPHA

El número de utilidades disponibles para Alpha en Systems Internals sigue creciendo. La adición más reciente es ListDLLs, una utilidad de línea de comandos que le permite ver información de DLL para ejecutar procesos. Mi herramienta HandleEx permite ver esta información, así como información sobre los identificadores (archivos, procesos, subprocesos, objetos de sincronización) que los procesos han abierto, pero HandleEx es una herramienta de GUI, por lo que no siempre es conveniente (por ejemplo, no se puede ejecutar dentro de un archivo por lotes).

¿Tiene curiosidad por la relación de descargas de la versión x86 de la utilidad típica de Systems Internals con respecto a su versión de Alpha correspondiente? Es aproximadamente 20:1, lo que se aproxima a las estimaciones del sector de que la base de usuarios instalada de Alpha NT es el 5% del mercado total de NT.

Puede descargar ListDLLs y otros puertos Alfa, incluidos HandleEx, en http://www.sysinternals.com/alpha.htm.

"DENTRO DEL PROCESO DE ARRANQUE, PARTE 2"

Mi columna "NT Internals" de enero de Windows NT Magazine ahora está disponible en línea a través del sitio web de Windows NT Magazine. Puede encontrar un vínculo a él, así como a las columnas "NT Internals" anteriores y a la parte 1, en la página Publicaciones de Systems Internals: http://www.sysinternals.com/publ.htm.

MI ARTÍCULO DE ABRIL EN WINDOWS NT MAGAZINE

Además, asegúrese de echar un vistazo a mi artículo de características en la edición de abril de Windows NT Magazine, "Linux y Enterprise". He revelado varios problemas importantes con respecto al kernel de Linux 2.2 y las aplicaciones de servidor de red (aplicaciones "empresariales") que, en última instancia, impedirán que esta versión del kernel de Linux compita de cabeza a cabeza con NT y otras variantes de UNIX en términos de rendimiento.

SIN CRÉDITO DONDE ES DEBIDO

En una nota relacionada, es posible que haya oído hablar de la versión reciente de D.H. Brown (una empresa de analistas) sobre la funcionalidad de Linux como sistema operativo empresarial. Resulta que el autor del informe "tomó prestado" en gran medida un correo electrónico mío que alguien publicó en el grupo de noticias Usenet del kernel de Linux en enero. Si tiene acceso al informe y lee las páginas (44 y 45) que tratan sobre Linux y multiprocesadores (el informe no está disponible públicamente, debe comprarlo por una suma considerable) y, a continuación, lee mi correo electrónico en Deja News, verá un paralelismo directo, hasta en los pequeños detalles.

COSAS NO TAN NUEVAS

Utilizo esta sección del boletín informativo para presentar los cambios recientes en el sitio de Systems Internals de los que quizá no tenga conocimiento, o para proporcionar más información sobre una utilidad de la que está disponible en el sitio. Por ejemplo, hace un par de semanas publicamos Filemon v4.1. Esta versión de Filemon es capaz de supervisar la actividad tanto de Named Pipe como de Mail Slot bajo Windows NT/2K. La mejora del código necesario para admitir esto era relativamente menor, ya que Named Pipes and Mailslots se implementan como controladores del sistema de archivos. La parte difícil (tediosa) fue averiguar los IOCTL privados (comandos de control de E/S) que admiten estos sistemas de archivos especiales para que Filemon pueda mostrarlos. Puede descargar Filemon (que funciona en Windows NT/2K y Windows 9x) en http://www.sysinternals.com/filemon.htm.

Si quiere obtener más información sobre cómo funciona Filemon internamente, consulte mi columna "NT Internals" de febrero de Windows NT Magazine, que tiene el título "Inside NT Utilities". En el artículo se describe cómo usar Filemon, Regmon, NTFSDOS, NewSID y HandleEx, y se explica un poco cómo funcionan.

NOTICIAS INTERNAS

COMPROBADOR DEL CONTROLADOR DE WINDOWS 2000

Windows 2000 Beta 3 presenta una ayuda de desarrollo de controladores de dispositivos muy eficaz denominada Comprobador de controladores. Esta herramienta funciona con código en el kernel para obtener el control del controlador y ejercerlo para el cumplimiento de las reglas en modo kernel de una manera que antes no era posible. Los errores en los controladores de dispositivos son, con gran diferencia, la contribución más importante a la reputación que tiene mucha gente de que NT es un sistema operativo inestable, y esta herramienta pretende reparar esa reputación ayudando a los creadores de controladores a encontrar sus errores antes de que lo hagan los usuarios.

Hay varios tipos de problemas sutiles que pueden pasar las pruebas casuales de controladores (el tipo más común de pruebas realizadas bajo restricciones estrictas de tiempo de comercialización), e incluso colarse en pruebas de esfuerzo serias. Un tipo de problema de controlador común es un controlador que accede a la memoria paginada en "IRQL con privilegios elevados" (prioridad de interrupción alta). Si la memoria a la que accede el controlador está físicamente presente en el momento del acceso (no se ha paginado en el archivo de paginación), el acceso ilegal pasará desapercibido. Libere un controlador que viole esta regla en el mundo salvaje de los usuarios y seguramente aparecerá, resultando en un bloqueo de pantalla azul.

Otro tipo de error común de programación de controladores es que un desarrollador escriba el código con la suposición de que la memoria paginada o no paginada siempre estará disponible, es decir, no comprueba los valores devueltos para las asignaciones. Si el grupo se agota y el controlador recibe una dirección de búfer NULL, el controlador felizmente desreferencia el sistema en una pantalla azul. Aunque el agotamiento del grupo es un evento poco frecuente, no es algo que debería provocar una pantalla azul a un Administrador del sistema. Un error de memoria relacionado es una saturación o ejecución de búfer, donde un controlador lee o escribe fuera de un búfer que ha asignado.

El comprobador de controladores soluciona los problemas de IRQL reemplazando las llamadas a todas las funciones que manipulan los IRQLs de un controlador (por ejemplo KeRaiseIrql, KeAcquireSpinLock) con las funciones del kernel del comprobador correspondientes (VerifierKeRaiseIrql, VerifierKeAcquireSpinLock) en el momento en que se carga el controlador. Cada vez que el IRQL se genera desde DISPATCH_LEVEL o superior, el código comprobador llama a una función interna del Administrador de memoria, MmTrimAllPageableSystemMemory(), para forzar que todos los datos paginados no sean de memoria física. Por lo tanto, el instante en el que un controlador interrumpe la regla IRQL de no tener acceso a datos paginables o código desde DISPATCH_LEVEL o superior, el Administrador de memoria detectará el intento de acceder a una página no presente y producirá una pantalla azul. Esto permite a un desarrollador detectar rápidamente estos tipos de errores antes de que el controlador salga al mercado, ya que puede depurar el bloqueo y ver su controlador en la pila de errores.

El Comprobador de controladores realiza pruebas de uso de memoria con la aplicación de revisiones a la tabla de importación del controlador que se va a comprobar para que el controlador llame a las funciones de memoria del comprobador en lugar de a las versiones estándar del kernel. Por ejemplo, una llamada a ExAllocatePool se reemplaza por una llamada a VerifierAllocatePool. Hay dos técnicas que usa el Comprobador para ayudar a un desarrollador a encontrar rápidamente errores de memoria. La primera es que usa un grupo especial de memoria donde una página de protección (una página de protección es una página no válida) se coloca justo después del final del búfer. Además, la parte de la página en la que se asigna el búfer que precede al búfer se rellena con una firma. Las saturaciones que se encuentran dentro de una página más allá del final de un búfer se detectan inmediatamente, ya que producirán errores de página no válidos en la página de protección. El Comprobador detecta las subjecuciones que implican la modificación de los datos anteriores a un búfer cuando el controlador desasigna la memoria, ya que la firma habrá cambiado.

Los controladores que siempre esperan un grupo no vacío se engañarán para que generen bloqueos por parte del Comprobador con el uso de su "inyección de errores de memoria". Puede configurar el Comprobador para que produzca un error aleatorio en las asignaciones del grupo de controladores.

Hay algunos otros tipos de error que detecta el Comprobador de controladores, incluida la coherencia irP (paquete de solicitud de E/S) y la protección de solo lectura de las páginas de códigos del sistema y del controlador.

Si usted es un desarrollador de controladores de dispositivos, se estará haciendo un favor usted mismo, a su empresa y a la comunidad de NT realizando pruebas con el Comprobador. Tenga en cuenta que también debe probar los controladores NT 4.0 que son compatibles con Win2K tan pronto como tenga acceso al Comprobador de controladores (la mayoría de los desarrolladores lo obtendrán con el envío de MSDN de Win2K Beta 3 a finales de abril o mayo).

Para obtener más información, consulte Comprobador de controladores.

PRUEBAS Y2K CON BOOT.INI

Si comprueba con frecuencia el sitio web de Systems Internals, es probable que ya conozca el nuevo modificador de BOOT.INI de Win2K no documentado, /YEAR. No mencioné en el sitio web que el modificador también es compatible con NT 4.0 Service Pack 4. Este modificador le permite suplantar NT y todo el software de un sistema NT pensando que es un año diferente. Por ejemplo, /YEAR=2001 haría que el sistema pensara que era 2001 en lugar de 1999. Por lo tanto, el conmutador es ideal para probar problemas de Y2K en cualquier nivel de software, y la ventaja de usarlo en lugar de restablecer manualmente el reloj del BIOS (a través del applet Clock, por ejemplo) es que el cambio es temporal y solo está activo cuando se inicia en una instalación que tiene el modificador presente en su línea de BOOT.INI. Esto facilita la creación de una instalación Y2K especial simplemente tomando una línea de arranque existente desde el BOOT.INI, duplicándola y agregando el modificador /YEAR.

PRÓXIMAMENTE

Espere el siguiente boletín en unas semanas. La sugerencia interna que tendré para usted la próxima vez es acerca de los bloqueos por subproceso en cola, un nuevo tipo de bloqueo por subproceso que Windows 2000 usa para sus bloqueos por subprocesos globales. Estos son los bloqueos por subproceso globales que existen en Windows 2000:

  • KiDispatcherLock: bloqueo de base de datos del programador
  • KiContext-SwapLock: bloqueo de intercambio de hilo
  • MmPfnLock: bloqueo de base de datos de marco de página física
  • MmSystemSpaceLock: bloqueo del espacio de direcciones en modo kernel
  • CcMasterSpinLock: bloqueo global del Administrador de caché
  • CcVacbSpinLock: bloqueo de matriz de asignación del Administrador de caché

En lugar de usar bloqueos por subprocesos de kernel normales (KeAcquireSpinLock, KeReleaseSpinLock) para estos bloqueos globales como lo hizo NT 4.0, el kernel de Windows 2000 usa bloqueos por subprocesos en cola (KeAcquireQueuedSpinLock, KeReleaseQueuedSpinLock). Estos bloqueos tienen algunas propiedades interesantes que minimizan la actividad del bus en los SMP. La próxima vez le diré cómo se implementan los bloqueos por subproceso en cola.

Próximamente en Systems Internals estará Tokenmon, otra herramienta de supervisión. Tokenmon le mostrará información detallada sobre toda la actividad relacionada con tokens en el sistema, incluidos los inicios de sesión, los cierres de sesión, el uso de privilegios y la suplantación.


Gracias por leer el Boletín de Systems Internals.

Publicado el miércoles 14 de abril de 1999 7:16 p. m. por ottoh

[Archivo de boletines ^] [Volumen 1, Número 2 >]