是否可以使用Assembly.LoadFrom重载和Evidence参数来确保程序集是强命名的?我希望能够指定程序集名称,区域性,版本和公钥标记。如果这些信息中的任何一个与组件不匹配,则会导致加载失败。Assembly.LoadFrom - 使用证据超载来验证强名称签名
1
A
回答
0
我发现了另一种方法来做到这一点。
var assemblyName = new AssemblyName(<fully qualified type name>);
assemblyName.CodeBase = <path to assembly>
Assembly.Load(assemblyName);
2
您可以加载它后得到议会的公共密钥 - 如果它成功加载并具有公共密钥,那么它的强名称:
Assembly assembly = Assembly.LoadFrom (...);
byte[] pk = assembly.GetName().GetPublicKey();
更妙的是,检查装配的公钥和版本信息之前加载它:
AssemblyName an = AssemblyName.GetAssemblyName ("myfile.exe");
byte[] publicKey = an.GetPublicKey();
CultureInfo culture = an.CultureInfo;
Version version = an.Version;
如果的getpublickey()返回一个非空值,然后组装成功加载,它有一个有效的强名称。
1
我有办法打破修补System.Windows.Forms.dll的强名称验证。如果我正在使用它,你可以做的事情就不多了。我的诡计需要完全信任。
我所做的就是修补dll,部署修补过的dll,修改它,然后修补加载程序以获取修补过的ngen图像而不是原始图像。我所能做的就是破坏股票的dll。 (我实际测试过这条路,并决定有可能打破别人的软件是一个糟糕的选择。)
我不是说这是个好主意。我说这取决于从Assembly.Load验证签名是一个坏主意。
相关问题
- 1. Boost签名(验证下载)
- 2. 验证名称
- 3. Facebook.Web.Contracts - 强签名无法验证?
- 4. 验证X509证书时验证签名
- 5. SSL证书签名验证
- 6. Twitter名称验证
- 7. 验证名称TextBoxes
- 8. 签名板验证
- 9. C#验证签名
- 10. 验证Jar签名
- 11. XML签名验证
- 12. ECDSA签名验证
- 13. ElGamal签名验证
- 14. 用pem验证签名链
- 15. 为什么Openssl签名验证需要原始文件来验证其签名?
- 16. 错误 - 强名称签名无法验证。当我运行应用程序
- 17. jQuery验证名称= “名称[]” 不工作
- 18. Android:DSA签名 - 签名并验证
- 19. 验证Java签名类签名与OpenSSL
- 20. 正则表达式来验证名称
- 21. 哪个结果验证签名的XML - 核心验证,签名验证和引用验证
- 22. jquery名称验证使用插件
- 23. 如何根据证书主题验证规范名称(通用名称,cn)?
- 24. 承载者未通过身份验证:签名验证失败
- 25. 使用StAX验证数字签名
- 26. 使用openssl验证文件签名dgst
- 27. 使用XADES4j验证XADES签名
- 28. 使用BC验证分离签名
- 29. 无法使用X509Certificate2验证签名
- 30. SAML签名验证使用Python/M2Crypto
您是否延迟签名?如果是这样,这只会在您禁用该组件的强名称验证(sn -Vr)的机器上运行。否则,你在做什么? .NET框架程序集的私钥是否泄露? – 2009-05-01 02:53:33