首先,我了解几乎所有应用程序都可以被破解(尤其是用C#编写)。我在这里的问题是使其更难破解。假设用户已将许可证文件保存在Application.StartupPath下,所有用户都可以读取。然后,每次启动应用程序时,它将检查是否可以找到并验证许可证文件。如果应用程序可以找到并验证,我们让用户继续使用全部功能。如果没有,我们会提示一个消息框,显示“未经许可,请继续使用试用版,功能有限。”我的问题是,如果我是黑客/黑客,那么我将尝试绕过或绕过许可检查,而不是破解许可证文件,因为如果使用RSA签名,则破解许可证文件非常困难。那么我们应该把许可证检查放在哪里?PS:而且,如果我放一个全局变量IsLicensed(true / false)来限制功能是否安全?黑客更改IsLicensed = true容易吗?
3 回答
三国纷争
TA贡献1804条经验 获得超7个赞
软件许可的第一定律:一旦允许将其安装在不受控制的计算机上,就无法控制软件。
如果要控制代码,则需要使其成为Web服务,并仅向最终用户提供与该Web服务接口的瘦客户端。
在许多情况下,这是不可接受的,因为即使用户没有Internet连接,他们也希望能够使用其软件。
在几乎所有情况下,您都应专注于使用户体验更好,而所有形式的复制保护都会使它变得更糟。一旦达到了从warez站点下载并通过几次病毒扫描运行的体验比为合法版本进行许可证设置更好的体验,您就迷路了。
白板的微信
TA贡献1883条经验 获得超3个赞
您可以对代码进行混淆处理(使其更难以反编译/使用其上的反射器),但是只要有足够的精力和知识,它就会被破坏,之后很容易更改程序集的字节码,从而绕开了许可证检查。同样,您可以投资这笔钱以使您可以对装配进行签名,这将使更换装配本身变得更加困难,但是只要有足够的精力(不仅仅是破坏混淆),这也可以避免。
您的目标不应该是使许可证流程坚不可摧,而应让您的软件本身值得购买。这是一个更好的保护。饼干(只有他们,黑客才是完全不同的人,更多内容请参阅本文)不会受到阻碍,但是随着软件的值得,更多的人会购买它。
- 3 回答
- 0 关注
- 467 浏览
添加回答
举报
0/150
提交
取消