我真的很伤心,因为几天前我们发布了在.Net 4.0(桌面应用程序)中开发的软件。 3天后,可在Internet上找到其破解。我们试图通过这种方式来保护软件,但是人们却以某种方式逃脱了对其的破解。
这是场景:
当应用程序首次启动时,它将与Web服务器通信并检查用户传递的凭据。如果凭据正确,则软件会将值保存在注册表中,将MachineID发送回服务器并将其存储在数据库中。
现在,黑客已将服务器通信替换为“返回真”;语句(我使用Telrik JustDecompile进行了检查)。并且他已经将破解的软件上传到了互联网上。
现在,以下是我的问题:
1-如何确保.Net应用程序不会被破解?
2-黑客自从完成修改后就知道我的代码。我应该采取什么步骤?
3-我在互联网上阅读有关混淆器的信息。但是黑客知道我的代码该怎么办?
4-我可以用来避免软件破解的其他专业提示吗?
5-我不确定,但是这些反射器软件还能用敏感数据反编译App.Config吗?
最佳答案
如果计算机可以运行您的代码+黑客可以以比您更高的特权级别运行自己的代码,则没有什么可以100%阻止您的应用程序被破解的。即使他们仅有权访问可执行文件但不能访问目标平台,他们仍然可以单步执行并模仿目标平台将要执行的操作,并弄清楚如何进行保护。
完全重写身份验证部分,因此他们必须从头开始,但是他们将再次获得身份验证,这只是多长时间的问题。
jinni已经装了瓶,因为它们具有未混淆的代码。除非您彻底重写软件,否则您将无能为力,因此必须从头开始。混淆器不会阻止坚定的攻击者,他们唯一可以阻止二进制攻击者的事情就是阻止二进制文件。
我所看到的唯一可以长时间延迟复制保护的方式就是育碧对《刺客信条:兄弟会》所做的工作。他们使用游戏磁盘对它们的等级进行加密,并且必须根据需要从互联网上下载解密密钥(这是防止二进制文件进入他们的手中)。但这并不能永远奏效,最终黑客确实解密了这些级别,并且完全破解了。这就是我所看到的在没有法律干预的情况下花费最长时间才能解决的问题(请参阅底部的第2点)
反射器软件所需要做的就是查找加载App.config的部分并阅读默认设置。没有,没有安全的地方将信息存储在您无法完全控制的计算机上。如果在计算机上,则可以读取它。如果可以读取,则可以进行反向工程。
我看到的唯一防止盗版的解决方案是两个选择之一。
更新:重新访问此答案以链接到另一个问题后,我想到了一种实现#2解决方案的简便方法。
您所需要做的就是通过混淆器运行代码,并让它为向您出售软件的每个人重命名类(我仍然会让他们签署许可协议(protocol),而不仅仅是单击EULA,以便您可以执行下一部分) 。然后,您可以创建一个混淆映射的数据库,当您在互联网上看到泄漏的副本时,您只需要在项目中的任何地方找到一个类,在数据库中查找它,您就会知道是谁泄漏了它,并且知道了您需要什么要求法律赔偿。