签名DLL
- 签名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的更多相关文章
- C# 带签名dll破解
首先申明,本文只是从技术的角度来分析下怎样破解带签名的C#写的dll文件.大家如有遇到收费的软件或类库还是应该去购买正版,程序员何苦为难程序员呢. 不带签名的破解 不带签名的dll文件的破解很简单,通 ...
- C# 给主程序签名及第三方dll强签名操作
1.给主程序添加签名 添加完成后会自动生成一个*.pfx文件. 2.给第三方程序添加强签名方法: 本文以WAPIWrapperCSharp.dll为例,使用vs Tools下的工具命令 ...
- 给主程序签名及第三方dll强签名
给主程序添加签名 添加完成后会自动生成一个*.pfx文件. 给程序添加强签名方法: 本文以Quartz.dll为例,使用vs Tools下的工具命令. 打开命令工具是这个样子, ...
- net dll 重新签名
已经有强签名的dll或exe程序无法引用无签名的dll,这时候就需要对dll进行签名,签名的步骤如下: 为没有源码的DLL文件添加强名称 如果项目中引用了其他没有源码的dll文件,并且此dll文件是没 ...
- makecert 制作数字证书 给DLL加一个数字签名
声明:文章整理自互联网 我仅需要给dll添加(替换)一个签名,所以我只看了第一步和第三步,其余的部分我没有测试,不能保证内容的是否正确. 看了很多关于DLL加签名的教程 大多是错误的 完全无法正常走下 ...
- 为C# as 类型转换及Assembly.LoadFrom埋坑!
背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...
- Microsoft.Net中数字签名技术
概 述:本文以Microsoft.Net中创建签名的CAB文件为例,说明如何创建签名文件,从而使你的代码能够安全的在INTERNET上公布.希望能起到抛转引玉的作用. keyword:数字签名,Act ...
- windows服务参考
dll文件 aaclient.dll 何时何地都可以访问客户端 accessibilitycpl.dll 轻松访问控制面板 acledit.dll 访问控制列表编辑器 aclui.dll 安全描述符编 ...
- C# 动态修改dll的签名 以及修改引用该dll文件的签名
在读取RedisSessionStateProvider配置 提到用mono ceil 来修改程序集以及它的签名,里面GetPublicKey 和GetPubliKeyToken 方法里面那个字符串的 ...
随机推荐
- debian8安装harbor
这里的系统版本是debian8.8,harbor版本为1.1.2. 1.安装docker-ce 1.1.Install packages to allow apt to use a repositor ...
- phpredis用法笔记
项目中用到redis集群, 发现phpredis对集群,分布式是有支持的.翻译下相关资料备用. redis扩展地址:https://github.com/phpredis/phpredis, 看到如下 ...
- 解题:POI 2007 Driving Exam
题面 有点意思的题 从一个位置$i$出发可以到达每一个位置即是从$1,n$出发可以到达$i$.然后有了一个做法:把图上下反转后建反图,这样就可以求从一个点$i$到达左右两侧的花费$dp[i][0/1] ...
- navicat执行大容量的.sql文件时的设置
如果有主外键关联等,执行报错,则去掉中间的对勾保留第三个对勾试试.第三个对勾 是 手动提交(不自动提交,估计是全部导入到数据库中之后再一起提交,而不是导入一条sql语句就提交一次) 如果同时不勾选第2 ...
- P1392 取数
P1392 取数 题目描述 在一个n行m列的数阵中,你须在每一行取一个数(共n个数),并将它们相加得到一个和.对于给定的数阵,请你输出和前k小的取数方法. 说明 对于20%的数据,n≤8 对于100% ...
- Hadoop生态圈-Hbase的协处理器(coprocessor)应用
Hadoop生态圈-Hbase的协处理器(coprocessor)应用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- python实现域账号登陆
需求:公司的网路比较变态,每天到了24点自动断开,为了避免一台测试机断网,用python做了一个自动登录 原理:时间到了24点的时候,每隔10秒检测是否可以ping通www.baidu.com,如果p ...
- VS2010 中更改项目名称
Time.vcxproj修改项目名称,主要是通过以下几个步骤就能完成: 修改解决方案的名称. 修改解决项目名称. 修改项目的程序集名称和默认命名空间 替换整个项目或解决方案中的出现该名称的地方. 修改 ...
- 2015/12/14 Python网络编程,TCP/IP客户端和服务器初探
一直不是很清楚服务器的定义,对于什么是服务器/客户端架构也只有一个模糊的感觉.最近开始学习,才明白一些什么服务器和客户端的关系. 所谓的服务器,就是提供服务的东西,它是一个硬件或者软件,可以向一个或者 ...
- Linux基础实验
过滤,管道与重定向 过滤 管道 重定向 运维常用 给某目录设置权限 sudo chmod -R /var/www/html/