![]() | ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
Отсюда можно написать письмо (прямо с сайта), или пошлите сообщение по icq (так быстрее). |
Справочник по внутренним структурам файла реестра НТ | ||
Со времени написания заметок о внутренней структуре реестра НТ прошло уже достаточно времени. Появились новые блоки, распознаны неизвестные ранее элементы структур. Не буду пересказывать содержание предыдущих статей, только напомню несколько моментов. 1. Все адреса (ссылки между блоками) в файле начинаются от первого сегмента данных, т.е. для нахождения блока в файле к адресу надо прибавить 1000h (размер заголовка файла, после которого сразу начинается первый сегмент данных); 2. Все сегменты и блоки следуют друг за другом вплотную без промежутков. 3. Блок с отрицательным размером используется (реальный размер - абсолютное значение), с положительным размером - свободный; 4. Пустая ссылка (null) равна -1 (dword 0FFFFFFFFh); 5. Корневой ключ не должен иметь ссылку на родителя. |
Формат файла реестра | ||||
Заголовок | 1-й сегмент | 2-й сегмент | ... | N-й сегмент |
Формат сегмента данных | ||||
Заголовок | 1-й блок | 2-й блок | ... | N-й блок |
Заголовок файла реестра | |||||||||||
0000h | dword | 66676572h ( regf ) - сигнатура | |||||||||
0004h | dword | номер открытой и закрытой транзакции; равны, если транзакции завершены | |||||||||
0008h | dword | ||||||||||
000Ch | qword | момент начала транзакции; 0 при завершенной транзакции | |||||||||
0014h | dword | неизвестно; должно быть 1 | |||||||||
0018h | dword | версия файла | |||||||||
001Ch | dword | неизвестно; должно быть 0 (по некоторым данным - подверсия) | |||||||||
0020h | dword | неизвестно; должно быть 1 | |||||||||
0024h | dword | адрес корневого ключа | |||||||||
0028h | dword | размер области данных | |||||||||
002Ch | dword | неизвестно; должно быть между 1 и 8 | |||||||||
0030h | 460 bytes | не используется; может содержать путь к файлу реестра | |||||||||
01CCh | dword | контрольная сумма заголовка | |||||||||
0200h | 3584 bytes | не используется; выравнивание до границы 4К | |||||||||
Заголовок сегмента данных | |||||||||||
00h | dword | 6E696268h ( hbin ) - сигнатура | |||||||||
04h | dword | собственный адрес | |||||||||
08h | dword | размер сегмента | |||||||||
0Ch | dword | неизвестно; должно быть 0 | |||||||||
10h | dword | неизвестно; должно быть 0 | |||||||||
14h | qword | время начала изменения; похоже используется в транзакциях; должно быть 0 | |||||||||
1Ch | dword | размер сегмента (резервная копия) | |||||||||
Блок ключа | |||||||||||
00h | dword | размер блока | |||||||||
04h | word | 6B6Eh ( nk ) - сигнатура | |||||||||
06h | word | флаг | |||||||||
08h | qword | время создания | |||||||||
10h | dword | не известно | |||||||||
14h | dword | указатель на родителя | |||||||||
18h | dword | количество потомков | |||||||||
1Ch | dword | неизвестно | |||||||||
20h | dword | указатель на индекс по потомкам | |||||||||
24h | dword | неизвестно | |||||||||
28h | dword | количество параметров | |||||||||
2Ch | dword | указатель на индекс по параметрам | |||||||||
30h | dword | указатель на блок защиты | |||||||||
34h | dword | указатель на имя класса | |||||||||
38h | dword | неизвестно | |||||||||
3Ch | dword | неизвестно | |||||||||
40h | dword | неизвестно | |||||||||
44h | dword | неизвестно | |||||||||
48h | dword | неизвестно | |||||||||
4Ch | word | размер имени ключа | |||||||||
4Eh | word | размер имени класса | |||||||||
50h | имя ключа | ||||||||||
Блок параметра | |||||||||||
00h | dword | размер блока | |||||||||
04h | word | 6B76h ( vk ) - сигнатура | |||||||||
06h | word | размер имени параметра | |||||||||
08h | dword | размер значения параметра | |||||||||
0Ch | dword | значение параметра, указатель на блок значения параметра или указатель на корневой блок индеса по фрагментам значения параметра | |||||||||
10h | dword | тип параметра | |||||||||
14h | word | неизвестно | |||||||||
16h | word | выравнивание | |||||||||
18h | имя параметра | ||||||||||
Блок защиты | |||||||||||
00h | dword | размер блока | |||||||||
04h | word | 6B73h ( sk ) - сигнатура | |||||||||
06h | word | неизвестно | |||||||||
08h | dword | указатели на предыдущий и на следующий блоки защиты; блоки защиты образуют, таким образом, своеобразное кольцо | |||||||||
0Ch | dword | ||||||||||
10h | dword | количество ключей, использующих этот блок | |||||||||
14h | dword | размер данных в блоке | |||||||||
18h | данные - SecurityDescriptor, ACL, ACE ... | ||||||||||
Блок индекса по потомкам | |||||||||||
00h | dword | размер блока | |||||||||
04h | word | 666Ch ( lf ) или 686Ch ( lh ) - сигнатура | |||||||||
06h | word | количество записей в блоке | |||||||||
08h |
| ||||||||||
Блок индекса по потомкам с большим количеством элементов | |||||||||||
00h | dword | размер блока | |||||||||
04h | word | 696Ch ( li ) - сигнатура | |||||||||
06h | word | количество записей в блоке | |||||||||
08h | N адресов ключей (dword) | ||||||||||
Корневой блок индекса по потомкам с большим количеством элементов | |||||||||||
00h | dword | размер блока | |||||||||
04h | word | 6972h ( ri ) - сигнатура | |||||||||
06h | word | количество записей в блоке | |||||||||
08h | N адресов индексов типа li, lh и lf (dword) | ||||||||||
Корневой блок индеса по фрагментам значения параметра | |||||||||||
00h | dword | размер блока | |||||||||
04h | word | 6264h ( db ) - сигнатура | |||||||||
06h | word | количество записей в индексе по фрагментам значения параметра | |||||||||
08h | dword | адрес индекса по фрагментам значения параметра | |||||||||
Нетипизированные блоки | |||||||||||
Блок имени класса и блок значения параметра | |||||||||||
00h | dword | размер блока | |||||||||
04h | имя класса / значение параметра | ||||||||||
Блок индекса по параметрам и блок индеса по фрагментам значения параметра | |||||||||||
00h | dword | размер блока | |||||||||
04h | N адресов параметров / значений (dword) |
Paul Lee
2004.01.14 00:59