gpt4 book ai didi

c# - 使用公钥 token 签署 DLL 程序集

转载 作者:行者123 更新时间:2023-11-30 21:57:52 25 4
gpt4 key购买 nike

我继承了一个 C# .NET 应用程序,它需要对其中一个 DLL 程序集中的一些路径名字符串进行轻微修改。不幸的是,我没有源代码。

我使用 ILSpy 和 Reflexil 插件进行了必要的修改。当我保存 DLL 时,我被告知原始文件已签名,如果没有签名,新文件将无法运行。新文件现在“延迟签名”。

我可以使用 Reflexil 查看公钥、公钥 token 和哈希算法。

我是 .NET IL 的新手。我如何使用我必须的公钥信息来签署打补丁的 DLL?

我有 Visual Studio 2013,所以可以访问 sn.exe,如果有帮助的话。

最佳答案

正如Luaan上面所说,我想做的事是不可能的。私钥就是 - 私有(private)的。公钥用于验证目的,以确保程序集未被修改。

正如 Luaan 在他的一条评论中所说,删除强名称是一种选择。然而,这对我不起作用,因为存在许多依赖关系,使该方法不切实际。

作为临时解决方案,我保留了程序集文件延迟签名,并在注册表中为相关 DLL 禁用了强名称验证。

要禁用强名称验证,请将此键添加到注册表中:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\<filename without extension>,<public key token>

对于 64 位系统,您还需要添加此 key :

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\<filename without extension>,<public key token>

请注意,建议仅出于测试目的禁用强名称验证,因为这可能代表安全问题。

关于c# - 使用公钥 token 签署 DLL 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457687/

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