有人可以通过分析我的 CLR DLL 来破解我的密钥许可系统吗?

Posted

技术标签:

【中文标题】有人可以通过分析我的 CLR DLL 来破解我的密钥许可系统吗?【英文标题】:Can some hack my key license system by analysing my CLR DLLs? 【发布时间】:2014-01-29 18:52:25 【问题描述】:

我的软件(用 C#/.NET 编写)有一个简单的密钥许可系统来激活某些资源。它的工作方式是:它根据正在运行的计算机的硬件创建一个唯一的代码,然后将此值与客户端激活的许可证混合以创建一个密码,该密码将在该特定计算机上释放对确定资源的访问权限。提供给客户端的密钥是带有密码的文件。

它的验证方式更加简单:软件计算预期密码,然后与存储在文件中的密码匹配。如果匹配,则释放资源。

所以,既然软件本身会计算出正确的密码,我想知道是否有可能有人获取该软件的 DLL 并破解它们以发现计算方法。

【问题讨论】:

嗯,它是.NET,所以可以decompiled 来获取源代码的一般“要点”。 混淆您的软件,使其至少难以理解。 我发现this question 特别搞笑:) 【参考方案1】:

是的,如果您不努力混淆您的代码,那就是trivial to do。

总会有办法绕过你设置的任何保护措施,你唯一能做的就是让它变得足够困难,以至于任何攻击者都会感到沮丧,并宣称不值得花时间尝试逆向你的软件。这只是为了阻止额外的一个人尝试而对你来说值得多少时间/金钱的问题。

我为类似问题here 写了一个相当广泛的答案,其中介绍了您可以采取哪些步骤来缓解问题,但您无法阻止它。

【讨论】:

+1。与往常一样,这同样适用于所有其他语言(包括本机汇编)的仅客户端许可方案。此外,破解合理设计的许可证验证的价格也会高得多,这些许可证验证编入用 C++ 编写的大型代码...... 使用适当的工具破解此类方案非常简单。根据 OP 的描述,我什至根本不必“破解”密码,只需将检查匹配的算法替换为仅返回“密码检查正常”结果的代码即可。

以上是关于有人可以通过分析我的 CLR DLL 来破解我的密钥许可系统吗?的主要内容,如果未能解决你的问题,请参考以下文章

从 C++ 调用 C# dll

运行使用 /clr 构建的 DLL 的本机 C++ 应用程序时访问冲突

C++ exe 到 dll 以用作组件 (CLR)

如何将我的UserControl从另一个项目(Dll)添加到我的WPF解决方案?

Windbg SOS and CLR版本不一致的解决方案

在 C# 上使用非 clr dll