处理.NET应用程序许可证的最简单方法是什么?

4

我即将完成我的自由职业Windows Forms项目。

如何处理许可证是最简单的方法?我的目标机器没有互联网访问,因此我认为通过webservice验证不是最佳选择。

我只是不想让他们复制我的程序并在其他机器上运行,甚至自己销售它。


没有关于许可证的规定。这是一份口头合同。它是为家庭朋友(实际上是修女)准备的。 - delete
@Oded:如果有帮助的话,这是一个价值1.2k美元的软件项目。 - delete
@Sergio - 这里成本并不是真正相关的问题。重要的是协议和法律术语。 - Oded
试试这个试用版制作工具 - Rosmarine Popcorn
5个回答

4

有很多方法可以实现,这些方法都取决于你的目标受众/部署环境。

由于你不能打电话回家,所以你需要依赖序列号。如果你有一个客户端/服务器架构,那么你可以将注册信息存储在服务器上,客户端可以检查它们。

如果只是一个仅限客户端的应用程序,那么你可以:1)使用序列号;2)让他们生成一个序列请求,该请求使用他们的MAC地址或其他唯一标识符来确定他们正在安装的机器。这样,当你根据他们的请求发出序列号时,它只能在生成请求的机器上工作。


1
在断开连接的情况下,请求/响应序列号是一个好主意。这就是Corel、Adobe和许多其他公司保护其软件的方式。 - Dustin Davis

1

你可以使用一个加密狗,我认为这是最安全的方式。 加密狗可以保存应用程序的敏感部分,只有在插入USB端口时才能运行应用程序。你应该多了解一下,我认为有一个专门针对DotNet应用程序的加密狗。 相信我,我们公司长期以来都在使用它。


我指的是您可以使用加密狗附加每个版本的软件,我认为这是便宜的。 - AlaaL
2
加密狗价格昂贵,通常只适用于非常大型(昂贵)的应用程序。我并没有在工程类应用程序之外真正看到它们,例如CAD / 3D建模、CNC控制器等。必须购买和编码或内部开发加密狗,这两者都很昂贵,增加了成本并令用户感到沮丧。 - Dustin Davis
是的,也许有点贵,但这是为了安全所付出的代价。我不想说加密狗的名字,但有新的dotnet加密狗可以自动选择您应用程序的敏感部分并完成您无需做任何事情的工作,也许有更好的方式,但请将其作为最后的选择记在心中。 - AlaaL
不是说它们不值得一提,因为它们确实值得一提。我想我们需要知道这是什么类型的应用程序以及许可证的费用是多少?30美元的桌面应用程序不需要加密狗,但1300美元的桌面应用程序需要加密狗。 - Dustin Davis
是的,你说得对。我们使用加密狗是因为我们的软件价值至少1550美元。 - AlaaL

1

如果您的软件条款规定了这样的许可方式,那么这应该足够了。

不要忘记,由于您编写了此软件,很有可能会被召回进行修复/增强。这应该为您提供了充足的机会来查看您的许可是否被滥用。


1

有一些混淆解决方案提供内置的许可证安全性。你可以尝试其中之一。XenoCode是其中之一。http://www.xenocode.com/


0

为您的软件包含一个安装程序。该安装程序应设置一些注册表键,以标识此计算机具有有效的安装;然后您的程序将查询这些键并确定是否应运行。

如何生成这些键以及它们应该是什么的问题取决于您想要多么深奥。它们越简单,您实现起来就越容易,但对于他人来说也越容易欺骗。如果您只想使购买许可证比欺骗安装更容易,可以通过要求安装程序需要一个许可证密钥来实现,该密钥可以被解密为您期望的内容(例如用户输入的名称)。然后,它可以加密并设置一个注册表键,当您的程序启动时将解密该键以确定有效的安装。这可以被欺骗,并且在没有互联网访问的情况下,它不能证明一个人没有在多台计算机上使用相同的密钥。

如果您想确保每个安装都是独立许可的,而不会失败,您必须拥有互联网访问,因为您的安装程序或程序本身将不得不与集中式网络服务(或许可证密钥服务器,常用于企业安装)通信,以确定该密钥是真实的,而且没有被其他计算机使用。


什么阻止了我们更改注册表并绕过安装程序? - Dustin Davis
除了需要知道安装程序写入注册表的内容之外,其他都没什么作用。如果安装程序加密其注册表键,则需要有效的安装进行克隆。如果安装程序加密应用程序可以检查的某些特定于机器的内容,则无法仅从有效安装中复制注册表键;他们必须反射到您的安装程序中以发现其秘密,然后复制它以生成欺骗性注册表信息。仍然可以破解,但此时您已经远远超出了普通用户的能力范围。 - KeithS
他们可以简单地使用RegMon(免费且易于使用的工具)来查看正在读取/写入什么,而无需反射。这完全取决于您想要多安全。应用程序应该有自己的验证,而不是依赖安装程序来保护它们。 - Dustin Davis
1
@Titan: 他们可以看到写入寄存器的内容,但如果那是加密值,他们就不知道明文是什么; 那时他们所能做的就是复制/粘贴。 如果你将该字符串设置为机器特定的内容(甚至是安装特定的内容),它们就无法复制/粘贴,需要挖掘你的汇编代码以获取复制它所需的秘密信息。 - KeithS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接