【问题标题】:Protecting a program from unauthorised use/"crackers"保护程序免受未经授权的使用/“破解”
【发布时间】:2010-12-31 17:55:56
【问题描述】:

我正在用 C++ 编写一个软件,它的目标市场是软件传统上被严重破解(或至少试图破解)的市场。我意识到没有什么可以得到完全保护,但我觉得尝试是个好主意,而且我认为我所处的情况的一些细节可能会有所帮助。

首先,用户必须有互联网连接才能使用该软件,这不会让用户感到烦恼。当游戏等也这样做时,我讨厌它,但是由于其目的,该软件无论如何都需要互联网连接才能运行,因此这不会妨碍普通用户。

其次,它在很大程度上取决于我编写和/或由第三方提供的外部脚本,因此我可以将这些脚本存储在某个网站上的某个地方,这意味着破解软件的人还必须追踪新的副本脚本,这可能会惹恼他们成为合法的。

第三,根据应用程序的定义,新版本必须经常发布,每周发布一次,最多每两周发布一次。该程序显然会有一个自动更新程序,但是由于我经常生产(需要运行)更新,因此任何类型的基于密钥的加密或任何可能使密钥/方法在每次更新时都会改变的东西,我有能力打破现有的当它们确实发生时就会出现裂缝。

有谁知道我可以实施的符合要求的任何可用解决方案或技术?

【问题讨论】:

  • 你故意省略了细节,甚至是一般目的,但我很好奇:你会提供什么信息? (更多信息也可能会带来更好的答案。)

标签: c++ reverse-engineering protection cracking


【解决方案1】:

我猜该软件的旧版本远不如最新版本有用。

如果是这样,那么您已经拥有了强大的反破解技术:您的更新机制。当您发现您的软件有被黑版本时,您可以立即检查它,并给被黑软件的用户带来麻烦。

【讨论】:

  • “惹麻烦”?你不打算通过损坏他们的设备来违反任何法律或道德,是吗?即使给出错误的结果也会以巨大的方式适得其反:错误会导致付费客户被错误地检测到;反正你不喜欢在那里工作,对吧?直截了当的“有问题(甚至不提破解),请拨打 1-800-...联系 Bob联系您。
【解决方案2】:

如果您的应用程序正在执行某种数据处理或分析,您可以通过将该部分放入您的客户端应用程序连接并进行身份验证然后从中接收结果的 Web 服务(可能在云中)来保护它。因此,即使您的客户端应用程序进行了逆向工程,它也会丢失重要的处理部分。

如果您的应用程序是基于 Web 的,您也可以获得相同的效果。

【讨论】:

    【解决方案3】:

    我之前成功使用过CrypKey

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 2013-02-11
      • 1970-01-01
      • 2012-01-19
      • 2020-10-21
      • 2014-01-25
      • 1970-01-01
      相关资源
      最近更新 更多