pnpn111

Results 3 comments of pnpn111

这个问题应该是识别码变化导致的。 ```text 在 5FB61DDE.06C01D7B(Exception 410B3905) 在 5FB61DDE.6B9A2F7C(Object[] 023732AD, Int32 5ED63CAC) => 这里是VMProtect虚拟机的入口,里面是SecretDecrypt的具体实现,第一个是将SecretDecrypt的参数打包成的数组,第二个是函数对应虚拟指令开始地址 在 PCL.ModSecret.SecretDecrypt(String SourceString, String Key) => 字符串解密函数 在 PCL.ModSetup.Read(String Key, SetupEntry& E, McVersion Version) => 这里负责读取键值(参数里面的Key)并解密,应该是这里传给SecretDecrypt的Key参数(跟识别码有关)跟加密时的Key不一样导致的解密错误 在 System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32...

> 这段加密密钥不应该保存吗? 为什么要重新计算,反正密钥是绑定计算机的,拿到密钥也不可能解密 嗯……你可以理解为绑定的内容变了(仅举个例子不是实际改变:例如以前绑定主板,现在绑定cpu),所以对程序来说以为绑定的计算机变了导致无法解密。 这样解释应该合理? 另外,如果是拿到本机上的密钥,的确可以在本机上解密。 说到将数据绑定本机上,.net的确提供了一个类用于操作: https://learn.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.protecteddata?redirectedfrom=MSDN&view=netframework-4.6.2 但我个人感觉它和PCL2目前的需求不是很符合。

> 识别码由两个部分计算得出: 1.硬件详情(PCL每次启动时计算) 2.PCL首次启动时生成的一个值(基本可以认为是随机值,存储在注册表的Identify项中,生成后就不会改变) 两者中的任意一个改变都会导致识别码改变。 由于其中第1项的计算方式从某个版本开始发生了变化,所以可能会出现识别码变化的情况。而PCL的某些设置项目的读取和保存依赖于识别码,因此在此前生成的这部分设置项目(包括秋仪金以外的隐藏主题)就可能无法正常读取了。 准确来说就是如果识别码变动,所有依赖识别码 加密/解密/验证的功能都会出问题 “包括秋仪金以外的隐藏主题” 实际上秋仪金应该也会无法读取,因为秋仪金的签名校验也要用到识别码