signtool对EXE进行签名
文件签名工具使用 Authenticode 数字签名对可移植可执行 (PE) 文件(.dll 或 .exe 文件)进行签名。可以对多文件程序集中包含的某个程序集或个别的文件进行签名。如果要分发某个程序集,则应该对该程序集而不是对个别文件签名。不指定任何选项运行 Signcode.exe 将启动帮助签名的向导。
文件签名工具仅随 .NET Framework SDK 1.0 和 1.1 版一起提供。在较新的 .NET Framework SDK 版本中,请改用签名工具 (SignTool.exe) 实用工具。
signcode [options] filename | assemblyname
参数
| 参数 | 说明 |
|---|---|
|
filename |
要签名的 PE 文件的名称。 |
|
assemblyname |
要签名的程序集的名称。此文件必须包含程序集清单。 |
| 选项 | 说明 |
|---|---|
|
-$authority |
指定证书的签名权限,必须为 individual 或 commercial。默认情况下,Signcode.exe 使用证书的最高权限。 |
|
-aalgorithm |
指定签名的哈希算法,必须为 md5(默认值)或 sha1。 |
|
-c file |
指定包含编码软件发布证书的文件。 |
|
-cn name |
指定证书的公共名。 |
|
-i info |
指定获得有关内容的更多信息的位置(通常为 URL)。 |
|
-j dllName |
指定一个 DLL 的名称,该 DLL 返回用于创建文件签名的已验证属性数组。通过重复 -j 选项可以指定多个 DLL。 |
|
-jp param |
指定为前述 DLL 传递的参数。例如:-j dll1 -jp dll1Param。此工具只允许每个 DLL 有一个参数。 |
|
-kkeyname |
指定密钥容器名。 |
|
-kykeytype |
指定密钥类型,必须为 signature、exchange 或一个整数(如 4)。 |
|
-n name |
指定表示要签名的文件内容的文本名称。 |
|
-p provider |
指定系统上的加密提供程序的名称。 |
|
-r location |
指定注册表中证书存储区的位置,必须为 currentuser(默认值)或 localmachine。 |
|
-s store |
指定包含签名证书的证书存储区。默认为 my 存储区。 |
|
-sha1thumbprint |
指定 thumbprint,它是包含在证书存储区中的签名证书的 sha1 哈希。 |
|
-sp policy |
设置证书存储区策略,必须为 spcStore(默认值)或 chain。如果指定 chain,则验证链中的所有证书(包括自签署证书)都将被添加到签名中。如果指定 spcStore,则受信任的自签署证书将不与验证链中添加到签名的证书包括在一起。 |
|
-spc file |
指定包含软件发布证书的 SPC 文件。 |
|
-t URL |
指示位于指定 http 地址的时间戳服务器将为该文件创建时间戳。 |
|
-tr number |
指定成功前试验时间戳的最多次数,默认为 1。 |
|
-twnumber |
指定两次数据戳试验之间的延迟(以秒为单位)。默认为 0。 |
|
-v pvkFile |
指定包含私钥的私钥 (.pvk) 文件名。 |
|
-x |
为文件创建时间戳,但不创建签名。 |
|
-y type |
指定要使用的加密提供程序类型。 加密提供程序中实现了加密标准和算法。有关默认提供程序类型的列表,请参见 Platform SDK 中的“Microsoft 密服务提供程序”。 |
|
-? |
显示该工具的命令语法和选项。 |
若要使用发行者证书 (SPC) 文件创建签名,如果私钥在 PVK 文件中,则必须指定 -spc 和 -v 选项。如果私钥在注册表密钥容器中,则必须指定 -spc 和 -k 选项。如果要使用 SPC 文件为文件创建签名,应使用证书创建工具和软件发行者证书测试工具创建 SPC 文件。
下面的命令使用 XYZ.spc 软件发行者证书和注册表密钥容器 XYZ 中的私钥来对 XYZ.exe 进行签名。
signcode /spc XYZ.spc /k XYZ XYZ.exe
下面的命令使用 myCertificate.spc 中的证书和 myKey.pvk 中的私钥对程序集 myAssembly 进行签名。
signcode /spc myCertificate.spc /v myKey.pvk myAssembly
数字证书,真是个神奇的东西,可以保证软件不被修改,可以表明文件的发布日期,最重要的,可以很大程度的减少杀毒软件的误报,当然,这就要使用可信任的机构颁发的证书了。
现在要说的不是申请证书,而是如何制作自己的证书。
1.安装windows sdk
生成证书和签名工具都包含在里面,Visual Studio应该都有自带了,以下内容中使用的工具都可以在C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin里面找到
2.创建 X.509 证书
MSDN对Makecert.exe(证书创建工具)的介绍:
证书创建工具生成仅用于测试目的的 X.509 证书。
它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。
此工具还将密钥对与指定发行者的名称相关联,并创建一个 X.509 证书,该证书将用户指定的名称绑定到密钥对的公共部分。
使用这个命令行创建证书:
Makecert -sv abc.pvk -r -n “CN=XXX公司” abc.cer
-sv abc.pvk创建一个密钥文件,来保存私钥,创建时需要输入一个密码。
3.创建发行者证书
MSDN对Cert2spc.exe(软件发行者证书测试工具)的介绍:
发行者证书测试工具通过一个或多个 X.509 证书创建发行者证书 (SPC)。
Cert2spc.exe 仅用于测试目的。
可以从证书颁发机构(如 VeriSign 或 Thawte)获得有效的 SPC。
使用下面的命令行创建发行者证书:
Cert2spc abc.cer abc.spc
4.导出pfx证书文件
使用pvk2pfx.exe工具从pvk文件中导出pfx文件:
pvk2pfx -pvk abc.pvk -pi mypassword -spc abc.spc -pfx abc.pfx -f
把"mypassword "密码替换为第二步时输入的密码
5.对自己的软件签名
使用signtool.exe进行签名,MSDN对SignTool.exe(签名工具)的介绍:
签名工具是一个命令行工具,用于对文件进行数字签名,验证文件和时间戳文件中的签名。
如果要对abc.exe进行签名:
signtool sign /f abc.pfx /p mypassword abc.exe
把其中的密码替换为自己的密码。
6.对自己的软件加盖时间戳
可以使用WoSign提供的时间戳服务:http://timestamp.wosign.com/timestamp
signtool timestamp /t http://timestamp.wosign.com/timestamp abc.exe
如果上面的步骤都正确,那么结果就是这样的:

