Я читаю внутренние компоненты Windows и нашел ключ productoptions/productpolicy, я знаю, что это ключ в tokens.dat, но не знаю, как его расшифровать или существует дешифрованная версия

также не нашел никакой документации констант или перечисления для ключа политики продукта

в первую очередь, является ли эта информация общедоступной? я должен установить 10 виртуальных машин, чтобы получить ключ для каждой версии Windows, или кто-нибудь знает ответ на это?

2 ответа2

2

Я не могу найти какую-либо документацию для констант или перечисление для ключа политики продукта

В приведенной ниже статье приведена обратная инженерия двоичного значения, содержащегося в ключе HKLM\System\CurrentControlSet\ProductOptions .

Он также включает в себя программу (с исходным кодом) для декодирования ключа.


Получайте удовольствие от лицензирования Windows

Если вы загляните в реестр в ключе HKLM\System\CurrentControlSet\ProductOptions, вы найдете несколько значений, связанных с лицензированием.

Ключи ProductType и ProductSuite содержат OS Suite и Edition, но ключ ProductPolicy гораздо интереснее. Итак, давайте ближе посмотрим на это

...

Как вы можете видеть, имена лицензий представлены в виде строки в Юникоде, и позже я покажу вам, как мы можем читать значения. Но так как я не хотел извлекать все имена вручную, я решил посмотреть, смогу ли я перевернуть использованную структуру, потому что она не выглядела очень сложной

...

Начинается с заголовка:

  TProductPolicyHeader = packed record
    cbSize: DWORD;
    cbDataSize: DWORD;
    cbEndMarker: DWORD;
    Unknown1: DWORD;
    Unknown2: DWORD;
  end;

затем следует массив значений:

  TProductPolicyValue = packed record
    cbSize: Word;
    cbName: Word;
    SlDatatype: Word;
    cbData: Word;
    Unknown1: DWORD;
    Unknown2: DWORD;
  end;

SlDataType - это значение слова, соответствующее значениям перечисления 0SLDATATYPE:

  _tagSLDATATYPE =
  (
    SL_DATA_NONE       = REG_NONE,
    SL_DATA_SZ         = REG_SZ,
    SL_DATA_DWORD      = REG_DWORD,
    SL_DATA_BINARY     = REG_BINARY,
    SL_DATA_MULTI_SZ   = REG_MULTI_SZ,
    SL_DATA_SUM        = 100
  );
  SLDATATYPE = _tagSLDATATYPE;
  TSlDataType = SLDATATYPE;
  PSlDataType = ^SLDATATYPE;

И мы заканчиваем маркером конца (размером cbEndMarker).

Источник Весело с Windows Licensing

-1

Вы можете использовать ProductPolicy Editor 1.5, чтобы увидеть все значения и их свойства. Ищите его по MDL (доступен английский и китайский интерфейсы).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .