Windows Параметр REG_BINARY

Кирилл

Команда форума
Администратор
Сообщения
13,826
Реакции
6,168
Баллы
913
Параметр REG_BINARY

Из базы знаний Microsoft:
Необработанные двоичные данные.
Большинство сведений об аппаратных компонентах хранится в виде двоичных данных и выводится в редакторе реестра в шестнадцатеричном формате.
Очень много информации содержится именно в параметрах типа REG_BINARY.

Разберем.

Первое что нам нужно запомнить- параметр типа REG_BINARY содержит двоичные данные в шестнадцатиричном формате.

В этой теме я опубликовал таблицу символов шестнадцатиричной системы исчисления,она нам пригодится.

Двоичную таблицу публиковать не вижу смысла.
Так же в этой теме мы не рассматриваем принципы двоичного исчисления,для ознакомления приведу пару ссылок:

Рассмотрим содержимое такого REG_BINARY:

i_005.png


В поле Параметр данного окна отображается наименование редактируемого параметра, а в поле Значение с клавиатуры вводится нужное значение.

Тут надо учитывать что в центральной части поля Значение отображается редактируемый байт в шестнадцатиричном виде, а справа от него – уже читабельный вариант,символы появляются по мере ввода соответственно каждому введенному биту в центральной части.
В режиме редактирования двоичного параметра реализована возможность ввода информации как в двоичной, так и в шестнадцатеричной форме (поразрядно).
Нажатием кнопки OK параметру REG_BINARY присваивается введенное значение.

Видимые в центральной части 8 значений-это байты в шестнадцатиричном значении.
Как мы помним из курса по двоичным данным - один символ это один байт.
Один байт - это 8 бит.
8 бит= октет ,полный байт.



Давайте попробуем создать параметр REG_BINARY и вписать туда значение SafeZone .

Как я и говорил ранее нам понадобится таблица из этой темы
Пробуем ввести следующий код в центральной части :
Код:
53 61 66 65 5a 6f 6e 65
В правой части увидим SafeZone .
Обратите внимание что окончание строки тут не подписывается значением null 00,00
parametr.png

Если произвести экспорт в reg-файл,значение будет отображаться аналогично,но через запятые:

Код:
Windows Registry Editor Version 5.00


[HKEY_CLASSES_ROOT\razdel]
"Tect"=hex:53,61,66,65,5a,6f,6e,65,53,61,66,65,5a,6f,6e,65
Эксперимента ради можно перевести значение в двоичную форму-так как ее видит комп.
Воспользуемся калькулятором:
(вид-программист)
Код:
53     61     66      65
101011 110001 110110 110101
Это четыре буквы Safe.
Что бы вычислить ставим флажок на Hex а затем вводим код символа и жмем Bin
rf.png
И получаем нужное значение.

Вот и все.
 
Последнее редактирование:

machito

Android Unlok
Команда форума
Супер-Модератор
Сообщения
2,197
Реакции
2,071
Баллы
503
Интересная тема, спасибо Кирилл.
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,342
Реакции
5,965
Баллы
998
Для большего удобства этих преобразований можно использовать утилиту OTConvertIt. Вот для примера
hex to ansi.PNG
 

safer

Пользователь
Сообщения
4
Реакции
2
Баллы
43
Очень много информации содержится именно в параметрах типа REG_BINARY.
ну хоть бы намек на реальный пример такой информации.
есть книга, где автор \см файл\ много и подробно пишет о реестре и о reg bin. и тоже без хоть маленького примера.
а между тем, как показало мое небольшое исследование, рег бин может иметь просто колоссальный вес\объем\: я ставил RED BUTTON- редактор реестра. но не понравился и удалил. чистил реестр прогой RegScanner. конечно, сначала посмотрел что на удаление.
чем замечательна эта простенькая программа?-указывает вес значений ключей !
и вот увидел-вес некоторых рег бин =58 кб! причем, как обычно, значения часто повторяются в другом разделе. те уже 100 кб! и это для одного рег бин.
конечно, не все рег бин в программе так тяжелы и может не во всякой программе так.
теперь понятно необходимость чистки реестра после удаления. иначе реестр пухнет.
конечно, в нужных прогах такие рег бины не выкинешь.
однако что такое там содержится? ведь 58 кб\ я перенес в блокнот\ это около 40 страниц текста.
уберем половину на кодировку-все равно немало.
что это может быть? вся документация для пользователя открыта свободно. что еще нужно кодировать так много?
раскодировать вручную такие объемы немыслимо. впрочем-может и не надо.
 

Вложения

Последнее редактирование:

Кирилл

Команда форума
Администратор
Сообщения
13,826
Реакции
6,168
Баллы
913
safer, вы можете ваш вопрос сформулировать поточнее?
На данный момент это похоже на мысли вслух
 

safer

Пользователь
Сообщения
4
Реакции
2
Баллы
43
да - это мысли вслух. поделился тем, что накопал. мне кажется вес рег бин в 58 кб вряд ли кто из обычных юзеров ожидал. хотя об этом они просто не думают.
относительно уточнения вопроса: я уже написал-хоть бы небольшой реальный пример содержимого рег бин.
или общее объяснение-какого типа \ инструкция или типа ini-файла и тд\ это содержание бывает.
я понимаю-этот вопрос очень спец, узок. и он ничему и никому не нужен для пользы. у меня это чистый интерес.
 

Кирилл

Команда форума
Администратор
Сообщения
13,826
Реакции
6,168
Баллы
913
Как ни странно,но на самом деле такой формат позволяет читать системе его гораздо быстрее,чем привычный глазу пользователя.
 

