我真的很伤心,因为几天前我们发布了在.Net 4.0(桌面应用程序)中开发的软件。 3天后,可在Internet上找到其破解。我们试图通过这种方式来保护软件,但是人们却以某种方式逃脱了对其的破解。

这是场景:
当应用程序首次启动时,它将与Web服务器通信并检查用户传递的凭据。如果凭据正确,则软件会将值保存在注册表中,将MachineID发送回服务器并将其存储在数据库中。

现在,黑客已将服务器通信替换为“返回真”;语句(我使用Telrik JustDecompile进行了检查)。并且他已经将破解的软件上传到了互联网上。

现在,以下是我的问题:
1-如何确保.Net应用程序不会被破解?
2-黑客自从完成修改后就知道我的代码。我应该采取什么步骤?
3-我在互联网上阅读有关混淆器的信息。但是黑客知道我的代码该怎么办?
4-我可以用来避免软件破解的其他专业提示吗?
5-我不确定,但是这些反射器软件还能用敏感数据反编译App.Config吗?

最佳答案



如果计算机可以运行您的代码+黑客可以以比您更高的特权级别运行自己的代码,则没有什么可以100%阻止您的应用程序被破解的。即使他们仅有权访问可执行文件但不能访问目标平台,他们仍然可以单步执行并模仿目标平台将要执行的操作,并弄清楚如何进行保护。



完全重写身份验证部分,因此他们必须从头开始,但是他们将再次获得身份验证,这只是多长时间的问题。



jinni已经装了瓶,因为它们具有未混淆的代码。除非您彻底重写软件,否则您将无能为力,因此必须从头开始。混淆器不会阻止坚定的攻击者,他们唯一可以阻止二进制攻击者的事情就是阻止二进制文件。



我所看到的唯一可以长时间延迟复制保护的方式就是育碧对《刺客信条:兄弟会》所做的工作。他们使用游戏磁盘对它们的等级进行加密,并且必须根据需要从互联网上下载解密密钥(这是防止二进制文件进入他们的手中)。但这并不能永远奏效,最终黑客确实解密了这些级别,并且完全破解了。这就是我所看到的在没有法律干预的情况下花费最长时间才能解决的问题(请参阅底部的第2点)



反射器软件所需要做的就是查找加载App.config的部分并阅读默认设置。没有,没有安全的地方将信息存储在您无法完全控制的计算机上。如果在计算机上,则可以读取它。如果可以读取,则可以进行反向工程。

我看到的唯一防止盗版的解决方案是两个选择之一。

  • 这个人永远不会获得您的应用程序,它是从您控制的服务器中流式传输的,他们永远也看不到二进制文件。向他们发送的唯一信息是驱动UI所需的信息。这是所有MMO都在努力的方法。人们可以对您发送到UI的内容进行反向工程,并模仿服务器上正在发生的逻辑,但是他们永远无法完全看到它在做什么,并且如果您的软件足够复杂,对于攻击者来说可能是不合算的重新创建服务器端代码。这种方法的缺点是您将需要托管服务器以供用户连接,这将是重复发生的费用,您将需要一种重新补偿的方法。通常,此方法称为“富客户端”或“瘦客户端”,具体取决于客户端完成了多少处理以及服务器端完成了多少处理。参见“Chapter 22”的Microsoft Application Architecture Guide, 2nd Edition。具体来说,我描述的是figure 4 and 5
  • 中显示的内容
  • 第二个选择是,无论您出售软件的人是谁,都要让他们签署不分发软件的合法契约(Contract)(不是EULA,这是必须由客户亲自签署的实际契约(Contract))。在该契约(Contract)中,对泄漏该软件的人将处以巨额罚款,然后用购买该软件的人所特有的指纹对您的程序进行困惑,以便在泄漏程序时可以看到是谁做的。 (这是供应商Hex-Rays用于其反汇编程序IDA的方法。通过谷歌快速搜索无法找到比6.1更高的任何破解版本,它们位于6.3上)。此方法不会停止盗版,但首先可能会阻止复制该副本。这也使您可以弥补与程序泄漏有关的一些损失成本。一个问题是,如果攻击者可以获取程序的两个副本并可以比较两个文件之间的指纹,则您将需要放置很多指纹并且它们必须很细微,他才能分辨出什么是识别信息。随便放什么就好,这样他们就不知道是谁买的。做到这一点的唯一方法是放置大量红色 Blob ,这些红色 Blob 不能被剥夺或随机分配,而且如果不需要破解它们,也可以使识别代码对于运行该软件非关键他们更有可能将其保留。


  • 更新:重新访问此答案以链接到另一个问题后,我想到了一种实现#2解决方案的简便方法。

    您所需要做的就是通过混淆器运行代码,并让它为向您出售软件的每个人重命名类(我仍然会让他们签署许可协议(protocol),而不仅仅是单击EULA,以便您可以执行下一部分) 。然后,您可以创建一个混淆映射的数据库,当您在互联网上看到泄漏的副本时,您只需要在项目中的任何地方找到一个类,在数据库中查找它,您就会知道是谁泄漏了它,并且知道了您需要什么要求法律赔偿。

    08-17 07:02