gpt4 book ai didi

.net - 加密.Net应用程序和程序集

转载 作者:行者123 更新时间:2023-12-04 13:25:14 29 4
gpt4 key购买 nike

我有一个加密/复制保护问题。

我正在为使用加密狗的公司编写应用程序。请不要告诉我软件保护是没有用的,或者我应该让它自由地飞向空中,或者我花任何时间这样做都是浪费;这不是关于软件保护有效性的哲学问题,更像是一个使用方法。

据我了解,破解受加密狗保护的软件的第一步是从代码中删除对加密狗的所有调用(即修补可执行文件)。同样据我了解,我可以在.NET中创建“强名称”以保护应用程序和程序集,如in this MSDN article所述。

强大的命名足以确保我的应用程序不容易打补丁吗?还是我需要使用某种加密库?如果我需要使用一个库,我可以从哪一个库或从哪里获得有关设置的信息?

当然,下一步是将重要的算法放在加密狗上。我意识到这些只是专用 cookies 的减速带,但是随着我们市场份额的增长,减速带将帮助我们达到不那么强烈地感觉到海盗袭击的地步(我希望)。

谢谢!

最佳答案

强烈建议使用汇编语言,以防止受到控制计算机的攻击者的侵害。从msdn entry on delay signing:

The following example turns off verification for an assembly called myAssembly.dll.

sn –Vr myAssembly.dll



强名的设计目标是提供名称唯一性,并保护用户(而非发布者)免受攻击者的侵害。如果用户想禁用所有强名称检查,或者甚至剥夺您的签名并使用自己的 key 重新签名该程序集,那么从技术上讲,没有什么可以阻止他这样做。

仅从加密文件加载程序集也不是很有用,因为解密代码本身无法加密,因此很容易成为逆向工程的目标。

如其他海报所述,您正在寻找的是 混淆。您可能已经有了这样的工具:PreEmptive Solutions的 Dotfuscator.社区版附带了Visual Studio(至少在2005年和2008年提供)。微软还拥有自己的“ Software Licensing and Protection Services”产品。

但是,混淆存在一些技术缺点:
  • 可能会使您的构建过程复杂化。
    您需要一个通透的和一个
    混淆构建,因为后者
    是不可调试的。
  • 我喜欢有一个针对意外异常的错误对话框,用户可以单击“复制详细信息”,并向我发送包含一些技术信息(包括堆栈跟踪)的邮件。但是,通过混淆,您可以忘记获得任何有用的东西
    来自Exception.StackTrace
  • 如果您的代码使用了reflection,则
    事情很有可能会发生
    中断混淆的版本,因为不会保留内部类型和成员名称。
  • 关于.net - 加密.Net应用程序和程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/494211/

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