要遵循的惯例使商业软件更难破解?

时间:2009-04-30 13:28:26

标签: c# drm

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

10 个答案:

答案 0 :(得分:11)

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

即便如此,我已经看到一些模拟服务器的裂缝并向程序发送虚拟确认,因此它认为它正在与真实的合法服务器通信(在这种情况下,我在谈论“回拨”验证战略,而不是游戏)。

另外,请记住,只要有遗嘱,就有办法。如果有人想要你的产品,他们会得到它。最终,您将实施可能导致您的诚实客户出现并发症的保护措施,这被视为对破解者的挑战。

另外,请参阅this thread,了解有关此主题的详尽讨论。

答案 1 :(得分:6)

许多答案似乎都忽略了问题是如何使其变得更难,而不是如何使其变得不可能。

混淆是该过程中的第一个关键步骤。如果代码没有被混淆,那么任何进一步的工作都会太容易解决。

之后,它确实取决于您要避免的内容。没有许可证安装?定时审判爆发了吗?增加软件的使用(例如在更多CPU上)而无需支付额外费用?

在当今的虚拟机世界中,长期的反破解策略必须涉及一些家庭呼唤。环境太容易使原始。话虽这么说,如果你必须回到原始状态使用它们,某些类型的软件是无用的。如果这是您的软件类型,那么将相关内容放入注册表中以跟踪定时试验是相当模糊的。一般而言,许可证密钥方案很难伪造。

有一件事需要注意 - 不要太花哨。许可方案通常获得最少的质量保证,并且在合法客户被锁定的生产中遇到严重问题。不要因为害怕被人们抄袭而赶走真正付费的客户,否则很可能不会给你一分钱。

答案 2 :(得分:3)

答案 3 :(得分:3)

有第三方工具来混淆您的代码。 Visual Studio附带一个。

但是,首先,你应该认真考虑为什么要打扰。如果你的应用程序足够好并且足够受欢迎以至于希望被破解,那么尽管你付出了很多努力,它仍将是。

答案 4 :(得分:3)

以下是一些提示,不完美但可能有所帮助:

  • 经常更新您的软件
  • 如果您的软件在某处连接到某个服务器,请立即更改协议。您甚至可以拥有多种协议,并根据某些算法在它们之间进行交替
  • 将部分软件存储在每次运行软件时都会下载的服务器上
  • 当你开始你的程序时,你可以对你加载的dll进行crc检查,即获得批准的dll的crc列表
  • 有一项服务可以忽略您的主要应用程序偶尔执行crc检查并监视其他相关的dll /程序集。

不幸的是,您花在复制保护软件上的花费越多,花在功能上的花费就越少,所有这些都与平衡有关。

另一种方法是廉价出售您的软件,但要经常进行廉价的升级/更新,这样就不会有利可图。

答案 5 :(得分:1)

使用.NET代码时,使用.NET Reflector等工具进行逆向工程相对容易。代码的混淆可能有所帮助,但仍有可能解决。

答案 6 :(得分:1)

如果你想要一个快速的解决方案(当然,没有承诺你不会被破解 - 这只是一些“保护”),你可以搜索一些工具,如Themida或{{3} }。这些都是着名的保护壳。

答案 7 :(得分:1)

真的不可能。只需经常发布补丁,然后更改加密中的盐。但是,如果你的软件被破解而自豪,那一定非常好: - )

答案 8 :(得分:-1)

这几乎不可能完成任务,除非您的客户很少。

考虑一下 - 你见过没有破解的Windows版本吗?

答案 9 :(得分:-1)

如果你发明了一种保护它的方法,有人可以发明一种方法来破解它。花费努力,以便当人们以“非法”的方式使用它时,他们就会意识到这一点。超出风险的大多数事情都是浪费时间; o)