转自:http://www.cnblogs.com/1-2-3/archive/2007/12/03/colloquialism-digital-certificate-part5.html
摘要
如果我们在IEXPLORE.EXE上面右击,再点击“属性”,可以看到并没有显示数字签名页,但是在Process Explorer中却可以成功验证签名,这是怎么回事呢?
签名EXE文件的两种方法
上篇写到如果我们在IEXPLORE.EXE上面右击,再点击“属性”,可以看到并没有显示数字签名页,但是在Process Explorer中却可以成功验证签名,这是怎么回事呢?这是因为有两种签名EXE文件的方法:1. 将签名数据嵌入到EXE文件内部,就是上篇里介绍的那种方法。2. 将签名数据存放到一个 .cat 文件中,Windows绝大多数程序和驱动都是使用的这种方法,所以在文件属性里看不到签名信息,却可以使用Process Explorer成功验证签名。下面就来介绍一下这种签名方法。
使用安全编录(.cat)文件签名EXE文件
Step1: 首先,为了方便,先在C盘下创建一个目录“C:\SignDemo”。然后将一个未签名的EXE文件“MathLover121.exe”复制到这个目录下。 Step2: 创建一个文本文件,命名为“123soft.cdf”,内容如图所示。
Step3: 下载这个MakeCat.rar,解压缩,得到MakeCat.exe,将它复制到“C:\SignDemo”。
注 MakeCat.exe是随3.0的SDK发布的,所以为了方便我把它上传到了这里。





Step6: 测试123soft.cat文件里面是否已包含了MathLover121.exe的数字签名。方法是使用“signtool verify -v -pa -c 123soft.cat mathlover121.exe”命令。







签名MP3
嵌入式的签名方式只能签名有限的几种文件格式,但是使用CAT文件的方式却可以签名任意格式的文件。下面就来演示一下签名MP3文件的过程。




参考文献
Kernel-Mode Co
Microsoft Authenticode 参考指南