C#:如何让黑客/破解者更难以绕过或绕过许可检查?

Pet*_*Lee 12 c# licensing

首先,我了解几乎所有应用程序都可以被破解(特别是用C#编写).我的问题是让它更难破解.

假设用户已将Application文件保存在Application.StartupPath下,所有用户都可以读取该文件.

然后,每次应用程序启动时,它都会检查是否可以找到并验证许可证文件.

如果应用程序可以查找和验证,我们让用户继续使用全部功能.

如果没有,我们会提示MessageBox显示"未许可,继续使用试用版,功能有限".

我的问题是,如果我是黑客/黑客,我会尝试绕过或绕过许可检查而不是破解许可文件,因为,如果我们使用RSA签名,则很难破解许可文件.

那么我们应该在哪里进行许可检查?

PS:而且,如果我设置一个全局变量IsLicensed(true/false)来限制功能,它是否安全?黑客是否容易改变IsLicensed = true?

Ben*_*igt 50

软件许可的第一定律:一旦允许将软件安装在您无法控制的计算机上,您就无法控制它.

如果要保持对代码的控制,则需要将其设置为Web服务,并为最终用户提供与该Web服务接口的瘦客户端.

在许多情况下,这是不可接受的,因为即使用户没有互联网连接,用户也希望能够使用他们的软件.

在几乎所有情况下,您应该专注于改善用户体验,并且所有形式的复制保护都会使其变得更糟.一旦你到了从warez网站下载并通过几次病毒扫描运行它的经验比为合法版本进行许可设置更好,你就输了.

  • 这个.开发复制保护的时间并不好,因为那个时间本来可以用于实际的应用程序开发. (5认同)
  • @Peter:这是浪费时间.如果您不是专家,您将花费数小时将饼干放慢几分钟.最具成本效益的目标是"保持诚实的人诚实,不要担心破解者",但即使这样也会降低用户体验. (4认同)
  • 除此之外:如果你真的有一些值得保护的东西,并提供警惕的许可证/版权保护,你可能正在处理价值数千美元的东西,这或多或少意味着你不会独自飞行.即便如此,我几乎建议将许可部分外包给专门从事这方面工作的公司.但是+1不要太担心,肯定是+1,以确保您的版权保护不会破坏您的程序的用户体验! (4认同)