windows ProductPolicy 键枚举/常量

windows ProductPolicy 键枚举/常量

我正在阅读 Windows 内部文件并找到了 productoptions/productpolicy 密钥,我知道它是 tokens.dat 中的一个开关,但不知道如何解密它,或者是否有它的解密版本

也没有找到任何关于产品策略键的常量或枚举的文档

首先,这些信息是公开的吗?我是否必须设置 10 台虚拟机才能获取每个 Windows 版本的密钥,或者有人知道答案吗?

答案1

我找不到产品策略键的常量或枚举的任何文档

下面引用的文章对密钥中包含的二进制值进行了逆向工程HKLM\System\CurrentControlSet\ProductOptions

它还包括一个用于解码密钥的程序(带有源代码)。


享受 Windows 许可的乐趣

如果您查看注册表中的 HKLM\System\CurrentControlSet\ProductOptions 项,您会发现几个与许可相关的值。

ProductType 和 ProductSuite 键包含 OS Suite 和 Edition,但 ProductPolicy 键更有趣。让我们仔细看看它

...

如您所见,许可证名称以 Unicode 字符串的形式存在,稍后我将向您展示如何读取这些值。但因为我不想手动提取所有名称,所以我决定看看是否可以反转使用的结构,因为它看起来不太复杂

...

它以标题开始:

  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 许可的乐趣

答案2

您可以使用产品政策编辑器 1.5查看所有值及其属性。在 MDL 上搜索(提供英文和中文 UI)。

相关内容