变量名 | 类 型 | 静态 | 数组 | 备 注 |
DigitalProductId | 注册表_键 | | |
字节集_bkey | 字节集 | | |
数组_akeys | 整数型 | | 0 |
计次 | 整数型 | | |
整数_iswin10 | 整数型 | | |
整数_ikeyoffset | 整数型 | | |
文本_map | 文本型 | | |
整数_i | 整数型 | | |
整数_current | 整数型 | | |
整数_ix | 整数型 | | |
输出文本 | 文本型 | | |
整数_last | 整数型 | | |
整数_格式i | 整数型 | | |
文本返回 | 文本型 | | |
集_注册表.
读取键值Ex ( #HKEY_LOCAL_MACHINE, “SOFTWARE\Microsoft\Windows NT\CurrentVersion”,
“DigitalProductId”, DigitalProductId
)字节集_bkey = DigitalProductId.键值
如果 (取字节集长度 (字节集_bkey
) < 1
)
返回 (“”)

重定义数组 (数组_akeys, 假,
取字节集长度 (字节集_bkey
))
计次循环首 (取字节集长度 (字节集_bkey
), 计次
)
数组_akeys
[计次
] =
到整数 (取字节集数据 (字节集_bkey,
#字节型, 计次
))
计次循环尾 ()整数_ikeyoffset = 52
整数_iswin10 =
位与 (右移 (数组_akeys
[整数_ikeyoffset + 15
], 3
), 1
)数组_akeys
[整数_ikeyoffset + 15
] =
位或 (位与 (数组_akeys
[整数_ikeyoffset + 15
], 247
),
左移 (位与 (整数_iswin10, 2
), -2
))
文本_map =
“BCDFGHJKMPQRTVWXY2346789”整数_i = 24
判断循环首 (整数_i > -1
)
整数_current = 0

整数_ix = 14

判断循环首 (整数_ix > -1
)

整数_current =
左移 (整数_current, 8
)

整数_current = 数组_akeys
[整数_ix + 整数_ikeyoffset + 1
] + 整数_current


数组_akeys
[整数_ix + 整数_ikeyoffset + 1
] =
取整 (整数_current ÷ 24
)

整数_current = 整数_current % 24


整数_ix = 整数_ix - 1

判断循环尾 ()
整数_i = 整数_i - 1

输出文本 =
取文本中间 (文本_map, 整数_current + 1, 1
) + 输出文本

整数_last = 整数_current
判断循环尾 ()
如果 (输出文本 =
“BBBBBBBBBBBBBBBBBBBBBBBBB”)
返回 (“未找到产品密钥”)


如果 (整数_iswin10 = 1
)
输出文本 =
取文本中间 (输出文本, 2, 整数_last
) +
“N” +
文本_删左边 (输出文本, 整数_last + 1
)


计次循环首 (取文本长度 (输出文本
) ÷ 5, 整数_格式i
)
文本返回 = 文本返回 +
取文本中间 (输出文本, 5 × 整数_格式i - 4, 5
)
如果真 (取文本长度 (输出文本
) ÷ 5 ≠ 整数_格式i
)

文本返回 = 文本返回 +
“-”

计次循环尾 ()返回 (文本返回
)