我真的很伤心,因为几天前我们推出了在.NET 4.0(桌面应用程序)中开发的软件。 3天后,互联网上有其裂缝。我们试图保护软件,但不知何故人们逃脱了它。

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

现在,黑客已用“返回true”替换服务器通信;声明(我检查了Telrik justdecomile)。他已经上传了互联网上的破解软件。

现在,以下是我的问题:
1-如何确保.NET应用程序不会破解?
2-黑客现在知道我的代码,因为他已经完成了修改。我应该采取哪些步骤?
3-我在互联网上读取 - 混淆器。但是黑客知道我的代码我该怎么办?
4-任何其他专业技巧,我可以用来避免让软件破裂?
5-我不确定,但这些反射器软件也可以用敏感数据分解App.config吗?

有帮助吗?

解决方案

1-如何确保.NET应用程序不会破解?

如果计算机可以运行代码+,黑客可以在比您的权限级别更高的权限级别运行他自己的代码,没有任何可以100%阻止您的应用程序破裂。即使他们只能访问可执行文件但不是目标平台,它们仍然可以逐步逐步和模仿目标平台会做什么并弄清楚如何完成保护。

2-黑客现在知道我的代码,因为他已经完成了修改。我应该采取哪些步骤?

完全重写认证部分,以便他们必须从划痕开始,但它们会再次得到它,这只是一个多长时间的问题。

3-我在互联网上读取了 - 嘟嘟货物。但是黑客知道我的代码我该怎么办?

现在jinni从瓶子里出来,他们有非混淆的代码。除非您大大重写软件,否则您可以执行任何操作,以便他们必须从头开始。 Obfuscateor不会阻止确定的攻击者,他们只能阻止它是将二进制脱离的东西。

4-我可以用来避免让软件破裂的任何其他专业提示?

我所看到的唯一一段时间延迟的唯一一段时间是Ubisoft用刺客的信条做了什么:兄弟会。他们使用游戏盘加密水平,并且必须从互联网下载解密密钥,因为它需要(这是将二进制脱离的双手接近)。但这并没有永远工作,最终黑客确实得到了那些解密的水平,它完全破裂。这种方法只是我看到的时间是在没有法律参与的情况下追溯到最长的时间(见底部的点2)

5-我不确定,但是这些反射器软件也可以用敏感的数据分解app.config?

所有反射器软件需要做的是寻找加载app.config的部分,并读取默认值。有 no 安全的地方,以存储在计算机上的信息上,您无法完全控制。如果它位于计算机上,可以读取。如果可以读取,它可以是反向设计的。


我可以看到的唯一真实解决方案以防止盗版是两个选项之一。

  1. 此人从未获取您的应用程序,它是从控制下的服务器流式传输,他们从未看到二进制文件。您唯一发送它们的是他们需要驾驶UI所需的信息。这是所有MMO工作的方法。人们可以撤消工程师向UI发送的东西,并模仿您在服务器上进行的逻辑,但它们永远不会完全看看它在做什么以及如果您的软件足够复杂,可能不会为攻击者进行费用重新创建服务器端代码。此方法的缺点是您需要为用户连接服务器连接,这将是一种重新传递的成本,您需要一种重新政变的方法。通常,此方法称为“富客户端”或“瘦客户端”,具体取决于客户端的处理方式以及完成服务器端的处理程度。查看第22章 “ Microsoft应用程序体系结构指南, 2nd Edition “。具体地说,我正在描述图4和5

  2. seccond选项是销售软件的人,他们签署了一份法律合同,不会分发软件(不是EULA,实际合同,必须由客户身体签名)。在该合同中,将大量罚款适用于泄露软件的人,然后用针对购买软件的人是独一无二的指纹的程序,以便在程序泄露时,您可以看到谁做了谁。 (这是供应商Hex-rays对其反汇编程序的方法 iDa 。一个快速的Google搜索无法调出任何较新的版本,较新的版本超过6.1,它们在 6.3 )。此方法不会停止盗版,但它可能会阻止副本首先泄露。这也让您恢复了与第一次泄露的程序相关的一些损失成本。一个问题是,如果攻击者可以获得两个程序的副本,并且可以将文件进行比较,因此需要放置很多指纹,并且他们需要微妙地进行微妙的,并且可以将文件进行比较

这两者,他将能够讲述什么是识别信息,只是把他们想要的东西放在那里,所以他们不能告诉他们从中得到谁。这样做的唯一方法就是很多红鲱鱼,不能剥离或随机地剥离或随机化,也使识别代码对运行软件来说是非关键的,如果他们不必工作来破解它他们更有可能离开它。


更新:重新审视此答案后,将其链接到另一个问题,我想到了实现#2解决方案的简单方法。

所有你需要做的是通过obfuscateor运行代码,让它为您销售软件的每个人重命名您的类(我仍然会使他们签署许可协议,而不仅仅点击EULA,以便执行下一部分)。然后你制作一个混淆映射的数据库,当你看到互联网上的泄露的副本时,你只需要在项目中的任何地方找到一个类,在你的数据库中查找它,你会知道谁泄露它并知道你需要谁追求法律损害。

其他提示

1:你不能。你可以混淆,但是阻止的唯一方法是:不要给任何人exe。看看这个游戏公司花了多少;他们也没有解决它。

2:混淆会有助于一点,尽管它是混淆器和脱孔器之间的军备竞赛

3:太迟回去并撤消那个,但混淆会在将来的一点慢下来

5:app.config通常非常可读;你不多你可以在这里做;如果键在应用程序中,则加密将速度减慢速度,因此可以获得

如果其他人说,如果他们可以访问您的代码,那么您可以对确定的破解者做任何事情。混淆将为懒惰的破解者提供一些保护。 dotfuscator 内置于VS中,您可以尝试一下。请记住,有一个真正的成本来混淆。它将使您(支付)客户发送给您的堆栈迹线的问题很困难。

最好的答案是你必须接受的最好的答案。你不能。只要专注于为您的用户提供伟大的用户体验,并使许可证非常容易。您的应用程序可以破解的可能性并不意味着选择构建桌面应用程序是一个坏主意。海盗将是海盗,诚实的客户将是诚实的客户。

显然有足够的商业或智力价值破解您的应用程序,以便有合理技能的人差不多尝试。

仅您将赢得这场战争的方式是使用商业软件保护包。

如果您尝试自己实施复制保护,您将成为一个轻松的目标来再次攻击。

如果您编写业务应用程序,您也不会编写存储数据的数据库引擎。您还应该不写下申请的裂缝预防代码。这不是解决客户的问题,它需要一个巨大的技能设置。

您可以做的是,除了代码混淆是基于硬件的代码解密的机制,请记住以下方案,将其HWID发送到服务器,识别复制/所有者/安装号码/ etc with that hwid,并且您将基于该HWID的Dealiption键回复该特定二进制(以前提到的指纹),因此Hacking将更加困难,因为对于完全功能,他们需要对服务器的有效访问权限,因此他们不能使用该软件。

欢呼,

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top