首先,我了解几乎所有应用程序都可以被破解(尤其是用C#编写)。我在这里的问题是使其更难破解。
假设用户已将许可证文件保存在Application.StartupPath下,所有用户都可以读取。
然后,每次启动应用程序时,它将检查是否可以找到并验证许可证文件。
如果应用程序可以找到并验证,我们让用户继续使用全部功能。
如果没有,我们会提示一个消息框,显示“未经许可,请继续使用试用版,功能有限。”
我的问题是,如果我是黑客/黑客,那么我将尝试绕过或绕过许可检查,而不是破解许可证文件,因为如果使用RSA签名,则破解许可证文件非常困难。
那么我们应该把许可证检查放在哪里?
PS:而且,如果我放一个全局变量IsLicensed(true / false)来限制功能是否安全?黑客更改IsLicensed = true容易吗?
软件许可的第一定律:一旦允许将其安装在不受控制的计算机上,就无法控制软件。
如果要控制代码,则需要使其成为Web服务,并仅向最终用户提供与该Web服务接口的瘦客户端。
在许多情况下,这是不可接受的,因为即使用户没有Internet连接,他们也希望能够使用其软件。
在几乎所有情况下,您都应专注于使用户体验更好,而所有形式的复制保护都会使它变得更糟。一旦达到了从warez站点下载并通过几次病毒扫描运行的体验比为合法版本进行许可证设置更好的体验,您就迷路了。