小型供应商的软件保护

Mik*_*der 18 obfuscation protection cracking piracy

这是我们在某些时候都必须考虑的问题.

经过多年和许多方法,我倾向于同意这个问题:"对于超过几百人使用的任何受保护软件,你可以找到破解版本.到目前为止,每个保护方案都可以被篡改." 您的雇主是否强制使用反盗版软件?

此外,每次我发布这个主题,有人会提醒我; "首先,无论你采用什么样的保护措施,真正专注的饼干最终都会通过所有的保护屏障." 对于单个开发人员而言,c#代码保护的最佳价值是什么?

因此,不要承受这两个广泛真实的免责声明,让我们谈谈"保护"!

我仍然觉得,对于那些不太可能提高熟练破解者时间和注意力的小型应用程序,保护是值得的.

很明显,无论你做什么,如果破解者可以通过修补应用程序来切换IF语句(jmp)的结果,那么世界上所有的密码和加密狗都无济于事.

因此,我的方法是使用以下产品对虚拟化代码进行混淆:http: //www.oreans.com/codevirtualizer.php 我对此产品非常满意.据我所知,它已经被打败了.我甚至可以使用PEcompact压缩可执行文件是否有其他人有使用它的经验?

只有EXEcryptor的问题 http://www.strongbit.com/news.asp 甚至该网站使用起来很麻烦.在进行任何WMI调用时,编译的应用程序将崩溃.

这种方法允许您通过混淆来包围较小的代码段,从而保护安全检查等.

我使用在线授权方法,因为应用程序需要定期从服务器获取数据,因此用户无需长时间离线使用它.根据定义,即使它被破解,该应用程序也毫无价值.

因此,简单的加密握手非常有用.我只是偶然在混淆保护中检查它.如果用户在另一台计算机上安装该应用程序,则在启动时会上载新ID,并且服务器会禁用旧ID并返回新的授权.

我还使用已编译应用程序的哈希值并在启动时检查它以查看是否有一个位已更改,然后从应用程序中打开应用程序作为文件(带有读取锁定)以防止任何人在启动后更改它.

由于所有静态字符串在.exe文件中都清晰可见,因此我尝试使用错误消息等通用字符串.您无法在任何地方找到字符串"授权失败".

为了防止内存转储,我使用简单的文本混淆技术(比如每个字符的XOR)这使得内存中的纯文本数据更难以与变量等区分开来.

当然,对于任何非常敏感的数据都有AES.我喜欢文本的计数器模式,因为这不会导致重复序列显示基础数据,如一系列空白.

但是使用所有这些技术,如果Key或Initialization向量可以从内存中转储,或者IF语句被绕过,那么一切都会被浪费掉.

我倾向于使用switch语句而不是条件语句.然后我创建了一个基本上是死胡同的第二个函数,而不是实际执行所需任务的函数.

另一个想法是编写添加了变量的指针.变量是授权的结果(通常为零).这将不可避免地在某个时候导致GPF.在一些较低级别的授权失败之后,我只使用它作为最后的手段,否则真正的用户可能会遇到它.然后降低软件的声誉.

你用什么技术?

(这不是讨论实现某些东西的优点的线索.它是为那些已经决定做某事的人而设计的)

Mar*_*tin 12

我不同意xsl.

我们保护我们的代码,不是因为我们想要保护我们的收入 - 我们接受那些在没有许可证的情况下使用的人可能永远不会为此付费.

相反,我们这样做是为了保护投资我们的客户已经在做我们的软件.我们相信,使用我们的软件可以使他们在市场上更具竞争力,如果其他公司无需支付就能获得它,那么他们就有不公平的优势 - 即,他们在没有许可成本的开销的情况下变得具有竞争力.

我们非常谨慎地确保本地保护对有效用户尽可能不引人注目,为此我们绝不会考虑"购买"可能影响此问题的现成解决方案.

  • 我不同意特德.我们的软件非常适合,如果我们收取较少费用,公司将无法维持自身.只有不到一百个座位,接近饱和度降低成本将使产品从市场上完全消失. (2认同)

Mus*_*sis 12

您不需要几百个用户来破解您的软件.我厌倦了让我的共享软件破解了很多次,所以作为一个实验,我创建了一个名为Magic Textbox的程序(它只是一个带有文本框的表单)并将其发布到共享软件站点(它有自己的PAD文件和所有内容) ).一天后,可以使用破解版的Magic Textbox.

这种经历让我几乎放弃了尝试用基本的复制保护来保护我的软件.


Roa*_*ior 9

我个人使用这里讨论的代码技术.这些技巧的好处是不会给海盗带来不便,而不会让合法的最终用户的生活变得更加困难

但更有趣的问题不是"什么",而是"为什么".在软件供应商开始进行此类练习之前,构建威胁模型非常重要.例如,低价B2C游戏的威胁与高价值B2B应用程序的威胁完全不同.

Patrick Mackenzie撰写了一篇很好的文章,讨论了一些威胁,包括对4种潜在客户的分析.在选择保护您的商业模式之前,我建议您为自己的应用进行此威胁分析.


T.E*_*.D. 7

我之前已经实现了硬件键控(加密狗),所以我对这些问题并不完全不熟悉.事实上,我已经给了它很多想法.我不同意任何违反版权法的人,正如你的破解者所做的那样.任何不想合法获取软件副本的人都应该没有.我自己并没有侵犯软件版权.话虽如此...

我真的非常不喜欢这里使用的"保护"这个词.你唯一要保护的就是你的控制权.您没有保护软件.无论哪种方式,该软件都很好,您的用户也是如此.

保持人们不要复制和共享你的软件的原因就是这样一个邪恶的PITA就是防止这种活动是不自然的.计算机的整个概念围绕着复制数据,想要分享有用的东西是简单的人性.如果你真的坚持,你可以打击这些事实,但这将是一场终生的斗争.上帝并没有以不同的方式制造人类,我也买不到一台无法复制东西的电脑.或许最好找到一些计算机和人一起工作的方式,而不是一直与它们作斗争?

我和大多数专业软件开发人员一起,是一家需要开发软件以便能够开展业务的公司全职雇用的,而不是因为它可以拥有人为稀缺的"软件产品"来"销售"给用户.如果我写一些通常有用的东西(这里不被视为"竞争优势"),我们可以将其作为自由软件发布.不需要"保护".