Windows Параметр REG_BINARY

Тема в разделе "FAQ по работе с реестром", создана пользователем Kиpилл, 18 авг 2013.

  1. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.224
    Симпатии:
    4.979
    Параметр REG_BINARY

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

    Разберем.

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

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

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

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

    i_005.png
    [​IMG]

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

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

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



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

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

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

    Код (Text):

    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
     
    Эксперимента ради можно перевести значение в двоичную форму-так как ее видит комп.
    Воспользуемся калькулятором:
    (вид-программист)
    Код (Text):
    53     61     66      65
    101011 110001 110110 110101
     
    Это четыре буквы Safe.
    Что бы вычислить ставим флажок на Hex а затем вводим код символа и жмем Bin
    rf.png
    И получаем нужное значение.

    Вот и все.
     
    Последнее редактирование: 5 дек 2016 в 02:52
    akok, Dragokas, Sandor и 4 другим нравится это.
  2. machito
    Оффлайн

    machito Команда форума Супер-Модератор

    Сообщения:
    1.907
    Симпатии:
    1.941
    Интересная тема, спасибо Кирилл.
     
    1 человеку нравится это.
  3. regist
    Оффлайн

    regist гоняюсь за туманом Ассоциация VN/VIP VIP Разработчик

    Сообщения:
    11.382
    Симпатии:
    5.268
    Для большего удобства этих преобразований можно использовать утилиту OTConvertIt. Вот для примера
    hex to ansi.PNG
     
    machito, orderman и Kиpилл нравится это.
  4. safer
    Оффлайн

    safer Новый пользователь

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

    Вложения:

    Последнее редактирование: 15 ноя 2016
  5. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.224
    Симпатии:
    4.979
    safer, вы можете ваш вопрос сформулировать поточнее?
    На данный момент это похоже на мысли вслух
     
  6. safer
    Оффлайн

    safer Новый пользователь

    Сообщения:
    3
    Симпатии:
    0
    да - это мысли вслух. поделился тем, что накопал. мне кажется вес рег бин в 58 кб вряд ли кто из обычных юзеров ожидал. хотя об этом они просто не думают.
    относительно уточнения вопроса: я уже написал-хоть бы небольшой реальный пример содержимого рег бин.
    или общее объяснение-какого типа \ инструкция или типа ini-файла и тд\ это содержание бывает.
    я понимаю-этот вопрос очень спец, узок. и он ничему и никому не нужен для пользы. у меня это чистый интерес.
     
  7. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.224
    Симпатии:
    4.979
    Как ни странно,но на самом деле такой формат позволяет читать системе его гораздо быстрее,чем привычный глазу пользователя.
     
  8. shestale
    Оффлайн

    shestale Ассоциация VN/VIP Преподаватель

    Сообщения:
    8.059
    Симпатии:
    4.488
    А мне нравится этот Hex Editor(installable и portable).
     
    Kиpилл нравится это.
  9. safer
    Оффлайн

    safer Новый пользователь

    Сообщения:
    3
    Симпатии:
    0
    В начале моего поста я указал, что неплохо бы иметь пример реального раскодированного рег бин.
    Или хотя типы текстов в рег бин: обычные тексты, программы и тд. не понятно-зачем кодировать текст, весом 58 кб. ведь в реестре по идее его создания должны быть очень краткие сведения о компе , прогах и тд, что мы и видим обычно.
    Конечно, вряд ли обычному юзеру это надо - это мой личный интерес.
    Я пытался работать с OTConvert утилитой для декодировки и начал с 58 кб текстом - не получилось пока.
    Спасибо за наводку на HEX EDIT, попробую.
     
    Последнее редактирование модератором: 18 ноя 2016
  10. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.224
    Симпатии:
    4.979
    Реальная декодировка и кодировка указаны в первом сообщении.
    Так же следует учитывать тот факт,что декодировка может производиться как с лева направо,так и справа налево - в зависимости от типа банарника.
    Так же данные примеры вовсе не означают того,что расшифрованные данные будут удобочитаемы и понятны пользователю.
    Или вообще может быть другой принцип кодировки.
     
  11. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.492
    Симпатии:
    4.307
    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.
    По одному из смещений часть инфы кодируется примерно так:
    Код (Text):

                            '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)
     
    и так далее... Каждый случай уникален.

    Это неправда. Там указаны байты в 16-ричном виде. Сам же дальше пишешь, что:
    при том что на картинке № байтов показаны 0, а во второй строке уже 8 и т.д. Эти значения также указаны в 16-чной СС.
    Вообще непонятно, о чём речь.
     
    Последнее редактирование: 29 ноя 2016
    Kиpилл нравится это.
  12. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.224
    Симпатии:
    4.979
    Dragokas,ага,где то намесил.
    Найду где сохранил исходники разберусь,похоже должно было быть две темы.
    Статью поправлю.
     

Поделиться этой страницей