gpt4 book ai didi

obfuscation - 防止某人加载我的托管程序集的最简单方法?

转载 作者:行者123 更新时间:2023-12-04 11:20:30 25 4
gpt4 key购买 nike

.Net security noob here...阻止其他人加载我的程序集的最简单方法是什么?

背景:虽然我真的在寻找“足够好”的保护(有足够的时间/金钱/聪明,有人可以成功破解、破解和攻击),但这似乎应该已经是一个已解决的问题,而我只是想念它。

这是我(认为)我知道的:

  • 虽然强命名可以用作安全层,但它不是
    根据this microsoftdocumentation,必然是这样的(请参阅警告:不要依赖强名称
    安全。它们仅提供唯一身份。)

    在那^注意我遇到了我无法做到的情况
    加载第三方程序集(假设我认为是),因为他们做了
    不签署他们的大会,但我的所有人都签署了。所以我不得不
    ildasm 他们的大会,用我们自己的 snk 签名,然后 ilasm 回来)
    为了使用他们的图书馆。所以,强命名似乎并不像
    对我来说很好的安全机制。 然而 ...简单的检查怎么样,
    在代码中,验证调用程序集是否使用 my
    公钥 token ?这足够有效吗?
  • 如果不应该将强命名用于我想要做的事情
    完成,正在实现 Authenticode 数字签名检查
    在 dll 上更好的路由(似乎 wintrust.dll 可以提供帮助
    有了这个)?

    我一直在使用几个供应商的混淆工具
    许多都带有许可和各种东西。我可能会
    使用一点混淆来隐藏一些敏感部分,
    但是我仍然希望有一个机制来防止
    有人从加载我的敏感库,而不必使用
    字符串和代码加密等功能,通常附带
    性能(和其他)成本。

  • 回到这个问题,阻止某人加载我的程序集的最简单方法是什么?

    最佳答案

    事实上,您不能 100% 保证您的程序集不会被下载和以不良方式使用。但一些措施可以帮助您:

  • 签署您的安装包 (msi)。你需要一个 SSL
    证书。用户将在安装过程中看到下载文件的发布者。
    如果您的安装包被修改 - 签名将被破坏
    安装时用户会看到该应用来自未知
    出版商或除您以外的其他出版商。
  • 强大的程序集命名允许您防止库替换到另一个“坏”库。让我们考虑下一个场景:您将带有库 A 的应用程序部署到某个服务器,或者用户将您的应用程序安装到他/她的计算机上。如果没有强名称,库 A 或任何其他库可以被某些代码替换或修改到另一个版本。例如,这个新版本可以将所有用户密码发送到某个地方或执行其他恶意操作。如果在下载时更改了一个库。Net 将引发强名称验证异常。因此,您的应用程序将被破坏。恶意代码应重新编译所有应用程序库以使应用程序正常工作。这更难。
  • 混淆也是一件非常重要的事情,它允许非常困难甚至不可能理解汇编内部发生的事情(代码重命名、字符串加密等)。
  • 如果您有一些非常关键的智能代码,最好将其重写为 native (C/C++) 代码。
  • 如果您的应用程序是移动或桌面应用程序并且它发出后端请求,您可以将重要代码移动到服务器端。
  • 关于obfuscation - 防止某人加载我的托管程序集的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41539169/

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