使用 public 密钥令牌签署 DLL 程序集
Signing a DLL assembly with public key token
我继承了一个 C# .NET 应用程序,它需要对其中一个 DLL 程序集中的一些路径名字符串进行轻微修改。不幸的是,我没有源代码。
我使用 ILSpy 和 Reflexil 插件进行了必要的修改。当我保存 DLL 时,我被告知原始文件已签名,如果没有签名,新文件将无法运行。新文件现在是 "delay signed".
我可以看到 public 密钥、public 密钥令牌和 Reflexil 的哈希算法。
我是 .NET IL 的新手。我如何使用 public 关键信息来签署已打补丁的 DLL?
我有 Visual Studio 2013,所以可以访问 sn.exe,如果有帮助的话。
正如Luaan上面所说,我想做的事是不可能的。私钥就是 - 私人的。 public 密钥用于验证目的,以确保程序集未被修改。
正如 Luaan 在他的一条评论中所说,删除强名称是一种选择。然而,这对我不起作用,因为有很多依赖项,使该方法不切实际。
作为临时解决方案,我对程序集文件进行了延迟签名,并在注册表中为相关 DLL 禁用了强名称验证。
要禁用强名称验证,请将此项添加到注册表中:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\<filename without extension>,<public key token>
对于 64 位系统,您还需要添加此密钥:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\<filename without extension>,<public key token>
请注意,建议仅出于测试目的禁用强名称验证,因为这可能代表安全问题。
我继承了一个 C# .NET 应用程序,它需要对其中一个 DLL 程序集中的一些路径名字符串进行轻微修改。不幸的是,我没有源代码。
我使用 ILSpy 和 Reflexil 插件进行了必要的修改。当我保存 DLL 时,我被告知原始文件已签名,如果没有签名,新文件将无法运行。新文件现在是 "delay signed".
我可以看到 public 密钥、public 密钥令牌和 Reflexil 的哈希算法。
我是 .NET IL 的新手。我如何使用 public 关键信息来签署已打补丁的 DLL?
我有 Visual Studio 2013,所以可以访问 sn.exe,如果有帮助的话。
正如Luaan上面所说,我想做的事是不可能的。私钥就是 - 私人的。 public 密钥用于验证目的,以确保程序集未被修改。
正如 Luaan 在他的一条评论中所说,删除强名称是一种选择。然而,这对我不起作用,因为有很多依赖项,使该方法不切实际。
作为临时解决方案,我对程序集文件进行了延迟签名,并在注册表中为相关 DLL 禁用了强名称验证。
要禁用强名称验证,请将此项添加到注册表中:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\<filename without extension>,<public key token>
对于 64 位系统,您还需要添加此密钥:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\<filename without extension>,<public key token>
请注意,建议仅出于测试目的禁用强名称验证,因为这可能代表安全问题。