Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 要遵循惯例,使商业软件更难破解?_C#_Drm - Fatal编程技术网

C# 要遵循惯例,使商业软件更难破解?

C# 要遵循惯例,使商业软件更难破解?,c#,drm,C#,Drm,如果我想让我的应用程序更难破解,有哪些好的约定可以遵循?只要你的整个应用程序都是客户端的,就完全不可能保护它不被破解。保护应用程序不被破解的唯一方法是使其必须连接到服务器才能正常运行(例如,在线游戏) 即便如此,我也看到了一些模拟服务器并向程序发送虚拟确认信息的漏洞,因此程序认为它在与真实、合法的服务器通信(在本例中,我指的是“呼叫总部”验证策略,而不是游戏) 还有,请记住,有志者事竟成。如果有人非常想要你的产品,他们会得到它。最后,您将实施保护,这可能会给您诚实的客户带来麻烦,而且被视为对黑客

如果我想让我的应用程序更难破解,有哪些好的约定可以遵循?

只要你的整个应用程序都是客户端的,就完全不可能保护它不被破解。保护应用程序不被破解的唯一方法是使其必须连接到服务器才能正常运行(例如,在线游戏)

即便如此,我也看到了一些模拟服务器并向程序发送虚拟确认信息的漏洞,因此程序认为它在与真实、合法的服务器通信(在本例中,我指的是“呼叫总部”验证策略,而不是游戏)

还有,请记住,有志者事竟成。如果有人非常想要你的产品,他们会得到它。最后,您将实施保护,这可能会给您诚实的客户带来麻烦,而且被视为对黑客的挑战


此外,请参阅,以获得关于此主题的非常深入的讨论。

这几乎就像是不可能完成的任务,除非您的客户非常少


你想,你见过没有破解的Windows版本吗?< /P> < P>:< /P> < P>有第三方工具混淆你的代码。VisualStudio附带了一个


但是,首先,你应该认真想想你为什么要这么麻烦。如果你的应用程序足够好,足够受欢迎,以至于想要被破解,那么不管你怎么努力,它都会被破解。

使用.NET代码进行逆向工程相对容易。对代码进行模糊处理可能会有所帮助,但仍然有可能解决问题。

如果你发明了一种保护它的方法,有人可以发明一种破解它的方法。花足够的精力,当人们以“非法”的方式使用它时,他们会意识到这一点。除此之外的大多数事情都有浪费时间的风险;o)

如果你想要一个快速的解决方案(当然,没有保证你不会被破解——这只是一些“保护”),你可以搜索一些工具,比如或。这两个都是著名的保护壳。

真的不可能。只需经常发布补丁,然后更改加密中的salt。然而,如果你的软件被破解了,那它一定很好:-)

很多答案似乎都忽略了一点,那就是问题是如何让它变得更难,而不是如何让它变得不可能

模糊处理是该过程中的第一个关键步骤。如果代码没有被混淆,任何进一步的问题都很容易解决

在那之后,它确实有点取决于你试图避免什么。无许可证安装?定时审判爆炸了?在不支付额外费用的情况下提高软件的使用率(例如在更多CPU上)

在当今的虚拟机世界中,长期的反破解策略必须包括一些家庭呼叫。环境太容易变得原始。也就是说,如果你必须回到原始状态才能使用某些类型的软件,它们是无用的。如果这是你的软件类型,那么在注册表中有一些比较模糊的地方可以用来跟踪定时试验。通常,许可证密钥方案很难伪造


但有一件事需要注意——不要太花哨。很多时候,许可证方案获得的QA数量最少,并且在生产中遇到严重问题,合法客户被拒之门外。不要因为害怕被人抄袭而赶走真正的付费客户,因为他们很可能根本不会给你一分钱。

这里有一些提示,并不完美,但可能会有所帮助:

  • 经常更新你的软件
  • 如果您的软件连接到某个服务器,请不时更改协议。您甚至可以有许多协议,并根据某些算法在它们之间进行替换
  • 将软件的一部分存储在服务器上,每次运行软件时都会下载该服务器
  • 启动程序时,对加载的dll进行crc检查,即为已批准的dll创建一个crc列表
  • 有一个服务可以忽略主应用程序,偶尔执行crc检查并监视其他依赖的dll/程序集
不幸的是,你花在软件拷贝保护上的钱越多,你花在功能上的钱就越少,这一切都是为了平衡

另一种方法是廉价出售你的软件,但要经常进行廉价的升级/更新,这样破解软件就无利可图了