如何使用其他PFX文件重新签名无源码的已编译.NET DLL
无源码DLL更换PFX证书强签名解决方案
核心思路
.NET强名称签名工具通常依赖SNK密钥文件,因此先将PFX证书转换为SNK格式,再通过「反编译-重新编译」流程给目标DLL打上新的强名称签名。
步骤1:将PFX证书转为SNK密钥文件
打开Visual Studio开发者命令提示符,执行以下命令:
sn -p 你的新证书.pfx 生成的snk文件名.snk
执行时会提示输入PFX证书的密码,输入后即可生成包含私钥的SNK文件。
步骤2:反编译目标DLL为IL代码
使用ildasm.exe工具导出DLL的中间语言代码和资源文件:
ildasm 原DLL文件名.dll /out=导出的IL文件名.il /resource=导出的资源文件名.res
执行后会得到两个文件:.il格式的中间语言代码文件,以及.res格式的资源文件。
步骤3:重新编译并强签名IL代码
通过ilasm.exe重新编译IL代码,同时指定刚生成的SNK文件完成强签名:
ilasm 导出的IL文件名.il /dll /resource=导出的资源文件名.res /key=生成的snk文件名.snk
执行完成后,当前目录会生成重新签名后的新DLL文件。
步骤4:验证签名有效性
用sn.exe验证新DLL的强名称签名是否生效:
sn -v 新生成的DLL文件名.dll
若输出提示「此程序集具有强名称签名」,则操作成功,可将该DLL替换到.NET 4.6项目中使用。
内容的提问来源于stack exchange,提问作者Murf
相关产品推荐
相关产品推荐

