需要建议设计'防裂'软件

x.5*_*509 7 security

我目前正在开发一个项目,我需要创建一些架构,框架或任何标准,通过这些标准我可以"至少"增加软件的破解方法,即增加软件安全性.已经有不同的方法来激活软件,包括在线激活,密钥等.我目前正在研究一些研究论文.但是我仍然想讨论很多事情.

有人可以引导我去一些体面的论坛,邮件列表或类似的东西吗?或任何其他帮助将不胜感激.

Nat*_*n H 14

我会告诉你最接近"破解"的东西:一个Web应用程序.

由于许多其他原因,桌面应用程序注定失败,但是使您的应用程序在浏览器中"在云端"运行,可以让您更好地控制安全性.

桌面软件在客户端的计算机上运行,​​因此客户端可以完全访问它.Web应用程序在您的服务器上运行,因此客户端只能看到它的一小部分.

  • 任何居住在郊区的人都有地下的旧电缆,每当下大雨时水就会进入...... (6认同)
  • 此外,如果您绝对需要桌面应用程序.您还可以在远程服务器上运行某些核心功能.这样,用户只有在你放他的时候才能工作,你可以远程撤销访问权限.当然,这意味着应用程序只能在线运行.但是,嘿,这是21世纪,谁离线了? (2认同)

s_h*_*itt 8

你需要首先渗透当地的黑客团伙,冒充11岁,想要"破解".一旦您赢得了他们的信任,您就可以了解他们认为最难破解的功能.当你秘密地向本地留言板发布"uncrackable"软件时,你可以看到他们用它做了什么.以你的内在知识为基础,直到他们不再破解你的软件.完成后,请告知您的身份.理想情况下,这将被视为背叛的标志,即你正在反对他们.希望这会导致他们联系当地社区以外的其他黑客攻击您的软件.

继续,直到你到达黑客黑手党的顶部.把你的论文写成一本书,卖给HBO.

  • 大声笑.. ..我可以得到那个黑手党的地下联系人吗? (3认同)

Mic*_*ins 7

当您的产品破裂时,这不是成功的标志吗?:)

但严重的是 - 一种方法是使用序列化为XML然后使用公钥/私钥对加密的许可证对象.然后在运行时读回它们,反序列化并处理它们以确保它们有效.

但是仍然存在无处不在的"IsValid()"方法,它可以被破解以始终返回true.

您甚至可以将该方法放入已签名的程序集中以防止篡改,但您所做的就是创建另一层"IsValid()",它也可以被破解.

我们使用许可证打开或关闭软件中的各种功能,并验证支持/升级期.但这仅适用于我们的合法客户.任何想要绕过它的人都可能.

我们相信我们的合法客户不会试图绕过许可,我们接受我们的非法客户会找到方法.

我们会浪费更多的钱来试图改善我们解决方案的"防篡改"性质,而这些解决方案我们会泄漏给盗版软件的人.

此外,您必须考虑我们的合法客户的痛苦,并要求他们从他们的在线帐户页面粘贴许可证字符串是我想要通过他们的痛苦.为什么要为潜在客户创造额外的进入门槛?

无论如何,根据你已经实施的解决方案,我上面的描述可能会给你一些想法,可能会减少某人破解你产品的可能性.


小智 7

正如nute所说,您发布到客户机器的任何代码都是可以破解的.

不要试图"不可破解".尝试"有足够的威慑力来合理保护我的资产."

您可以尝试很多方法来增加破解成本. 他们中的大多数都要花费你,但有一件事你可以做,这实际上可以降低你的成本,同时增加破解成本:经常交付.

破解任何给定的二进制文件的成本是有限的.破解二进制文件的数量增加了这个成本.如果您每周发布新功能,则基本上将您的用户分为两组:

  1. 那些不需要最新功能并且可以等待破解的人.
  2. 那些确实需要最新功能并将为您的软件付费的人.

通过采用传统的防破解技术,您可以增加破解一个二进制文件的成本,从而扩大新功能发布时和黑市上可用时之间的差距.最重要的是,你的成本会下降,你在一段时间内交付的价值会上升 - 这就是免费的.

您发布的频率越高,您发现质量和价值越高,成本越低,窃取软件的可能性就越小.


Bri*_*ian 5

正如其他人所提到的,一旦你向用户发布了这些位,你就放弃了对它们的控制.专门的黑客可以更改代码以执行他们想要的任何操作.如果您想要更接近防裂的东西,请不要将这些位发布给用户.将它保存在服务器上.通过Internet提供对应用程序的访问,或者,如果用户需要桌面客户端,则在服务器上保留关键位并通过Web服务提供对它们的访问.