如何保护.Netexe不被反编译/破解前几天我们推出了program)开发软件,真的很难过。3天后,可以在Internet上找到它的破解版。我们试图保护软件免受此影响,但不知何故人们却侥幸逃脱。场景如下:当应用程序首次启动时,它与Web服务器通信并检查用户传递的凭据。如果凭据正确,软件会将值保存在注册表中,将MachineID发送回服务器并将其存储在数据库中。现在,黑客已经用“returntrue”替换了服务器通信。声明(我用TelrikJustDecompile检查过)。他把破解的软件上传到了网上。现在,这是我的问题:1-我怎样才能确保.Net应用程序不会被破解?2-黑客现在知道了我的代码,因为他已经完成了修改。我应该采取什么步骤?3-我在网上看到-混淆器。但是,如果黑客知道我的代码怎么办?4-我可以使用任何其他专业技巧来避免软件破解?5-我不确定,但这些反射器软件是否也可以使用敏感数据反编译App.Config?1-如何确保.Net应用程序不会被破解?如果计算机可以运行您的代码+黑客可以以比您更高的权限级别运行他自己的代码,那么就没有什么100%可以防止您的应用程序被破解。即使他们只能访问可执行文件而不能访问目标平台,他们仍然可以通过并模仿目标平台的行为,并弄清楚保护是如何完成的。2-黑客现在知道了我的代码,因为他已经完成了修改。我应该采取什么步骤?完全重写认证部分,让他们不得不从头开始,但他们会重新获得,只是多长时间的问题。3-我在网上看到-混淆器。但是,如果黑客知道我的代码怎么办?因为他们有非混淆代码,所以jinni已经出局了。除非您完全重写软件以便他们必须从头开始,否则您无能为力。混淆器不会阻止坚定的攻击者,他们只能阻止它从他们手中夺走二进制文件。4-我可以使用任何其他专业提示来避免软件被破解?我见过唯一被远程延迟任何时间的版权保护是育碧对《刺客信条:兄弟会》所做的。他们用游戏磁盘加密了它的关卡,并且在需要时不得不从互联网上下载解密密钥(这就是使二进制文件无法访问的原因)。但这并没有永远奏效,最终黑客们破译了关卡,他们彻底破解了它。这种方法正是我认为在没有法律介入的情况下需要最长的时间才能达到的方法(见底部的第2点)5-我不确定,但这些反射器软件是否也可以反编译具有敏感数据.Config的应用程序?反射器软件需要做的就是查找加载App.config的部分并读取默认值。在您无法完全控制的计算机上,没有安全的地方可以存储信息。如果它在电脑上,它是可以读取的。如果可以读取,则可以对其进行逆向工程。我能看到的防止盗版的唯一真正解决方案是两种选择之一。这个人永远不会得到你的应用程序,它是从你控制的服务器流式传输的,他们永远不会看到二进制文件。您可以向他们发送的唯一方式是他们需要驱动UI的信息。这就是所有MMO的运作方式。人们可以对您发送到UI的内容进行逆向工程,并模仿服务器上发生的逻辑,但他们永远无法直接看到它在做什么,而且如果您的软件足够复杂,攻击者可能无法做一点。重新创建服务器端代码。这种方法的缺点是您需要托管服务器供您的用户连接,这将是一项经常性成本,并且您需要一种重新启动的方法。通常这种方法被称为“富客户端”或“瘦客户端”,这取决于在客户端完成了多少处理以及在服务器端完成了多少。请参阅“Microsoft应用程序体系结构指南,第2版”的第22章。具体来说,我描述的是图4和图5中显示的内容。第二种选择是让您销售软件的任何人签署不分发软件的合法合同(不是EULA,这必须由客户签署实际合同来完成)).在那份合同里,对泄露软件的人处以巨额罚款,然后用购买者的唯一指纹对你的程序进行加密,这样当程序泄露时你就可以知道是谁干的。(这是厂商Hex-Rays用于反汇编IDA的方法。快速谷歌搜索没有找到任何高于6.1的破解版本,它们在6.3中)。这种方法不会阻止盗版,但它可能首先防止副本泄露。这也使您能够收回与最初泄露的程序相关的一些损失成本。一个问题是你需要放置很多指纹并且它们需要很微妙,如果攻击者可以获得程序的两个副本并且可以比较两者之间的文件,他将能够分辨出什么是识别信息并且只是把他们想要的东西放进去,这样他们就不知道他们是从谁那里得到的。实现这一目标的唯一方法是放入大量红鲱鱼,这些红鲱鱼不仅可以被剥离或随机化,而且还可以使识别代码对运行软件不重要,如果他们不必努力破解它,他们'更有可能离开它。更新:在重新访问此答案以链接到另一个问题后,我想到了一种实现#2解决方案的简单方法。您需要做的就是通过混淆器运行您的代码,并让它为您向其销售软件的每个人重命名您的类(我仍然会让他们签署许可协议而不是单击EULA,以便您可以执行下一部分)。然后创建一个混淆图的数据库,当你在网上看到泄露的副本时,你只需要在项目中的任何地方找到一个类,在数据库中查找它,你就会知道是谁泄露了它并知道它是什么你需要谁追究法律损害赔偿。1:你不能。你可能会混淆,但防止这种情况的唯一方法是:不要给任何人exe。看看公司在这方面花了多少钱;他们也没有修好。2:混淆会有所帮助,尽管这是混淆器和反混淆器之间的军备竞赛3:撤回和撤消为时已晚,但混淆会在未来减慢它们的速度5:一般的app.config非常可读;你在这里做的不多;如果密钥在您的应用程序中并且因此可以获取,那么加密只会减慢密钥的速度正如其他人所说,如果他们可以访问您的代码,那么对于坚定的破解者来说,您实际上无能为力。混淆将对惰性cookie提供一些保护。Dotfuscator内置于VS中,您可以尝试一下。请记住,混淆是有实际成本的。从您的(付费)客户发送给您的堆栈跟踪调试问题将非常困难。最好的答案是你必须接受的那个。你不能。只需专注于为您的用户提供出色的用户体验,并让许可变得非常简单。您的应用程序可能被破解并不意味着选择构建桌面应用程序是个坏主意。盗就是盗,老实客还是老实客。显然,有足够的商业或知识价值来破解您的应用程序,具有合理技能的人几乎会立即尝试。赢得这场战争的唯一方法是使用商业软件保护包。如果您尝试自己实施复制保护,您将再次容易受到黑客攻击。如果您编写业务应用程序,则不会编写存储数据的数据库引擎。您也不应该为您的应用程序编写防破解代码。这不是解决客户问题的方法,要做到正确需要很多技巧。除了代码混淆你可以做的是,添加一个基于hardwareID的代码解密机制,记住以下场景,将他们的HwID发送到你的服务器,你用它来识别copy/owner/installnumber/等那个HwID,你回复使用基于特定二进制文件的HwID的解释密钥(带有前面提到的指纹),因此黑客将更难攻击,因为要获得全部功能,他们需要对您的服务器进行有效访问,否则他们将无法使用那个软件。干杯,以上是C#学习教程:如何保护.Netexe共享的所有内容不被反编译/破解。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
