白话数字签名(番外篇)——签名EXE文件(下)
来源:互联网 发布:网络广播接线图 编辑:程序博客网 时间:2024/05/17 18:23
摘要
如果我们在IEXPLORE.EXE上面右击,再点击“属性”,可以看到并没有显示数字签名页,但是在Process Explorer中却可以成功验证签名,这是怎么回事呢?
签名EXE文件的两种方法
上篇写到如果我们在IEXPLORE.EXE上面右击,再点击“属性”,可以看到并没有显示数字签名页,但是在Process Explorer中却可以成功验证签名,这是怎么回事呢?这是因为有两种签名EXE文件的方法:1. 将签名数据嵌入到EXE文件内部,就是上篇里介绍的那种方法。2. 将签名数据存放到一个 .cat 文件中,Windows绝大多数程序和驱动都是使用的这种方法,所以在文件属性里看不到签名信息,却可以使用Process Explorer成功验证签名。下面就来介绍一下这种签名方法。
使用安全编录(.cat)文件签名EXE文件
Step3: 下载这个MakeCat.rar,解压缩,得到MakeCat.exe,将它复制到“C:/SignDemo”。
注 MakeCat.exe是随3.0的SDK发布的,所以为了方便我把它上传到了这里。
Step4: 打开命令行,使用“makecat -v 123soft.cdf”命令生成“123soft.cat”文件。 Step5: 打开命令行,执行“signtool signwizard”命令,打开签名向导,使用和上篇同样的方法签名“123soft.cat”文件。Step6: 测试123soft.cat文件里面是否已包含了MathLover121.exe的数字签名。方法是使用“signtool verify -v -pa -c 123soft.cat mathlover121.exe”命令。
Step7: 使用自动模式(即不显式给出CAT文件)验证签名,之所以会失败是因为我们还没有将123soft.cat导入操作系统的安全编录数据库。Step8: 将123soft.cat添加到操作系统的安全编录数据库。在命令行执行“signtool catdb -v 123soft.cat”命令即可。Step9: 重做Step7的测试,发现可以成功验证签名了。Step10: 在Process Explorer里面验证MathLover121.exe的签名,发现可以验证成功。注意 在上面Step2中,123soft.cdf中的文件列表一定要写成“<hash>MathLover=MathLover121.exe”,如果写成“MathLover=MathLover121.exe”也可以成功生成123soft.cat文件,但是验证签名会失败,提示的错误信息为“找不到指定文件”。我猜想这是因为签名验证程序是通过MathLover121.exe的散列值来查找签名数据的,而只有通过<hash>标记才能在生成CAT文件的时候使用MathLover121.exe的散列值替换掉“MathLover”这个名称。关于摘要算法可以参考我的白话数字签名(2)。
签名MP3
参考文献
Kernel-Mode Code Signing Walkthrough
Microsoft Authenticode 参考指南
- 白话数字签名(番外篇)—签名EXE文件(上)
- 白话数字签名(番外篇)——签名EXE文件(下)
- 白话数字签名(番外篇)——签名EXE文件(下)
- 白话数字签名(番外篇)——签名EXE文件(下)
- 白话数字签名(番外篇)——签名EXE文件(下)
- 白话数字签名(番外篇)——签名EXE文件(下)
- 白话数字签名(番外篇)——签名EXE文件(上)
- 白话数字签名(番外篇)——签名EXE文件(上)
- 白话数字签名(番外篇)——签名EXE文件(上)
- 白话数字签名(番外篇)——签名EXE文件(上)
- 白话数字签名(番外篇)——签名EXE文件(上下)
- Windows数字签名 数字签名(代码签名)流程
- 白话数字签名——软件&设备
- 白话数字签名(2)——软件&设备
- 白话数字签名(1)——基本原理(新!)
- 白话数字签名(1)——基本原理
- 白话数字签名(1)——基本原理(新!)
- 白话数字签名(1)——基本原理(新!)
- Ant
- ASPxGridView使用(2)数据导出
- 重装系统发现XP自动更新里有IE8,WEB开发人员有福了
- 快捷键
- 网警是如何追踪到入侵者的
- 白话数字签名(番外篇)——签名EXE文件(下)
- 程序员的三境界
- 详解WINDOWS映像劫持技术
- 编写INF文件进行文件安装(上)
- 关于软件开发、分析与设计
- 访问IIS元数据库失败
- tomcat6 连接池配置
- Java谜题6——库谜题
- 杯具~~~仅仅因为一个格式转换的错误