lunes, 28 de mayo de 2007

Notas para un mejor uso del Registro de Windows

ZorphDark [blackhat4all@gmail.com]

Todo sistema operativo almacena su configuración en una zona reservada. Microsoft Windows ofrece, entre sus aplicaciones de sistema, una utilidad dedicada al mantenimiento de su propio registro de configuraciones. Bajo el nombre de "Editor del Registro", permite acceder a los parámetros de inicialización, a los perfiles de cada usuario y a la base de datos del hardware y el software instalado en el sistema.

Esta utilidad se encuentra ubicada en %systemroot%\regedit.exe y visualiza en ramas jerárquicas la estructura del registro de Windows. Se encuentra dividido en secciones lógicas -o claves-, que son nombradas según las definiciones que usa la API de Windows para referirse a ellas. Todas comienzan con HKEY, pueden contener a su vez subclaves -cuyos nombres comienzan con el de la clave padre- y son capaces de almacenar los siguientes tipos de valores:

  • REG_SZ (cadena de texto de longitud fija)
  • REG_EXPAND_SZ (cadena de texto de longitud variable)
  • MREG_MULTI_SZ (cadena de texto múltiple, cuyos valores están delimitados por un separador)
  • REG_DWORD (datos representados por un número de 4 bytes de longitud)
  • REG_BINARY (datos binarios)
  • REG_FULL_RESOURCE_DESCRIPTOR (serie de tablas anidadas, usadas para almacenar recursos)

El registro se encuentra dividido en 5 claves predefinidas:

  • HKEY_CLASSES_ROOT - Abreviada como HKCR, almacena la información correspondiente a la asociación de los programas con diferentes formatos de archivos y objetos OLE. En Windows 2000, XP, 2003 y Vista, esta clave hace referencia al contenido de HKCU\Software\Classes y HKLM\Software\Classes, priorizando los datos obtenidos de HKCU. Su contenido se guarda en %UserProfile%\Local Settings\Application Data\Microsoft\Windows\usrclass.dat en versiones basadas en NT.
  • HKEY_CURRENT_USER - Abreviada como HKCU, almacena la configuración del usuario que ha iniciado la sesión. Esta clave hace referencia a la respectiva subclave de HKU. Sus valores se encuentran almacenados en %UserProfile%\ntuser.dat para poder permitir perfiles móviles (Windows 9x utiliza el archivo C:\Windows\user.dat).
  • HKEY_LOCAL_MACHINE - Abreviada como HKLM, almacena la configuración general del sistema operativo, con efecto sobre todos sus usuarios. Las subclaves HKLM\Hardware y HKLM\System (%SystemRoot%\System32\Config\system en versiones NT y C:\Windows\system.dat en Windows 9x) guardan un registro de todos los dispositivos instalados y HKLM\Software (%SystemRoot%\System32\Config\software) mantiene registrada la configuración de todos los programas que acceden el registro. Por otra parte, HKLM\SAM (%SystemRoot%\System32\Config\sam) y HKLM\Security (%SystemRoot%\System32\Config\security) ocultan los parámetros de acceso a las cuentas de usuario, además de otros datos críticos.
  • HKEY_USERS - Abreviada como HKU, contiene las subclaves correspondientes a cada uno de los usuarios registrados del sistema. Las opciones de usuario por defecto se almacenan en %SystemRoot%\System32\Config\default y su perfil en la subcarpeta systemprofile.
  • HKEY_CURRENT_CONFIG - Abreviada como HKCC, se diferencia de las demás claves predefinidas en que ésta no es almacenada permanentemente. HKCC acumula datos en tiempo de ejecución sobre el sistema operativo, regenerando su contenido cuando se carga Windows.

De esta forma, una clave podría nombrarse de la siguiente manera:
HKEY_CURRENT_USER\Software\Proveedor\Programa\Versión\Config

Oficialmente, además del Editor de Registro, Microsoft ofrece la Herramienta de registro de consola para Windows, que puede ser ejecutada desde la línea de comandos, a través del comando REG. Contiene un conjunto de parámetros que devuelven luego de cada operación un valor booleano (0 ó 1). Pueden ser llamados de la forma: REG operación [parámetros]. Para obtener una lista de los parámetros y sus detalles, puede escribir reg en la línea de comandos o consultar su documentación.

