我刚刚浏览了我们的德国VB.NET论坛,发现了一些有趣的东西,让我感到有点头痛。
实际上,使用ReflexIL或其他IL编辑器可以编辑.NET Framework程序集。唯一需要绕过的是程序集的Strong Name签名。在更改程序集IL之后,您必须运行sn.exe -Vr [assemblyname]
以跳过强名称验证。然后,您必须清除缓存的本地映像。只需浏览C:\Windows\assembly
目录并删除与程序集相关的每个映像。然后重新启动。登录后,运行ngen install [assemblyname]
。现在会生成新的本地映像。
RSACryptoServiceProvider
的.NET VerifyHash
或VerifyData
方法。这也实际起作用。我和我的朋友测试并确认了这个问题(请参见屏幕截图)。这很容易。例如,如果我基于.NET Framework加密类构建许可证系统,则可以在系统范围内绕过该系统,用框架上的每个.NET应用程序。此外,每个人都可以通过挂钩方法来记录和更改我调用的函数的输入。
现在我的问题是:由于这可能是一个巨大的问题,我该怎么办?当然,恶意用户可以编辑我的应用程序,但那不会像在整个系统上做这样糟糕。 我正在考虑一些框架校验和验证,但由于有很多不同的.NET Framework更新,这似乎是不可能的。 有什么解决方案或建议吗?微软是否以某种方式解决了这个问题?