signtool对EXE进行签名

https://msdn.microsoft.com/zh-cn/library/9sh96ycy(VS.80).aspx

.NET Framework 2.0

其他版本

文件签名工具使用 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


指定密钥类型,必须为 signatureexchange 或一个整数(如 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

请参见

参考

.NET Framework 工具
证书创建工具 (Makecert.exe)
发行者证书测试工具 (Cert2spc.exe)
SDK 命令提示

概念

安全权限


数字证书,真是个神奇的东西,可以保证软件不被修改,可以表明文件的发布日期,最重要的,可以很大程度的减少杀毒软件的误报,当然,这就要使用可信任的机构颁发的证书了。

现在要说的不是申请证书,而是如何制作自己的证书。

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

如果上面的步骤都正确,那么结果就是这样的:

签名之后,自己的软件瞬间就变的专业了有木有!

当然,这样的签名只是自慰罢了,没有什么实际用途,真正有用的证书还是要去专业机构申请的。。

时间: 2024-10-19 01:02:21

signtool对EXE进行签名的相关文章

[工具推荐]003.EXE签名工具SignTool使用教程

数字证书,真是个神奇的东西,可以保证软件不被修改,可以表明文件的发布日期,最重要的,可以很大程度的减少杀毒软件的误报,当然,这就要使用可信任的机构颁发的证书了. 现在要说的不是申请证书,而是如何制作自己的证书. 1.安装windows sdk 生成证书和签名工具都包含在里面,Visual Studio应该都有自带了,以下内容中使用的工具都可以在C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin里面找到 2.创建 X.509 证书 MSDN对Make

记录我的第一次代码签名

代码签名是对软件进行标识的一个过程,它通过对软件增加了发布商的信息来检查软件在发布后是否被修改或受病毒影响.在软件出售前进行签名已经成为了行业范围的专业实践.随着用户的安全意识的提高,现在越来越多的用户限制下载未签名的软件,因此作为专业的软件公司,在软件出售前进行签名已经成为必不可少的一步. 要进行代码签名,需要以下准备:1)代码签名证书和密码:2)代码签名工具:3)时间戳服务器的URL地址: 代码签名工具代码签名工具,微软提供了两套代码签名工具, 1)signcode.exe,从1998年开始

让c#的exe只要被修改就无法运行,支持混淆和数字证书

原文:让c#的exe只要被修改就无法运行,支持混淆和数字证书 首先用sdk的sn工具或者makecert工具生成公钥和密钥,推荐makecert,做自己的证书,我做了一个受信任的根证书放在受信任的根证书颁发机构,用这个根证书颁发了一个下级证书放在个认证书里.把这两个证书都保存起来,平时给程序签名就用这个子证书就行了.以后都用这一个,显得正规点. 程序里工程属性-签名把那clickonce和程序清单签名都选上,时间戳用这个http://timestamp.wosign.com/timestamp

使用 Visual Studio 对exe文件进行数字签名

使用"VS2013 开发人员命令提示"运行签名工具.转到要签名的文件目录运行命令: signtool sign /a 要签名的程序.exe signtool 的相关命令 ```csharp Usage: signtool [options] Valid commands: sign -- Sign files using an embedded signature. timestamp -- Timestamp previously-signed files. verify -- Ve

微软代码签名操作指南

代码签名是对软件进行标识的一个过程,它通过对软件增加了发布商的信息来检查软件在发布后是否被修改或受病毒影响.在软件出售前进行签名已经成为了行业范围的专业实践.随着用户的安全意识的提高,现在越来越多的用户限制下载未签名的软件,因此作为专业的软件公司,在软件出售前进行签名已经成为必不可少的一步. 要进行代码签名,需要以下准备:1)代码签名证书和密码:2)代码签名工具:3)时间戳服务器的URL地址: 代码签名工具代码签名工具, 微软提供了两套代码签名工具, 1)signcode.exe, 从1998年

APK重新签名方法

Android使用SHA1-RSA算法进行签名.可通过eclipse插件进行,可以通过keytool和jarsigner 用命令行执行,也可以在源码下进行签名. 第一种:通过使用eclipse进行签名. 2011-5-23 22:31 上传 下载附件 (36.39 KB) 以我这个应用为例,右键项目,找到export 2011-5-23 22:31 上传 下载附件 (13.13 KB) 下一步 2011-5-23 22:31 上传 下载附件 (9.63 KB) 此处选择你要为哪个应用创建签名 继

反编译android应用,降低权限去广告及重新签名

功能:反编译apk降低权限及重新签名 场景:很多软件,申请了一些可能会导致付费(如,发短信,呼叫号码)或者泄漏隐私(如:读取通讯录)的权限,让人很不放心.比如:飞信.墨迹天气.iReader等都在此列.为了让自己能放心使用,需要做一些破解工作,减少该应用程序的权限,限制其操作. 工具:apktool-install-windows-2.2_r01-3.tar.bz2 (http://code.google.com/p/android-apktool/downloads/list) 工具:(JDK

捣腾数字签名

昨天在公司的代码中,看见一个VC项目的Post Build Step会用signtool给项目生成的exe添加数字签名,而exe的某块代码会调用WinVerifyTrust这个Windows API来验证exe自己的数字签名.正好这几天稍微闲暇一些,在好奇心的驱使下便开始捣鼓起数字签名来.经过一天终于有点收获,大致理解数字签名是怎么一回事,也对公司代码的那两块地方比较理解了,于是做个小结. 首先推荐读读<算法导论>31.7节The RSA public-key crptosystem的第一小节

atl控件发布打包&lt;转&gt;

http://www.cnblogs.com/gengaixue/archive/2010/08/13/1799112.html ActiveX打包与发布 在VS2005或VS2008安装后发现路径**VC7\Common7\Tools\Bin\下有许多小工具,我对带有Cert的文件比较感兴趣.经过研究,发现是有关证书和签名的,当然,该证书未被证书认证机构认可.下面列出这些工具和我的使用心得.1.Makecert.exe ---证书创建工具2.Cert2Spc.exe ---发行者证书测试工具3