• Администрация SafeZone приветствует вас на нашем форуме!
    Если вы больше не желаете видеть рекламу при просмотре тем и сообщений - то достаточно просто зарегистрироваться. Для зарегистрированных пользователей реклама не отображается.

Windows Параметр REG_BINARY

Кирилл

Команда форума
Администратор
Сообщения
13,027
Симпатии
5,639
#1
Параметр 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
И получаем нужное значение.

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

safer

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

Вложения

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

Кирилл

Команда форума
Администратор
Сообщения
13,027
Симпатии
5,639
#5
safer, вы можете ваш вопрос сформулировать поточнее?
На данный момент это похоже на мысли вслух
 

safer

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

Кирилл

Команда форума
Администратор
Сообщения
13,027
Симпатии
5,639
#7
Как ни странно,но на самом деле такой формат позволяет читать системе его гораздо быстрее,чем привычный глазу пользователя.
 

safer

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

Кирилл

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

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,413
Симпатии
5,278
#11
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,027
Симпатии
5,639
#12
Dragokas,ага,где то намесил.
Найду где сохранил исходники разберусь,похоже должно было быть две темы.
Статью поправлю.
 

safer

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

Вложения

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,413
Симпатии
5,278
#14