任何访问洪流跟踪器的人肯定会发现成群结队的“破解”程序,从简单的共享软件到价值数千美元的软件套件,应有尽有。似乎只要程序不依赖远程服务(例如 MMORPG),任何内置的复制保护或用户身份验证都是无用的。
有效地防止破解者绕过复制保护是不可能的吗?为什么?
任何访问洪流跟踪器的人肯定会发现成群结队的“破解”程序,从简单的共享软件到价值数千美元的软件套件,应有尽有。似乎只要程序不依赖远程服务(例如 MMORPG),任何内置的复制保护或用户身份验证都是无用的。
有效地防止破解者绕过复制保护是不可能的吗?为什么?
不,实际上不可能阻止它。你可以让它变得极其困难——一些 Starforce 版本显然做到了这一点,但代价是严重激怒了一些“用户”(受害者可能更准确)。
你的代码在他们的系统上运行,他们可以用它做任何他们想做的事情。附加调试器,修改内存,等等。就是这样。
孢子似乎是一个很好的例子,在这个方向上的严厉努力不仅完全未能阻止它在 P2P 网络等周围共享,而且严重损害了产品的形象,几乎可以肯定是销售。
另外值得注意的是,用户可能需要破解复制保护以供自己使用;我记得几年前在我的笔记本电脑上玩暗黑破坏神,它没有内置光驱。所以我掉进了一个没有CD的裂缝,然后在长途飞机上玩了几个小时。强迫这种检查,因此用户要解决它是最愚蠢的错误特征。
因为这是针对有思想的对手的固定防御。
几千年前的军事理论家把这个打死了?
复制保护就像安全——不可能达到 100% 完美,但你可以添加层,使其更难破解。
大多数应用程序都会问(自己)“许可证有效吗?” 黑客只需要找到那个点并修改编译后的代码以返回“是”。或者,破解者可以使用蛮力尝试不同的许可证密钥,直到其中一个成功。还有社会因素——一旦一个人购买了这个工具,他们可能会在互联网上发布一个有效的许可证代码。
因此,代码混淆使找到要更改的代码变得更加困难(但并非不可能)。二进制文件的数字签名使更改代码变得更加困难,但并非不可能。蛮力方法可以用带有大量纠错位的长许可证代码来对抗。社交攻击可以通过要求作为许可证代码本身一部分的姓名、电子邮件和电话号码来缓解。我用这种方法效果很好。
祝你好运!
很抱歉打断了一个古老的话题,但这是我们的谋生之道,我们真的很擅长。这就是我们所做的一切。所以这里的一些信息是错误的,我想澄清一下。
理论上无法破解的保护不仅是可能的,我们销售的也是如此。主要的复制保护供应商(包括我们)遵循的基本模型是使用 exe 和 dll 的加密以及在运行时解密的密钥。
有三个组件:
非常强大的加密:我们使用 AES 128 位加密,有效地免疫暴力攻击。有一天,当量子计算机很普遍时,它可能会被破解,但假设你会破解这种强度加密来复制软件而不是国家机密是不合理的。
安全密钥存储:如果破解者能够获得加密密钥,那么你就完蛋了。保证密钥不会被盗的唯一方法是将其存储在安全设备上。我们使用加密狗(它有多种形式,但操作系统总是将其视为可移动闪存驱动器)。加密狗将密钥存储在智能卡芯片上,该芯片针对 DPA 等侧信道攻击进行了加固。密钥生成与非确定性和动态的多个因素相关联,因此不可能有单个密钥/主破解。密钥存储和计算机上的运行时之间的通信也被加密,因此可以阻止中间人攻击。
调试器检测:基本上你想阻止破解者拍摄内存快照(解密后)并从中制作可执行文件。我们为防止这种情况所做的一些事情是保密的,但通常我们允许调试器检测并在存在调试器时锁定许可证(这是一个可选设置)。我们也从未完全解密内存中的整个程序,因此您永远无法通过“窃取”内存来获取所有代码。
我们有一个全职的密码学家,他几乎可以破解任何人的保护系统。他把所有的时间都花在研究如何破解软件上,这样我们就可以阻止它。因此,您不会认为这只是我们所做工作的廉价骗局,我们并不是独一无二的:SafeNet 和 Arxan Technologies 等其他公司也可以提供一些非常强大的保护。
许多纯软件或混淆方案很容易破解,因为破解者可以识别程序入口点并绕过任何许可证检查或 ISV 为防止盗版而投入的其他内容。当没有找到许可证时,即使有加密狗的人也会抛出一个对话框——在该错误上设置断点将使破解者在汇编代码中有一个很好的位置来做补丁。同样,这需要未加密的机器代码可用——如果您对 .exe 进行强加密,您将无法获得这些代码。
最后一件事:我认为我们的独特之处在于我们举办了几次公开比赛,我们向人们提供了一个系统并邀请他们破解它。我们已经获得了一些相当丰厚的现金奖励,但还没有人破解我们的系统。如果 ISV 采用我们的系统并错误地实施它,这与在您的前门上放一把大挂锁并用木螺钉连接到便宜的搭扣上没有什么不同——很容易绕过。但是,如果您按照我们的建议使用我们的工具,我们相信您的软件不会被破解。
HTH。
安全性和复制保护之间的区别在于,通过安全性,您可以保护资产免受攻击者的侵害,同时允许授权用户访问。使用复制保护,攻击者和授权用户是同一个人。这使得完美的复制保护变得不可能。
我认为如果有足够的时间,一个潜在的破解者可以绕过任何复制保护,即使是那些使用远程服务器回调的人。它所要做的就是通过一个盒子重定向所有传出流量,该盒子将过滤这些请求,并以适当的消息进行响应。
在足够长的时间线上,复制保护系统的存活率为 0。只要有足够的时间和知识,一切都可以逆向工程。
也许您应该专注于使用真实的、已注册的、未破解的版本使您的软件更具吸引力的方法。优质的客户服务、注册优惠等奖励合法用户。
基本上历史已经告诉我们,您可以通过复制保护购买最多的是一点时间。从根本上说,由于您希望某人以一种方式查看数据,因此有一种方法可以获取该数据。因为有一种方法可以利用这种方法来获取数据。
对此,任何复制保护或加密所能做的唯一事情就是让事情变得非常困难。如果某人有足够的动力,总会有解决问题的蛮力方式。
但更重要的是,在计算机软件领域,我们有大量的工具可以让我们看到事情是如何工作的,一旦你掌握了复制保护如何工作的方法,那么得到你想要的就很简单了。
另一个问题是,复制保护在很大程度上只会让为您的软件付费的用户感到沮丧。看看他们不关心的开源模型,有些人正在赚大钱,鼓励人们复制他们的软件。
“试图让比特不可复制就像试图让水不湿一样。” ——布鲁斯·施奈尔
复制保护和其他形式的数字限制管理本质上是可破坏的,因为不可能使计算机可以看到比特流,同时防止计算机复制它们。就是做不到。
正如其他人所指出的,复制保护只会惩罚合法客户。我不想玩 Spore,但如果我愿意,我可能会购买它,然后安装破解版,因为它实际上是一个更好的产品,因为它没有破坏系统的 SecuROM 或剥夺财产的激活方案。
}} 为什么?
您可以购买世界上最昂贵的保险箱,并用它来保护某些东西。一旦你放弃了打开保险箱的密码,你就失去了安全感。
软件也是如此,如果您希望人们使用您的产品,您必须让他们能够打开众所周知的保险箱并访问内容,混淆打开锁的方法无济于事。您已授予他们打开它的能力。
您可以信任您的客户/用户,或者您可以浪费过多的时间和资源试图打败他们,而不是提供他们想要支付的功能。
只是不值得打扰。真的。如果你不保护你的软件,而且它很好,那么毫无疑问会有人盗版它。当然,障碍会很低。但是,您从不打扰中节省的时间将是您可以投资于您的产品、营销、客户关系等方面的时间,从而长期建立您的客户群。
如果你确实花时间保护你的产品而不是开发它,你肯定会减少盗版。但是现在您的竞争对手可能能够开发您没有时间开发的功能,并且您很可能最终销售量减少,即使在短期内也是如此。
正如其他人所指出的那样,您最终会让真实和合法的用户感到沮丧,而不是让骗子感到沮丧。当您开发规避技术时,请始终牢记您的付费用户。
如果你的软件是想要的,你就没有希望对抗无聊的 17 岁大军。:)
在个人复制/非商业版权侵权的情况下,关键因素似乎是项目价格与复制难易程度之间的关系。您可以增加复制它的难度,但正如前面的一些答案所强调的那样,收益会递减。另一种策略是降低价格,直到通过 bittorrent 下载它比简单地购买它更麻烦。
实际上有许多成功的例子,作者找到了一个定价的最佳点,这无疑为自己带来了巨大的利润。试图 100% 防止未经授权的复制是一个失败的原因,您只需要获得一大群愿意付费而不是非法下载的客户。使盗版软件变得便宜的原因也是使发布软件变得便宜的原因。
有一个简单的方法,我很惊讶你在上面的答案中没有这么说。将复制保护移至安全区域(了解安全实验室中的服务器)。您的服务器将从客户端接收随机数(检查该数字是否以前未使用过),使用客户端的编号和您的私钥加密一些不断发展的二进制代码/计算结果并将其发送回。没有黑客可以规避这一点,因为他们无权访问您的服务器代码。
我所描述的基本上是其他 SSL 的 web 服务,这就是当今大多数公司的发展方向。
缺点:竞争对手将在您完成加密代码期间开发相同特色产品的离线版本。
关于不需要网络的保护:
根据浮动的笔记,花了两年时间破解一个流行的应用程序,该应用程序使用了与约翰回答中描述的类似方案。(自定义硬件加密狗保护)
另一个不涉及加密狗的方案是“扩展保护”。我刚刚创造了这个,但它的工作原理是这样的:有一个应用程序可以保存用户数据,用户可以从第三方购买扩展等。当用户加载数据或使用新的扩展时,扩展和保存的数据还包含执行检查的代码。当然,这些检查也受到校验和检查的保护。它在纸面上并不像其他方案那样安全,但实际上这个应用程序一直都是半破解的,因此尽管被破解,但它主要用作试验,因为破解总是会错过一些检查并且必须修补这些扩展作为好。
关键是,虽然这些是可以破解的,但如果有足够多的软件供应商使用这样的方案,这会使 warescene 中愿意为这些方案献身的少数人过度劳累。如果您进行数学计算,则保护不必那么好,只要有足够多的供应商使用这些不断变化的自定义保护,它就会压倒饼干,而warez场景将在那里结束。*
没有发生这种情况的唯一原因是因为发布者购买了他们在所有地方使用的单一保护,使其成为一个巨大的目标,就像 Windows 是恶意软件的目标一样,在多个应用程序中使用的任何保护都是一个更大的目标。所以每个人都需要做自己的定制、独特的多层扩展保护。如果最好的破解者需要几个月的时间来破解一个版本,那么每年的warez 版本数量将下降到大约十几个版本。
现在对于营销软件中的一些理论:
如果您认为warez 提供了有价值的营销价值,那么这应该被纳入商业计划。这可能需要一个非常非常(太)基本的 lite 版本,但仍然需要花费几美元来确保它被破解。然后,您会通过定期提供的“从精简版廉价升级的有限时间”和其他追加销售策略来吸引用户。精简版应该最多有一个值得购买的功能,否则会非常残废。价格应该<10 $。完整版的价格应该是 10 美元精简版付费演示版升级价格的两倍。例如。如果完整版是 80 美元,您会以 40 美元的价格提供从精简版升级到完整版的价格,或者看起来真的很讨价还价的东西。当然你'
完整版的代码与精简版没有相似之处,这一点至关重要。您希望精简版被软件化,而完整版要么需要耗费大量时间来破解,要么在功能上具有网络依赖性,难以在本地模仿。破解者可能更擅长破解,而不是尝试编写/复制应用程序在 Web 服务器上的部分功能。
*附录:对于应用程序/游戏,场景可能会在这种不太可能和理论上的情况下结束,对于音乐/电影和实践等其他事物,我会考虑让数字 dl 购买者更便宜地获得额外的可收藏实物或在线 -唯一的价值 - 许多人是东西的收藏家(尤其是海盗),如果它比数字副本获得了足够令人满意的东西,他们可能会被诱惑购买。
不过要当心——有一种叫做“期望上升定律”的东西。游戏示例:Ultima 4-6 标准盒子包含一张由布制成的地图,而天际收藏版则包含一张纸制成的地图。期望值提高了,有些人不会对纸质地图感到满意。您想要保持产品或服务质量不变,或者提前管理预期。我认为,在考虑这些增值产品时,这一点至关重要,因为您希望它们制造得合乎需要但不会越来越昂贵,并且不会变成看起来如此毫无价值以至于违背目的的东西。
在这种情况下,高质量的软件是一件坏事,因为如果没有人是你的软件,那么他们就不会花时间尝试破解它,另一方面,像 Adobe 的 Master Collection CS3 这样的东西在发布后几天就可以使用。
所以这个故事的寓意是,如果你不希望有人窃取你的软件,那么有一个选择:不要写任何值得窃取的东西。
我认为有人会想出一种动态的 AI 方法来击败所有当前标准的复制保护方法;哎呀,我肯定很想得到报酬来解决这个问题。一旦他们到达那里,就会开发出新的方法,但这会减慢速度。
社会阻止软件盗窃的第二个最佳方法是重罚并执行处罚。
最好的办法是扭转道德沦丧,从而提高社会诚信水平。
如果我听说过一个失败的原因......当然这并不意味着你不应该尝试。
就个人而言,我喜欢 Penny Arcade 对此的看法:“A Cyclical Argument With A Literal Strawman” alt text http://sonicloft.net/im/52