签名DLL
dll 签名
2023-09-14 08:57:06 时间
- 签名DLL 首先需要一个密钥文件,后缀为.snk
- 密钥文件使用sn.exe 创建: sn.exe /k MySingInKey.snk
- sn.exe 工具的具体使用,可以通过 sn.exe /h 或 sn.exe /? 来查阅帮助文档
- 签名自己的DLL
- 打开VS工程,进入工程设置,里面有SingIn(签名)的table
- 选中Sign the assembly,再选择对应的密钥文件即可
- 如果没有创建密钥文件,在这里直接创建密钥
- 打开VS工程,进入工程设置,里面有SingIn(签名)的table
- 签名第三方的DLL
- 如果第三方DLL未签名的话,我们可以使用先用工具ILDASM.exe将该DLL反汇编生成IL文件
- 然后再使用工具ILASM.exe将该IL文件重新编译成C# DLL
- ILASM.exe 支持/KEY命令,在二次编译的时候使用该命令,带上自己的密钥文件,这样就可以保证二次编译出来后的DLL是strong name 的DLL
- 操作示例
- 第三方未签名DLL:c:\MyTest\ThirdTool.dll
- 反编译:
ildasm.exe c:\MyTest\ThirdTool.dll /out=c:\MyTest\MyDasmThirdTool.il
- 带签名再编译:
ilasm.exe c:\MyTest\MyDasmThirdTool.il /key=MySingInKey.snk /output=c:\MyTest\MySigningThirdTool.dll
这样生成后的就是一个带签名的第三方DLL
- 注意事项
- 如果第三方DLL反编译后带resource文件(.resx),那么二次编译的时候记得使用/resource命令带上该resource文件
ilasm.exe c:\MyTest\MyDasmThirdTool.il /resource=c:\MyTest\ThirdTool.resx /key=MySingInKey.snk
- 如果第三方DLL反编译后带resource文件(.resx),那么二次编译的时候记得使用/resource命令带上该resource文件
- 不建议强制签名一个未签名的第三方DLL
- 一旦强制将一个第三未签名的DLL签名后,那么就意味着所有这个第三DLL所依赖的其他DLL也必须都是签名的,即使二次编译成功,运行时也会导致运行时错误。
- 即使当前版本的第三方DLL没有依赖未签名的其他DLL,但不意味着在后续升级版本中不会有此问题。
- 从安全性,版权等方面考虑,我们在开发一个要求签名DLL的项目时,应该慎重选择导入未签名的第三方DLL。
- 其他
- ILDASM.exe 和 ILASM.exe工具的具体使用,可以使用 /? 或者 /h 命令查看帮助文档,系统也自带有对应.chm 使用说明文件
- ILDASM.exe 和 ILASM.exe 不一定在同一个目录下
原文链接:http://blog.csdn.net/u013813838/article/details/52886527
相关文章
- Dll注入技术之劫持注入「建议收藏」
- java tess4j ddl_tess4j jna dll报错,求助
- 计算机dll修复工具,DLL修复工具哪个好?五款修复能力强推荐
- Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
- 运行EasyCVR程序时,提示“缺少api-ms-win-crt-stdio-|1-1-0.dll”该如何解决?
- PE格式:新建节并插入DLL
- Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案
- Unable to load DLL ‘xxx.dll’: 找不到指定的模块。 (Exception from HRESULT: 0x8007007E)详解程序员
- Linux加载DLL:一种新的方法(linux调用dll)
- 如何在Linux中加载DLL文件?(linux加载dll)
- 使用DLL文件在Linux上运行Windows应用程序(dll文件linux)
- MySQL中DLL的作用与应用方法(mysql中dll)
- Oracle DLL路径的解密寻踪(oracle dll路径)
- 里Oracle DLL的位置揭秘(oracle dll在哪)
- 采用Redis缓存极大提高DLL加载效率(redis缓存的dll)
- 用VB生成DLL封装ASP连接数据库的代码
- ASP网站出现msxml3.dll错误80072ee7错误的解决方法
- 解析phpphp_openssl.dll的作用
- VC程序在Win32环境下动态链接库(DLL)编程原理
- C#实现动态加载dll的方法
- ioncube_loader_win_5.2.dll的错误解决方法
- C#实现通过winmm.dll控制声音播放的方法