Типы данных реестра
Как уже говорилось ранее, в реестре хранится громадное количество информации, включающее профили всех пользователей, сведения об установленном программном обеспечении и типах документов, которые могут быть созданы каждой программой, информация о свойствах папок и значках приложений, а также установленном оборудовании и используемых портах.
Поскольку реестр Microsoft Windows представляет собой сложную реляционную базу данных, вся информация, которая может храниться в конечных информационных контейнерах этой базы (параметрах), должна быть строго классифицирована. Классификация хранящихся в параметрах значений производится по типу данных, представляющих это значение. Всего насчитывается 11 таких типов
Раздел и подраздел могут содержать 0, 1 или несколько параметров, параметр по умолчанию, а также 0 или несколько подразделов. Каждый параметр имеет имя, тип и значение.
Три части параметра реестра всегда располагаются в определенном порядке: Имя, Тип данных, значение (например: [RegistrySizeLimit] [REG_DWORD] [0x8000000]).
В таблице, которая будет приведена ниже, содержится список типов данных, определенных и используемых Windows на сегодняшний день.
Максимальная длина имени параметра:
- 16 383 символов для Windows Server 2003, Windows XP и Windows Vista
- 260 символов ANSI или 16 383 символа Юникод для Windows 2000
- 255 символов для Windows 95, Windows 98 и Windows Millennium Edition
Значения большого размера (больше 2048 байт) хранятся во внешних файлах, а в реестр заносится имя такого файла. Это способствует повышению эффективности использования реестра.
Максимальный размер параметра:
- Вся доступная память для Windows NT 4.0/Windows 2000/Windows XP/Windows Server 2003/Windows Vista
- 16 300 байт для Windows 95, Windows 98 и Windows Millennium Edition
Ниже приводится назначение этих параметров.
REG_BINARY
Необработанные двоичные данные. Большинство сведений об аппаратных компонентах хранится в виде двоичных данных и выводится в редакторе реестра в шестнадцатеричном формате.
REG_DWORD
Данные, представленные целым числом (4 байта, 32 бита). Многие параметры служб и драйверов устройств имеют этот тип и отображаются в двоичном, шестнадцатеричном или десятичном форматах. Эквивалентами типа DWORD являются DWORD_LITTLE_ENDIAN (самый младший байт хранится в памяти в первом числе) и REG_DWORD_BIG_ENDIAN (самый младший байт хранится в памяти в последнем числе).
REG_EXPAND_SZ
Расширяемая строка данных. Эта строка представляет собой текст, содержащий переменную, которая может быть заменена при вызове со стороны приложения.
REG_MULTI_SZ
Многострочное поле. Значения, которые фактически представляют собой списки текстовых строк в формате, удобном для восприятия человеком, обычно имеют именно этот тип данных. Записи разделяются пробелами, запятыми или другими символами.
REG_SZ
Текстовая строка в формате, удобном для восприятия человеком. Значениям, представляющим собой описания компонентов, обычно присваивается именно этот тип данных. Имеет фиксированную длину.
REG_LINK
Символическая ссылка в формате Юникод.
REG_FULL_RESOURCE_DESCRIPTOR
Последовательность вложенных массивов. Служит для хранения списка ресурсов, которые используются физическим устройством. Обнаруженные данные система сохраняет в разделе \HardwareDescription. В окне редактора реестра эти данные отображаются в виде двоичного параметра в шестнадцатеричном формате
REG_RESOURCE_LIST
Последовательность вложенных массивов. Служит для хранения списка ресурсов, которые используются драйвером устройства или управляемым им физическим устройством. Обнаруженные данные система сохраняет в разделе \ResourceMap. В окне редактора реестра эти данные отображаются в виде двоичного параметра в шестнадцатеричном формате
REG_RESOURCE_REQUIREMENTS_LIST
Последовательность вложенных массивов. Служит для хранения списка драйверов аппаратных ресурсов, которые могут быть использованы определенным драйвером устройства или управляемым им физическим устройством. Часть этого списка система записывает в раздел \ResourceMap. Данные определяются системой. В окне редактора реестра они отображаются в виде двоичного параметра в шестнадцатеричном формате
REG_QWORD
Данные, представленные в виде 64-разрядного целого. Начиная с Windows 2000, такие данные отображаются в окне редактора реестра в виде двоичного параметра
REG_NONE
Данные, не имеющие определенного типа. Такие данные записываются в реестр системой или приложением. В окне редактора реестра отображаются в виде двоичного параметра в шестнадцатеричном формате
Windows Параметр REG_MULTI_SZ
Все знают что такое параметры реестра.
Предлагаю начать более серьезное знакомство с ними.
REG_MULTI_SZ — Многострочное поле.
Двоичные значения,содержащие список строк кодированых в шестнадцатиричном формате.
Редактор реестра отображает данные уже в удобной для чтения форме,каждую строку с новой строки.
Строки разделяются символом null 0x00,параметр заканчивается двойным символом Null 00,00,00,00-таким образом в реестре обозначается конец записи текстовых строк в параметре,конец списка.
Просмотрев его значение в редакторе реестра мы можем увидеть многостроковые значения,разного регистра и даже языка.
Как правило о назначении параметра можно предполагать исходя из его месторасположения и содержимого.
На первый взгляд это вроде бы и все?
Но чем интересен синтаксис реестра-так это своей неординарностью и разнообразием.
Давайте попробуем произвести экспорт в reg-файл любого элемента реестра,имеющего в себе параметр REG_MULTI_SZ.
А затем откроем в любом текстовом редакторе.
Получим примерно такую абракадабру:
Тут уже становится непонятненько)))
Вот ,собственно это и разберем в деталях.
Итак,в reg-файлах параметр REG_MULTI_SZ нам виден как hex(7):
Это нам стало известно еще из этой темы.
Далее следует числовой код,который в случае чего можно интерпретировать скриптом например,или же самостоятельно.
Каждый знак ,который будет записан в реестр является комбинацией 4 чисел вида: **,**,
Например из нашего примера значение 30,04, эквивалентно букве а .
Причем значение 04, присутствует всегда у символов Кириллицы,а первые две цифры будут изменяться согласно коду буквы.
А вот пример прописной (большой) буквы Б : 11,04,
Тут ситуация аналогична.
Далее следуют восемь нолей: 00,00,00,00
Это завершение параметра.
То есть если строка одна-в конце всегда будет 00,00,00,00 ,а если это несколько строк -в конце каждой строки будет по две пары нолей: 00,00, но вот в последней строке параметра конечно же будет четыре пары ноликов: 00,00,00,00
Дело в том, что regedit (при сохранении reg-файла в Unicode) в параметрах типов REG_EXPAND_SZ и REG_MULTI_SZ к каждому байту добавляет лишний нулевой байт. Для REG_EXPAND_SZ нужды в доп. обработке не возникает, т.к. там нулевые байты недопустимы по определению и они просто все обрезаются, а в REG_MULTI_SZ нулевой байт — это перевод строки.
Где прячутся вирусы и как пользоваться командой msconfig в Windows
При заражении компьютера вирусы поступают таким образом, чтобы при загрузке операционной системы они тоже загружались, либо загружалась их необходимая часть. Для этого они вносят изменения в реестр Windows.
В зависимости от «продвинутости» создателя вируса, это может быть реализовано по-разному. Рассмотрим самые распространенные случаи:
1. В автозагрузке операционной системы
Проверить это можно с помощью команды msconfig, запущенной через меню Пуск — Выполнить
В столбце «Команда» не должно быть подозрительных элементов, например C:\Program Files\novirus.exe
Команда msconfig позволяет только отображать и отключать ненужные программы из автозагрузки, для полного удаления следов необходимо почистить соответствующие ветки реестра (посмотреть в столбце «Расположение»).
Как альтернативe команде msconfig можно использовать программу XPTweaker (скачайте с официального сайта).
В разделе «Система» перейти на закладку «Загрузка системы», прокрутить скроллом немного вниз до заголовка «Автозагрузка». Также просмотреть внимательно список загружаемых вместе с операционной системой приложений и при необходимости удалить ненужные. Программа удаляет информацию сразу и в реестре Windows.
Внимание! Для того, чтобы случайно не удалить важный системный процесс Windows — уточните предварительно у компьютерных гуру или найдите ответ через поисковую систему Яндекс или Гугл о неизвестных вам загружаемых приложений, например RTHDCPL.EXE
Данный способ загрузки вируса — самый элементарный. Он легко обнаруживается, и вирус удаляется. Так действовали вирусы 5−10-летней давности.
2. Вместо проводника
Это очень распространенный случай при заражении вирусами, особо часто он был замечен при установке пopнo-баннеров на операционную систему. Вирус в этом случае грузится вместо проводника Windows, заменив запись в реестре:
В ветке HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Параметр Shell (reg_sz) вместо значения «explorer.exe» заменяется вирусом на свой, например C:\WINDOWS\system32\h6d8dn.exe или подобную хрень.
В ветке HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Параметр Shell (reg_sz) вместо значения «explorer.exe» заменяется вирусом на свой, например C:\WINDOWS\system32\h6d8dn.exe или подобную хрень.
Исправить это с наименьшими потерями можно, загрузившись с загрузочного CD-ROM или USB, проверить систему с помощью утилиты от Доктора Веба — launcher.exe. Но только в том случае, если в базе вирусов Доктора Веба есть информация об этом вирусе.
Более действенный и быстрый способ — загрузившись с загрузочного диска запустить программу редактирования реестра с возможностью подключения к удаленному реестру. Для этого идеально подходит сборка ERD.
Нужно посмотреть запись в реестре по адресу HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, исправить «хрень» у записи параметра Shell (reg_sz) на «explorer.exe» и запомнить путь нахождения и имя файла вируса, чтобы удалить его вручную.
3. Вместе с userinit.exe или uihost.exe
В этом случае рабочий стол может отображаться и компьютер может вроде бы нормально работать, но могут быть заблокированы некоторые функции браузера по умолчанию или всех браузеров, невозможность отрыть сайты антивирусных программ и др.
Userinit.exe — программа, которая открывает Рабочий стол и активирует сетевые функции после запуска Windows. Находится он по адресу C:\WINDOWS\system32\userinit.exe. Размер оригинального файла составляет 26,0 КБ (26 624 байт), на диске: 28,0 КБ (28 672 байт).
Некоторые вирусы могут изменить запись в реестре у трех параметров (у всех или только некоторых) Userinit, UIHost и Shell, расположенных по адресу:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Оригинальные параметры записи в реестре должны быть следующими:
Вирус может прописать себя например так:
В данном примере файл gertinw.exe — это 100% вирус! Обязательно запомнить путь к файлу вируса и удалить его!
После удаления нужно заменить файлы userinit.exe, logonui.exe (находятся в C:\WINDOWS\system32\) и explorer.exe (находится в C:\WINDOWS\) на аналогичные файлы из дистрибутива виндовса (найдете поиском), т.к. остатки червя могут находиться в файлах ключей.
Где находятся вирусы
После нужно проверить файл hosts (открыть любым тестовым редактором) на наличие запретов на известные сайты антивирусных программ: C:\windows\system32\drivers\etc\hosts. Удалить все после строки 127.0.0.1 localhost
Также запрет на загрузку сайтов может быть прописан в реестре по следующим адресам:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet <номера 001 или 002>\Services\Tcpip\Parameters \PersistentRoutes
Удалить их содержимое полностью кроме строки «По умолчанию» с неприсвоенным значением.
Автор текста: Сергей «Остров»
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Знакомство с реестром Windows
Реестр Windows (Windows Registry) – это центральная база данных настроек и параметров во всех операционных системах семейства Windows (начиная с Windows 3.1). В нем хранится вся информация об аппаратных средствах, операционной системе и установленных в ней приложениях, а также пользовательские данные и настройки. По аналогии с человеческой анатомией я бы назвал реестр центральной нервной системой компьютера, ведь от настроек реестра напрямую зависит поведение системы в той или иной ситуации.
Реестр не является единым целым, а представляет из себя составную структуру, динамически формирующуюся из различных данных следующим образом:
- Сначала, при установке ОС, создаются файлы, хранящие данные о начальной конфигурации системы.
- Затем, в процессе загрузки и входа пользователя в систему формируется некий виртуальный объект Registry. Данные для формирования он берет частично из тех самых файлов, частично из информации, собранной при загрузке Windows.
Этот объект и является тем самым реестром, с которым взаимодействует операционная система и который видим мы.
Основные файлы, отвечающие за формирование реестра
- system
- software
- sam
- security
- default
- components
- bcd-template
Хранятся они в папке %SystemRoot%\System32\Config\ (обычно это C:\Windows\System32\Config\) и в зависимости от версии ОС их состав может несколько различаться.
Также файлы, отвечающие за пользовательские настройки, могут храниться в C:\Documents and Settings\%Username%\ (Ntuser.dat) и в C:\Documents and Settings\%Username%\Local Settings\Application Data\Microsoft\Windows\ (UsrClass.dat).
Еще есть резервные копии файлов реестра, созданные системой, в зависимости от ОС они хранятся в:
C:\Windows\repair — для XP и Server 2003;
C:\Windows\System32\config\RegBack — для Windows 7 \Server 2008 и более новых.
По умолчанию операционная система делает резервные копии этих файлов раз в 10 дней с помощью планировщика задач.
Взаимодействие реестра с операционной системой
• При запуске компьютера распознаватель аппаратных средств (hardware recognizer) помещает в реестр список обнаруженных им устройств. Обычно распознавание аппаратных средств осуществляется программой Ntdetect.com и ядром операционной системы Ntoskrnl.exe
• При старте системы ядро системы извлекает из реестра сведения о загружаемых драйверах устройств и порядке их загрузки. Кроме того, программа Ntoskrnl.exe передает в реестр информацию о себе (напр. номер версии).
• В процессе загрузки системы драйверы устройств обмениваются с реестром параметрами загрузки и конфигурационными данными. Драйвер устройства сообщает об используемых им системных ресурсах, включая аппаратные прерывания (IRQ) и каналы доступа к памяти (DMA), чтобы система могла включить эти данные в реестр. Кстати, реестр позволяет создавать несколько аппаратных профилей. Аппаратный профиль (hardware profile) представляет собой набор инструкций, с помощью которого можно указать операционной системе, драйверы каких устройств должны загружаться при запуске компьютера. По умолчанию системой создается стандартный аппаратный профиль, который содержит информацию обо всех аппаратных средствах, обнаруженных на компьютере.
• При входе пользователя в систему загружаются пользовательские профили (user profiles). Вся информация, относящаяся к конкретному имени пользователя и связанными с ним правами хранится в реестре. Пользовательский профиль определяет индивидуальные параметры настройки системы (разрешение дисплея, параметры сетевых соединений, подключенные устройства и многое другое). Информация о пользовательских профилях также хранится в реестре.
• При установке приложений. Каждый раз при запуске программы установки происходит добавление в реестр новых конфигурационных данных. Начиная свою работу, все программы установки должны считывать информацию из реестра, чтобы определить, присутствуют ли в системе необходимые им компоненты. Кроме того, системный реестр позволяет приложениям совместно использовать конфигурационную информацию, что предоставляет им больше возможностей для взаимодействия. Приложение должно активно и правильно использовать реестр, а также иметь возможность корректного удаления, не затрагивая при этом компонентов, которые могут использоваться другими программами (библиотеки, программные модули и т. п.). Эта информация тоже хранится в реестре.
• При администрировании системы. Когда пользователь вносит изменения в конфигурацию системы с помощью средств администрирования системы (напр. утилиты Панели управления или оснастки MMC), все изменения сразу отражаются в системном реестре. По сути средства администрирования представляют собой наиболее удобные и безопасные средства модификации реестра. Кстати, к средствам администрирования можно отнести и редактор реестра (regedit.exe), ведь все изменения в систему можно вносить непосредственно правкой реестра.
Структура реестра
Реестр имеет древовидную структуру и состоит из 5 основных разделов, их еще называют ветвями реестра (Registry hives):
HKEY_LOCAL_MACHINE (HKLM) — самый большой раздел реестра. В нем сосредоточены все основные настройки операционной системы, а также аппаратного и программного обеспечения компьютера. Информация, содержащаяся в этом разделе, применяется ко всем пользователям, регистрирующимся в системе.
HKEY_ CLASSES_ ROOT (HKCR) — содержит ассоциации между приложениями и типами файлов (по расширениям файлов). Кроме того, в этом разделе находится информация о зарегистрированных типах файлов и объектах COM и ActiveX. Кроме HKEY_ CLASSES_ ROOT эти сведения хранятся также в разделах HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER. Раздел HKEY_LOCAL_MACHINE\Software\Classes содержит параметры по умолчанию, которые относятся ко всем пользователям локального компьютера. Параметры, содержащиеся в разделе HKEY_CURRENT_USER\Software\Classes, переопределяют принятые по умолчанию и относятся только к текущему пользователю. Раздел HKEY_CLASSES_ROOT включает в себя данные из обоих источников.
HKEY_USERS( HKU) — содержит настройки среды для каждого из загруженных пользовательских профилей, а также для профиля по умолчанию. В HKEY_USERS находится вложенный раздел \Default, а также другие подразделы, определяемые идентификатором безопасности (Security ID, SID) каждого пользователя
HKEY_CURRENT USER (HKCU) — cодержит настройки среды для пользователя, на данный момент зарегистрировавшегося в системе (переменные окружения, настройки рабочего стола, параметры сети, приложений и подключенных устройств).
Этот раздел дублирует информацию в HKEY_USERS\user SID, где user SID — идентификатор безопасности пользователя, зарегистрировавшегося в системе на текущий момент (узнать SID текущего пользователя можно, набрав в командной строке whoami /user) .
HKEY_CURRENT_ CONFIG (HKCC) — cодержит настройки для текущего аппаратного профиля. Текущий аппаратный профиль включает в себя наборы изменений, внесенных в стандартную конфигурацию устройств, заданную в подразделах Software и System корневого раздела HKEY LOCAL_MACHINE. В HKEY_CURRENT_CONFIG отражаются только изменения. Кроме того, информация этого раздела находится в HKEY_LOCAL_MACHINE\System \CurrentControlSet\HardwareProfiles\Current
Данные в реестре хранятся в виде параметров, расположенных в ключах реестра. Каждый параметр характеризуется именем, типом данных и значением.
Основные типы данных, применяемые в реестре
REG_DWORD — 32-х разрядное число. Этот тип данных используют многие параметры драйверов устройств и сервисов. Редакторы реестра могут отображать эти данные в двоичном, шестнадцатеричном и десятичном формате
REG_SZ — Текстовая строка в формате, удобном для восприятия человеком. Значениям, представляющим собой описания компонентов, обычно присваивается именно этот тип данных
REG_EXPAND_SZ — Расширяемая строка данных. Эта строка представляет собой текст, содержащий переменную, которая может быть заменена при вызове со стороны приложения, например, используется для записи переменных окружения
REGJMULTI_SZ — Многострочное поле. Значения, которые фактически представляют собой списки текстовых строк в формате, удобном для восприятия человеком, обычно имеют этот тип данных. Строки разделены символом NULL
REG_BINARY — Двоичные данные. Большинство аппаратных компонентов используют информацию, которая хранится в виде двоичных данных. Редакторы реестра отображают эту информацию в шестнадцатеричном формате
REG_RESOURCE_LIST — Список аппаратных ресурсов. Применяется только в ветви HKEY_LOCAL_MACHINE\HARDWARE
Также иногда можно встретить такие типы данных реестра:
REG_RESOUECE_ REQUIREMENTS_LIST — Список необходимых аппаратных ресурсов. Применяется только в ветви HKEY_LOCAL_MACHINE\HARDWARE
REG_FULL_RESOURCE_ DESCRIPTOR — Дескриптор (описатель) аппаратного ресурса. Применяется только в ветви HKEY_LOCAL_MACHINE\HARDWARE
REG_LINK — Символическая ссылка Unicode. Этот тип данных интересен тем, что позволяет одному элементу реестра ссылаться на другой ключ или параметр.
REG_QWORD — 64-х разрядное число.
REG_DWORD_ LITTLE_ENDIAN — 32-разрядное число в формате «остроконечников» (little-endian), эквивалент REG_DWORD
REG_DWORD_BIG_ ENDIAN — 32-разрядное число в формате «тупоконечников» (big-endian)
REG_QWORD_LITTLE_ ENDIAN — 64-разрядное число в формате «остроконечников». Эквивалент REG_QWORD
REG_NONE — Параметр не имеет определенного типа данных