gpt4 book ai didi

.net - 如何保持 .NET 程序逻辑(合理地)保密?

转载 作者:行者123 更新时间:2023-12-04 18:47:40 26 4
gpt4 key购买 nike

对,我说的是桌面应用程序中的许可证验证代码,例如一种方法bool ValidateLicense(string licenseCode) .当然,任何保护方案都可以由熟练且坚定的破解者进行逆向工程。但是,我想防止任何具有一些基本编程知识的人都可以在几分钟内使用 Reflector 构建一个注册机。

可能的方法

  • 混淆视听。我的理解是混淆会导致性能开销,并可能阻碍(合法的)调试。那么是否有工具允许仅对选定的方法进行混淆?
  • 将方法移动到生成的程序集或非托管 DLL。但这不是简单地替换 DLL 的邀请吗?任何想法如何防止这种情况(阅读:让攻击者更难)?
  • 其他?

  • PS:问题明显与 Protect .NET code from reverse engineering?有关试图把那里的想法付诸实践

    更新

    1. 第一个混淆步骤肯定是重命名验证方法。 (谢谢,乔纳森)

    2. 假设应用程序使用 Win32 API 方法,可以通过非托管 DLL 重新路由调用,从而使其成为应用程序的一个组成部分。摆弄方法签名(例如更改名称、交换参数)会使这一点变得不那么明显。你认为先天的缺点是合理的吗?

    到 3. 不分发验证方法属于这里。将其保存在您的服务器上并远程调用,即使用在线验证(谢谢,David Hedlund)

    最佳答案

    Eazfuscator让您仅在 Release 中混淆您的代码,我们使用它不会感到任何性能问题。它也可以让您混淆选定的方法。请注意,公共(public)方法不能被混淆。

    像您的 ValidateLicense 这样的任何功能都可以通过一个好的反射器轻松修改,在第一行插入一个 return true :( 我向您推荐这篇关于程序集中代码注入(inject)的文章:http://www.codeproject.com/Articles/20565/Assembly-Manipulation-and-C-VB-NET-Code-Injection

    您应该对您的程序集进行签名以避免修改,但是... 也可以使用适当的工具删除签名:http://www.nirsoft.net/dot_net_tools/strong_name_remove.html

    抱歉,在 .Net 中没有任何技巧可以避免逆向工程,你只能让事情变得更难。 (例如,不要命名你的函数 ValidateLicense 并使你的验证逻辑有点神秘)

    关于.net - 如何保持 .NET 程序逻辑(合理地)保密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11555308/

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