- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从欺骗中搜索了 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/
我是 firebase 的新手,我正在尝试分页查询。我喜欢有一个“下一个”和“上一个”按钮。我的下一个按钮工作正常,我的问题是单击上一个 引用:https://firebase.google.com/
抱歉,标题这么蹩脚,但我只是不知道该放什么,希望你能理解。另外,我不知道以前是否有人问过类似的问题,因为我不知道合适的关键字 - 因此也无法用谷歌搜索。 基本上...在查看preg_match_all
我想在 TFS 中 check out 一个检入文件的先前版本。我可以轻松获得特定文件的变更集 ID 列表,但无法弄清楚如何 checkout 以前的版本。 我目前的代码: var workspace
我想使用 @FunctionalInterface来 self 代码中的 Java 8,但我希望能够将生成的类文件与 Java 6 一起使用。我认为我应该将源版本设为 1.8 , 目标版本为 1.6
自从 versions 被删除以来,我一直无法找到安装以前版本软件的方法。命令并点击 Homebrew。我在 2008 Mac Pro (3,1) 上运行 macOS 10.14.3 (Mojave)
当我开始当前的项目时,App Store 中已经有一个应用程序。此应用程序仅适用于 iPhone。 我的第一个任务是测试和构建一个也可以在 iPod Touch 上运行的版本。 大约 3 周前,App
我在 GitHub 上有一个曾经是 fork 的 repo,但现在不是了,因为我已经删除了原始项目的任何痕迹并开始了一个同名的新项目。 但是,GitHub 仍然表示该项目是 fork 的。有什么方法可
我是一名优秀的程序员,十分优秀!