答案1
这些字符串可能是被解释为 Unicode 的 ASCII 文本。大多数采用字符串参数的 Windows API 函数都有两个版本,一个用于 8 位“ANSI”文本,一个用于 Unicode (UTF-16) 文本。如果犯了错误,保存 8 位文本的缓冲区可能会被解释为保存 Unicode,从而导致字符对拼凑在一起成为 16 位 Unicode 字符。由于 Unicode 代码点空间的布局,这几乎总是会产生亚洲字符。我怀疑有些程序使用了错误的版本的RegCreateKeyEx
,将其漂亮的 ASCII 键名扭曲成毫无意义的亚洲文本。
例如,如果你This is a test string
以这种方式进行混淆,则会得到桔獩椠整瑳猠牴湩�
。混淆Awesome program v2.0
会产生睁獥浯牰杯慲㉶〮
。
为了尝试扭转损害,您可以使用 PowerShell!
[System.Text.Encoding]::ASCII.GetString([System.Text.Encoding]::Unicode.GetBytes((gcb)))
打开 PowerShell 窗口(Windows+R,powershell
),粘贴该命令,从注册表编辑器复制神秘的键名,切换回 PowerShell,然后按 Enter。(该命令会从剪贴板中提取文本。)它将打印或多或少原始的版本;某些 ASCII 字符组合可能会创建无效的 UTF-16 序列,并且无法在往返过程中存活下来。??
如果原始字符串包含奇数个字符,则其最后一个字符可能会被替换为。
删除这些键可能会导致文本错误处理程序停止工作。一旦您知道它们的名称,它们的用途可能就会变得更加清晰。