签名之后,自己的软件瞬间就变的专业了有木有!
当然,这样的签名只是自慰罢了,没有什么实际用途,真正有用的证书还是要去专业机构申请的。。
signtool对EXE进行签名的更多相关文章
- SignTool.exe(签名工具)
水漂收集 -- SignTool.exe(签名工具) =============C#.Net 篇目录============== 签名工具是一个命令行工具,用于用证书对文件进行数字签名,验证文件和时间 ...
- [工具推荐]004.EXE签名工具SignTool使用教程
数字证书,真是个神奇的东西,可以保证软件不被修改,可以表明文件的发布日期,最重要的,可以很大程度的减少杀毒软件的误报,当然,这就要使用可信任的机构颁发的证书了. 现在要说的不是申请证书,而是如何制作自 ...
- 让c#的exe只要被修改就无法运行,支持混淆和数字证书
原文:让c#的exe只要被修改就无法运行,支持混淆和数字证书 首先用sdk的sn工具或者makecert工具生成公钥和密钥,推荐makecert,做自己的证书,我做了一个受信任的根证书放在受信任的根证 ...
- 使用 Visual Studio 对exe文件进行数字签名
使用"VS2013 开发人员命令提示"运行签名工具.转到要签名的文件目录运行命令: signtool sign /a 要签名的程序.exe signtool 的相关命令 Usage ...
- 如何使用SignTool签署应用程序包
备注 有关签署UWP应用程序包的信息,请参阅使用SignTool签署应用程序包. 了解如何使用SignTool对Windows应用商店应用包进行签名,以便部署它们.SignTool是Windows软件 ...
- Android对应用程序签名
1.首先签名是个什么东西. 应用程序签名就是为你的程序打上一种标记,来作为你自己的标识. 2.为什么要进行数字签名 这是Android系统的要求,每一个应用程序必要要经过数字签名才可能安装到系统中,能 ...
- Android打包签名
Ⅰ.用jdk和sdk自带工具打包签名 a.把jdk下的keytool.exe和jarsigner.exe所在目录(两个工具在同一目录) 添加到环境变量path 1)新建环境变量package,pack ...
- 反编译android应用,降低权限去广告及重新签名
功能:反编译apk降低权限及重新签名 场景:很多软件,申请了一些可能会导致付费(如,发短信,呼叫号码)或者泄漏隐私(如:读取通讯录)的权限,让人很不放心.比如:飞信.墨迹天气.iReader等都在此列 ...
- APK重新签名方法
Android使用SHA1-RSA算法进行签名.可通过eclipse插件进行,可以通过keytool和jarsigner 用命令行执行,也可以在源码下进行签名. 第一种:通过使用eclipse进行签名 ...
随机推荐
- 关于职位的解释---转CSDN的文章
摘要我在IT职场打滚超过15年了,从小小的程序员做到常务副总.相对于其它行业,IT职场应该算比较光明的了,但也陷阱重重,本文说说我的亲身体会,希望大家能在IT职场上战无不胜! 通用法则 法则1:忍耐是 ...
- 在 CentOS 7 中安装并使用自动化工具 Ansible
Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于Chef和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端.它使用SSH来和节点进 ...
- [Js]评分星星
效果: 鼠标移到星星上,这颗星星及之前的全亮,提示文字出现,根绝星星数量显示不同文字,移出灭掉,文字消失 思路: 1.定义一个数组,来存放不同的文字 2.存放星星的索引值(要在i定义赋值后,即在for ...
- NSDate的运算
NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间 Dates NSDate类提供了创建date,比较date以及计算两个date之间间隔的功能.Date对象是不可改变的. 如 ...
- IBatis.Net 表连接查询(五)
IBatis.Net之多表查询: 一.定制实际对应类的方式 首先配置多表的测试数据库,IBatis.Net之Oracle表连接查询配置: 首先新建两张表如下: 为两张表建立外键: ALTER TABL ...
- checkbox全选功能
$("#cb_classType_all").change(function () { if ($(this).is(":checked")) { $(&quo ...
- MYSQL数据库导入导出(可以跨平台)
MYSQL数据库导入导出.sql文件 转载地址:http://www.cnblogs.com/cnkenny/archive/2009/04/22/1441297.html 本人总结:直接复制数据库, ...
- 笔记本安装Win2012R2 心得(包含无线网卡+有线网卡驱动解决方法)
笔记本:联想昭阳E47G 无线网卡安装方法: 系统安装完毕后将自动识别无线网卡驱动,但需要手动允许WLAN服务开启.(建议,如果是拿来办公或者家用,可以安装上桌面体验)不然,QQ发的截图双击都看不起. ...
- ognl表达式root中取值顺序
不加#,先从栈顶取,如果没有(是没有这个属性而不是这个属性没有值),再往下取. 如果栈顶和非栈顶的对象拥有同一个属性名称,想直接取非栈顶的属性可以在ognl中用#root[i].属性名,可以取到属性的 ...
- poj2184 背包
//Accepted 1492 KB 110 ms //背包 //把si看成weight,Fi看成value,这可以表示成当dp[j]=max(dp[j-weight[i]]+value[i]) // ...