safer

Пользователь
Сообщения
4
Реакции
2
Баллы
43
В начале моего поста я указал, что неплохо бы иметь пример реального раскодированного рег бин.
Или хотя типы текстов в рег бин: обычные тексты, программы и тд. не понятно-зачем кодировать текст, весом 58 кб. ведь в реестре по идее его создания должны быть очень краткие сведения о компе , прогах и тд, что мы и видим обычно.
Конечно, вряд ли обычному юзеру это надо - это мой личный интерес.
Я пытался работать с OTConvert утилитой для декодировки и начал с 58 кб текстом - не получилось пока.
Спасибо за наводку на HEX EDIT, попробую.
 
Последнее редактирование модератором:

Кирилл

Команда форума
Администратор
Сообщения
13,826
Реакции
6,168
Баллы
913
что неплохо бы иметь пример реального раскодированного рег бин.
Реальная декодировка и кодировка указаны в первом сообщении.
Так же следует учитывать тот факт,что декодировка может производиться как с лева направо,так и справа налево - в зависимости от типа банарника.
Так же данные примеры вовсе не означают того,что расшифрованные данные будут удобочитаемы и понятны пользователю.
Или вообще может быть другой принцип кодировки.
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,132
Реакции
5,907
Баллы
648
safer, что-то намешали всего в кучу. А реального вопроса нет.

Начнём с того, что чистка реестра не обсуждается в этой теме. Вы можете получить ответы, почитав эту тему: http://safezone.cc/threads/chistka-reestra.23231/
Там же вы узнаете, почему не нужно бояться большого объема файлов реестра.

Понятие "кодирование" имеет много значений в контексте обсуждаемой темы, поэтому не стоит всё смешивать.

Параметр типа REG_BINARY используется для многих целей. Но зачастую, для записи информации, в содержимом которой могут быть служебные символы, например символы с кодами 0x00 - 0x31.
И ещё когда нужно записать большой объём данных. В этом случае можно конечно задать резонный вопрос, почему не воспользоваться типом REG_SZ. Дело в том, что REG_SZ обычно пишут в формате юникод, поэтому он будет занимимать в 2 раза больше места. Но дело больше в том, что с бинарными данными в программе проще работать. Обычно это кусок структурированной информации, где по определённому смещению находится то или иное поле с данными.
Чтобы понять, как именно система (или программа, создавшая этот параметр) интерпретирует его, нужно обратится к спецификации на данный конкретный параметр (если таковая существует).

Вот к примеру,
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18 => SID
здесь дублируется в бинарном виде идентификатор безопасности пользователя. Никакого принципа кодирования нет. Просто строка записана в бинарном виде.

Из последнего, в чём я самостоятельно разбирался, например, политики IPSec:
HKLM\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local\ в этом из разделов есть параметр ipsecData.
По одному из смещений часть инфы кодируется примерно так:
Код:
                        '00,00,00,00,00,00,00,00 -> any IP
                        'xx,xx,xx,xx,ff,ff,ff,ff -> specified IP / subnet
                        '00,00,00,00,ff,ff,ff,ff + [0x6F] == 0 -> my IP
                        '00,00,00,00,ff,ff,ff,ff + [0x6F] == 0x81 -> DNS-servers
                        '00,00,00,00,ff,ff,ff,ff + [0x6F] == 0x82 -> WINS-servers
                        '00,00,00,00,ff,ff,ff,ff + [0x6F] == 0x83 -> DHCP-servers
                        '00,00,00,00,ff,ff,ff,ff + [0x6F] == 0x84 -> Gateway
                        '
                        '[0x4E] == 1 -> mirrored
                        '
                        '[0x66] -> port type
                        '[0x6A] -> port number (source)
                        '[0x6C] -> port number (destination)
и так далее... Каждый случай уникален.

Видимые в центральной части 8 значений-это биты.
Это неправда. Там указаны байты в 16-ричном виде. Сам же дальше пишешь, что:
Тут надо учитывать что в левой части поля Значение отображается номер редактируемого байта, а справа от него – восемь битов данного байта
при том что на картинке № байтов показаны 0, а во второй строке уже 8 и т.д. Эти значения также указаны в 16-чной СС.
Возможны еще 4 и 2 битные варианты.
Вообще непонятно, о чём речь.
 
Последнее редактирование:

Кирилл

Команда форума
Администратор
Сообщения
13,826
Реакции
6,168
Баллы
913
Dragokas,ага,где то намесил.
Найду где сохранил исходники разберусь,похоже должно было быть две темы.
Статью поправлю.
 

safer

Пользователь
Сообщения
4
Реакции
2
Баллы
43
вернусь к чтению регбин. для этого надо раскодировать текст регбин , что требует копирования в программу декодирования и тд.
много проще и удобно это делать с программой RegScanner. пример см файл снимка. тут все ясно.
основную работу делает реестр. это он показывает раскодировку в окне изменения двоичного параметра. RegScanner быстро ищет что надо.
конечно, в окне изменения двоичного параметра=искомый текст не все читаемо и окно мало. но английский текст вполне.
странно, но прямой поиск в реестре файла примера НЕ находит регбин этого файла\только REG_SZ\.
или я что-то не так делаю?
я не имею большой цели в чтении регбин-обычное любопытство. поэтому, видимо, мои методы дилетантны.
 

Вложения

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,132
Реакции
5,907
Баллы
648
Сверху Снизу