Además, mediante los ficheros de entradas del registro, dotados de la extensión REG, se puede introducir información en el registro con el consentimiento previo de los usuarios (a partir de Windows 98). Tanto ejecutándolo en el Explorador de Windows como enviándolo con el parámetro /s de regedit.exe o import de reg.exe, puede anexar su información en cualquier clave. Por esta vía se puede automatizar el proceso, creando un archivo por lotes de MS-DOS con las instrucciones necesarias.

Aquellos lenguajes de programación que acceden directamente a la API de Windows mediante la biblioteca advapi32.dll, pueden editar las claves del registro, mediante las funciones:

RegConnectRegistry
RegCreateKey
RegCreateKeyEx
RegDeleteKey
RegOpenKey
RegOpenKeyEx
RegLoadKey
RegSaveKey
RegReplaceKey
RegRestoreKey
RegEnumKey
RegEnumKeyEx
RegFlushKey
RegCloseKey
RegUnLoadKey
RegSetKeySecurity
RegGetKeySecurity
RegQueryInfoKey
RegQueryValue
RegQueryValueEx
RegQueryMultipleValues
RegSetValue
RegSetValueEx
RegDeleteValue
RegEnumValue
RegNotifyChangeKeyValue

Un buen programa realizado en .NET, Perl, VBScript -por poner algunos ejemplos- pueden lograr mucho más que un simple archivo BAT.

En cuanto al mantenimiento, existen diversos programas que permiten escanear el registro en busca de claves duplicadas, inválidas o en desuso. TuneUp RegistryCleaner, TuneUp RegistryDefrag y RegCleaner realizan dicho trabajo a la perfección. Pero no es recomendable utilizar otros programas diferentes a Microsoft Regedit para agregar, editar o eliminar información del registro, ya que como Windows se encuentra constantemente chequeando su registro en busca de información, cualquier error o pérdida en su estructura puede ocasionar graves daños en su integridad. Por ello es necesario guardar la información valiosa en discos o particiones que no estén relacionados directamente con el núcleo del sistema. En los accesorios de la mayor parte de las versiones de Windows hay una utilidad que permite archivar copias de seguridad en dispositivos especializados o en medios de almacenamiento convencionales. Allí también se encuentra un asistente de restauración que permite recuperar la configuración válida de una fecha determinada donde Windows generó, automáticamente, una copia de seguridad de su registro y otros archivos críticos del sistema operativo.

Antes de hacer cualquier cambio en el registro se debe exportar la clave seleccionada a través del menú Archivo»Exportar en el Editor de Registro o con el comando REG EXPORT de la Herramienta de registro de consola. Siempre se debe tener la seguridad de qué se va a editar y cómo, para no alterar la configuración innecesariamente. De la misma forma, antes de ejecutar cualquier archivo de entradas del registro (*.reg), debemos abrirlo en un editor de texto para asegurarnos de que no va a causar desperfecto alguno.

Esta falta de seguridad en Windows -aunque ha sido solventada en un porciento considerable en la familia NT- se debe a la centralización del registro. La ventaja de tener toda la configuración en el disco del sistema da al traste con cualquier falla y, además, reduce la portabilidad de la mayoría de las aplicaciones instaladas en el ordenador. Hay otros sistemas operativos, como Mac OS X, que almacenan las informaciones de los programas que usan los diferentes usuarios en Library Folders, por lo que cualquier error no afectaría la totalidad del sistema.

Sólo quedaría razonar si es necesario o no acceder directamente a la base de datos del registro de Windows. Los usuarios avanzados podrán discutir sobre su fragmentación a largo plazo, las "claves basura", el ineficiente mantenimiento automático y otras desventajas que podrían tener lugar si no intervenimos por nuestra cuenta. Pero a los usuarios comunes esto no les interesa... ni siquiera les incomoda, por lo que no es recomendable que se dediquen ni siquiera a observar contenidos tan delicados. Primero debemos acceder -y estudiar- la documentación necesaria para luego sentirnos un poco más seguros de que no vamos a arruinar absolutamente nada.

Para saber más...



Artículos relacionados


No hay comentarios: