14 de abril de 1999: en este problema:

  1. NOVEDADES DE SYSTEMS INTERNALS

    • VolumeID para Windows 9x
    • EFSDump
    • ListDLLs para Alpha de Alpha
    • "Dentro del proceso de arranque, parte 2"
    • Mi artículo de la Windows NT Magazine
    • No Credit Where its Due
    • Cosas no tan nuevas
  2. NOTICIAS INTERNAS

    • Comprobador de controladores Win2K
    • Pruebas Y2K con Boot.ini
  3. LO QUE VIENE

    • Bloqueos por giros en cola en Win2K
    • Tokenmon

PATROCINADOR: SOFTWARE DE HORARIOS DE VERANO

El Boletín de systems internals está patrocinioado por Newsnals Software, en la Web en http://www.winternals.com. Winternals Software es el desarrollador y proveedor líder de herramientas de sistemas avanzados para Windows NT/2K. Los productos de Software de Deserción incluyen FAT32 para Windows NT 4.0, ERD Commander (funcionalidad de disco de arranque para Windows NT) y NTRecover.

Hola a todos:

Le damos la bienvenida a la primera entrega del Boletín de sistemas internos. Me complace decir que el boletín ya ha adquirido 1000 suscriptores desde su anuncio hace poco más de una semana.

Mi objetivo en el boletín es proporcionar información oportuna sobre las nuevas utilidades y artículos que aparecen en Systems Internals, además de proporcionar información detallada sobre los elementos internos de Windows que no tienen un foro adecuado en el sitio web de Systems Internals. Si tiene comentarios o sugerencias sobre el boletín, no dude en pasarlos a mark@... Además, reenvía el boletín a cualquier persona que sepa que pueda estar interesado en él. Al final del boletín se proporcionan instrucciones sobre cómo suscribirse, cancelar la suscripción o modificar su suscripción.

Gracias

-Mark

NOVEDADES DE SYSTEMS INTERNALS

VOLUMEID PARA WINDOWS 9X

Aunque Windows NT y Windows 9x permiten cambiar la etiqueta en una unidad lógica o disquete mediante el comando "label", no proporcionan ningún medio para que pueda cambiar los IDs de volumen que 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 porte a Windows 9x. Este applet le permite cambiar los IDs de volumen de las unidades de disco duro y los disquetes por lo que quiera.

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

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

EFSDUMP

Windows 2000 será la continuación de la tecnología de cifrado de archivos integrada de Microsoft, la 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 denominado EFSDump que le permite ver fácilmente esta información para los archivos cifrados en el sistema.

Mientras estoy en el tema de las API de EFS, hay un número de nuevas API que no se han documentado a partir de msdn de abril, algo bastante alarmante en esta fase tardía del ciclo de lanzamiento de Windows 2000. En concreto, OpenEncryptedFileRaw, ReadFileEncryptedRaw, WriteFileEncryptedRaw y CloseEncryptedFileRaw (todos exportados por el ADVAPI32.DLL de Win2K) no están documentados actualmente. El uso de estas API es necesario para cualquier aplicación que quiera hacer una copia de seguridad de los archivos cifrados, lo que significa que Microsoft solo pasa información sobre ellas a asociados seleccionados, o bien las compañías de software de copia de seguridad tendrán que buscar sus productos por la puerta 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 usa activamente las API.

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

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

LISTDLLS PARA ALPHA DE 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 permite ver información de DLL para ejecutar procesos. La herramienta My HandleEx le 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 gui por lo que no siempre es conveniente (por ejemplo, no se puede ejecutar dentro de un archivo por lotes).

¿Tiene curiosidad sobre la proporción de descargas de la versión x86 de la utilidad Systems Internals típica con su versión Alfa correspondiente? Es aproximadamente 20:1, que realiza un seguimiento de cerca las estimaciones del sector de la base de usuarios de Alpha NT instalada como que es el 5 % del mercado nt total.

Puede descargar ListDLLs y otros puertos Alfa, incluido 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 Windows web de NT Magazine. Puede encontrar un vínculo a él, así como a la parte 1 y a columnas anteriores de "NT Internals", en la página Publicaciones de Systems Internals: http://www.sysinternals.com/publ.htm.

MI ARTÍCULO DE ABRIL DE WINDOWS NT MAGAZINE

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

NO CREDIT WHERE ITS DUE

En una nota relacionada, es posible que haya oído hablar del recientemente publicado D.H. Brown (una empresa de analistas) sobre la funcionalidad de Linux como sistema operativo empresarial. Resulta que el autor del informe "tomó prestada" en gran medida un correo electrónico que alguien publicó públicamente 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) en las que se describe Linux y varios procesadores (el informe no está disponible públicamente; debe comprarlo por una suma considerable) y, a continuación, leer mi correo electrónico en Deja News, verá un paralelo directo, hasta pequeños detalles.

COSAS NO TAN NUEVAS

Estoy usando esta sección del boletín para presentar cambios recientes en el sitio de Systems Internals que es posible que no conozca 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 lanzamos Filemon v4.1. Esta versión de Filemon es capaz de supervisar la actividad de canalización con nombre y ranura de correo en Windows NT/2K. La mejora del código necesario para admitir esto era relativamente secundaria, ya que las canalizaciones con nombre y los mailslots se implementan como controladores del sistema de archivos. Lo difícil (tedioso) era averiguar las E/STU privadas (comandos de control de E/S) que estos sistemas de archivos especiales admiten para que Filemon pueda mostrarlas. Puede descargar Filemon (que funciona en Windows NT/2K y Windows 9x) enhttp://www.sysinternals.com/filemon.htm.

Si desea obtener más información sobre cómo funciona Filemon internamente, vea mi columna "NT Internals" de febrero de Windows NT Magazine, titulada "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 DE CONTROLADORES DE WINDOWS 2000

Windows 2000 Beta 3 presenta una ayuda muy eficaz para el desarrollo de controladores de dispositivos denominada Comprobador de controladores. Esta herramienta funciona con código en el kernel para obtener el control del controlador y ejercerlo para la adhesión a las reglas en modo kernel de una manera que antes no era posible. Los controladores de dispositivos defectuosos son, con diferencia, la contribución más importante a la reputación entre muchas personas que NT es un sistema operativo inestable y esta herramienta está destinada a reparar esa reputación al ayudar a los escritores de controladores a encontrar sus errores antes que los usuarios.

Varios tipos de problemas sutiles pueden hacerlo a través de pruebas de controladores ocasionales (el tipo más común de pruebas realizadas con restricciones de tiempo de comercialización estrictas) e incluso pasar por pruebas de esfuerzo graves. Un tipo de problema común del controlador es un controlador que accede a la memoria paginada en "IRQL elevado" (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 no autorizado pasará desapercibido. Libere un controlador que infrinja esta regla en el mundo natural de los usuarios y su límite para mostrarse, lo que produce 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 desreferencia rápidamente el sistema en una pantalla azul. Aunque el agotamiento del grupo es una rara aparición, no es algo que deba dar una pantalla azul a un administrador del sistema. Un error de memoria relacionado es una saturación o subejeje del 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 IRQL en un controlador (por ejemplo, , ) por las funciones de kernel del comprobador correspondientes ( , ) en el momento en que se carga el KeRaiseIrqlKeAcquireSpinLockVerifierKeRaiseIrqlVerifierKeAcquireSpinLock controlador. Cada vez que el IRQL se eleva a o superior, el código comprobador llama a una función interna del Administrador de memoria, , para forzar que todos los datos paginados queden fuera DISPATCH_LEVELMmTrimAllPageableSystemMemory() de la memoria física. Por lo tanto, en el momento en que un controlador interrumpe la regla irQL de no acceder a datos paginables o código desde o superior, el Administrador de memoria detectará el intento de acceder a una página no presente y lanzará una pantalla DISPATCH_LEVEL azul. Esto permite a un desarrollador detectar rápidamente estos tipos de errores antes de que el controlador salga de la puerta, ya que puede depurar el bloqueo y ver a su controlador sentado 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 el comprobador usa 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 darán lugar a errores de página no deseados en la página de protección. El comprobador detecta las saturaciones 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 el comprobador genere bloqueos con el uso de su "inyección de errores de memoria". Puede configurar el comprobador para que no se puedan realizar aleatoriamente las asignaciones de grupo de un controlador.

Hay una serie de otros tipos de error que comprueba el comprobador de controladores, incluida la coherencia de 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 es un desarrollador de controladores de dispositivos, le hará un favor a usted mismo, a su empresa y a la comunidad de NT mediante pruebas con verifier. Tenga en cuenta que también debe probar los controladores NT 4.0 que son compatibles con Win2K en cuanto tenga acceso al comprobador de controladores (la mayoría de los desarrolladores lo recibirán con el envío de MSDN de Win2K Beta 3 a finales de abril o mayo).

Puede obtener más información sobre el comprobador de controladores en https://docs.microsoft.com/windows-hardware/drivers/devtest/driver-verifier

PRUEBAS Y2K CON BOOT.INI

Si consulta con frecuencia el sitio web de Systems Internals, probablemente ya conozca el nuevo modificador de BOOT.INI 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 suplantación de NT y todo el software de un sistema NT para pensar 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 bios (a través del applet Reloj, por ejemplo) es que el cambio es temporal y solo activo al arrancar en una instalación que tiene el conmutador presente en su línea BOOT.INI. Esto facilita la creación de una instalación especial de Y2K simplemente tomando una línea de arranque existente de la BOOT.INI, duplicando y agregando el modificador /YEAR.

¿QUÉ VA A LLEGAR?

Espere el siguiente boletín en unas semanas. La sugerencia interna que voy a tener la próxima vez es sobre los bloqueos por giro en cola, un nuevo tipo de bloqueo por giro que Windows 2000 usa para sus bloqueos por número globales. Estos son los bloqueos por número globales que existen en Windows 2000:

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

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

Próximamente en Systems Internals es Tokenmon, otra herramienta de supervisión. Tokenmon 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 información interna de sistemas.

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

[Archivo de boletín ^][Volumen 1, número 2 ]

[Archivo de boletín ^][Volumen 1, número 2 ]

Volumen 1 del boletín de información interna del sistema, número 1

http://www.sysinternals.com