gpt4 book ai didi

c# - 如何保护 .Net exe 免遭反编译/破解

转载 作者:可可西里 更新时间:2023-11-01 08:15:19 27 4
gpt4 key购买 nike

我真的很难过,因为几天前我们推出了在 .Net 4.0(桌面应用程序)中开发的软件。 3天后,它的破解在互联网上可用。我们试图保护软件不受此影响,但不知何故人们逃脱了破解。

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

现在,黑客已经用“return true;”代替了服务器通信。声明(我用 Telrik JustDecompile 检查过)。并且他已经将破解的软件上传到了互联网上。

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

最佳答案

1- How to make sure that .Net application will not get cracked ?



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

2- The hacker now knows my code since he has done the modification. What steps should i take ?



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

3- I read on the internet about - obfuscators . But the hacker knows my code what should i do ?



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

4- Any other Pro tips that i can use to avoid getting the software cracked ?



我见过的唯一可以在任何时间段内远程延迟的复制保护是育碧对刺客信条:兄弟会所做的。他们使用游戏磁盘对关卡进行加密,并且必须在需要时从互联网下载解密 key (这是将二进制文件置于他们手中的方法)。但这并没有永远奏效,最终黑客确实解密了这些级别,并且完全破解了。这种方法正是我所看到的在没有法律参与的情况下需要最长时间才能解决的方法(请参阅底部的第 2 点)

5- I am not sure but can these reflector softwares also decompile the App.Config with sensitive data ?



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

我能看到的防止盗版的唯一真正解决方案是两种选择之一。
  • 这个人永远不会得到你的应用程序,它是从你控制的服务器流式传输的,他们永远不会看到二进制文件。您向他们发送的唯一信息是他们驱动 UI 所需的信息。这是所有 MMO 工作的方法。人们可以对您发送到 UI 的内容进行逆向工程,并模仿您服务器上正在发生的逻辑,但他们永远无法直接看到它在做什么,而且如果您的软件足够复杂,攻击者可能无法支付费用重新创建服务器端代码。这种方法的缺点是您需要托管服务器供您的用户连接,这将是一个重复发生的成本,您需要一种重新解决的方法。通常这种方法被称为“富客户端”或“瘦客户端”,这取决于客户端完成了多少处理以及服务器端完成了多少处理。见 Chapter 22Microsoft Application Architecture Guide, 2nd Edition”。具体来说,我正在描述 figure 4 and 5 中显示的内容
  • 第二个选项是,无论您销售您的软件的是谁,都让他们签署一份不分发软件的法律契约(Contract)(不是 EULA,一份必须由客户亲自签署的实际契约(Contract))。在那个契约(Contract)中,对泄露软件的人处以巨额罚款,然后用购买软件的人独有的指纹来破解你的程序,这样当程序泄露时,你就可以看到是谁做的。 (这是供应商 Hex-Rays 用于其反汇编程序的方法 IDA 。快速谷歌搜索无法找到任何比 6.1 更新的破解版本,它们位于 6.3 上)。这种方法不会阻止盗版,但它可以首先阻止副本被泄露。这还可以让您恢复与首先泄露的程序相关的一些损失成本。一个问题是你需要放置很多指纹并且它们需要很微妙,如果攻击者可以获得程序的两个副本并且可以比较两者之间的文件,他将能够分辨出识别信息是什么然后把他们想要的东西放进去,这样他们就无法分辨出他们是从谁那里得到的。做到这一点的唯一方法是放入很多不能被剥离或随机化的红鲱鱼,如果他们不必努力破解它,也可以使识别代码对运行软件不重要他们更有可能把它留在里面。


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

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

    关于c# - 如何保护 .Net exe 免遭反编译/破解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11711446/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com