gpt4 book ai didi

.net - 欺骗 .net 程序集并讨论以前发布的注释

转载 作者:行者123 更新时间:2023-12-02 03:51:45 27 4
gpt4 key购买 nike

我从欺骗中搜索了 proctecting .net 程序集并找到了 this post很有用。但是,我在帖子中看到了一个非常明显的矛盾。有一点表明,如果用户是同谋,强名称就没有用:

But if the user is complicit in the spoofing (which would be the case if he is trying to cheat), then code signing will be no more than a speed bump and provides no real protection. Certainly, Strong Names don't provide protection comparable to e.g. PunkBuster.

几行之后,作者陈述了完全相反的事情:

Then, when you add a reference to your signed assembly, if someone tries to put a different assembly in with the same assembly name (not the fully qualified one, just the name without version, hash and public key) and same type name, the CLR fill fail when trying to load the type, indicating that it couldn't find it; the type is resolved using the fully-qualified assembly name, along with the namespace and type name.

所以:

1) 这是自相矛盾还是我失去了什么?第一段中的作者是否在谈论禁用强名称验证并且不会重新启用的情况?

此外,令人惊讶的是:

If the attacker has the ability to modify the strong name of an assembly that you referenced, then they can just as easily modify your assembly and all others involved in the execution

2)如何修改已部署程序集(例如 DLL)的强名称?

最佳答案

这里似乎没有矛盾——第二个引号正确地表明,简单地将引用的程序集替换为另一个包含同名类型、具有不同(或没有)强名称的程序集将会失败,因为这个程序集将与引用文献中指出的不匹配。从本质上讲,这是系统保护自身免受用户无意修改的方式。

但是,如果修改的目的(即用户是同谋,根据第一个引用),那么有一些简单的方法可以加载修改后的程序集,例如通过禁用强名称检查(这将允许具有无效签名的程序集,例如由于它已被修改)仍然可以加载,或者通过更改程序集引用本身来加载。

在回答您的第二个问题时,虽然标准程序集签名工具 sn 没有将程序集的强名称替换为另一个选项的选项,但它当然是可能的,简短的搜索应该可以找到能够这样做的各种工具。 (事实上​​ ,使用简单的十六进制编辑器就可以很容易地做到这一点)。

关于.net - 欺骗 .net 程序集并讨论以前发布的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14160644/

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