随笔 - 102  文章 - 25 评论 - 2393 trackbacks - 29

.net asp web c# vb VS2005 VS2008 VS2003

    姓名 景春雷
    网名 1-2-3
    生日 1980.2.29
    城市 沈阳

最近在读的书
同事的创业网站
指甲油
汽车用品

昵称:1-2-3
园龄:4年5个月
荣誉:推荐博客
粉丝:150
关注:25

搜索

 

常用链接

我的标签

随笔分类(110)

随笔档案(108)

文章分类(24)

相册

积分与排名

  • 积分 - 379074
  • 排名 - 168

最新评论

阅读排行榜

评论排行榜

推荐排行榜

摘要

如果我们在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发布的,所以为了方便我把它上传到了这里。

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

嵌入式的签名方式只能签名有限的几种文件格式,但是使用CAT文件的方式却可以签名任意格式的文件。下面就来演示一下签名MP3文件的过程。
Step1: 把一个MP3文件复制到“C:\SignDemo”。
Step2: 在123soft.cdf文件里添加这个文件名。
Step3: 按照前面的方法重新生成、签名CAT文件。
Step4: 验证签名。


参考文献

Kernel-Mode Code Signing Walkthrough
Microsoft Authenticode 参考指南






posted on 2007-12-03 08:07 1-2-3 阅读(5678) 评论(29) 编辑 收藏

FeedBack:
#1楼 2007-12-03 08:15 韩现龙      
楼主辛苦了。
 回复 引用 查看   
#2楼[楼主2007-12-03 08:21 1-2-3      
@韩现龙
呵呵,弄图片确实挺累的。

 回复 引用 查看   
#3楼 2007-12-03 08:46 jillzhang      
写的真不错,楼主每篇文章都写得比较细致。

 回复 引用 查看   
#4楼 2007-12-03 09:24 zqw2007[未注册用户]
楼主解决问题真是快,呵呵,我这又学习了,另外,楼主的字写得真漂亮,是用手写板写的吧?
 回复 引用   
#5楼[楼主2007-12-03 09:30 1-2-3      
@jillzhang
谢谢夸奖。

 回复 引用 查看   
#6楼[楼主2007-12-03 09:35 1-2-3      
@zqw2007
我的字很丑的,那个是徐静蕾写的"方正静蕾简体"。

 回复 引用 查看   
#7楼 2007-12-03 10:19 米开朗基罗      
就看这这个字体有点怪,终于领悟了,把手写体做成字库的一个缺陷就是字和字之间缺乏联系了。因为是做字体,所以每个字之间都是独立写的,但是真正书写的时候,一句话之间的文字是一气呵成的,有内在的联系的。
所以个性化手写体是一个不是真正手写体的手写体,个人还是喜欢印刷体。哈哈。

--引用--------------------------------------------------
1-2-3: @zqw2007
我的字很丑的,那个是徐静蕾写的&quot;方正静蕾简体&quot;。
--------------------------------------------------------

 回复 引用 查看   
#8楼[楼主2007-12-03 10:28 1-2-3      
@米开朗基罗
没错,中文书法很讲究整体效果,这种把单个写成的字拼起来的方法效果会差很多,期待有更先进的技术可以形成连贯效果的手写字体。

 回复 引用 查看   
#9楼 2007-12-03 10:42 Clark Zheng      
哈哈,关于这个图片使用的字体,我觉得1-2-3好象都不只回答过十遍了吧
 回复 引用 查看   
#10楼[楼主2007-12-03 10:46 1-2-3      
@Clark Zheng
呵呵,差不多,说明这个东东挺好玩的。

 回复 引用 查看   
#11楼 2007-12-03 15:49 小哈      
有意思
學習一下^__^

 回复 引用 查看   
#12楼 2007-12-03 16:52  Enzo      
@1-2-3
希望以后直接用想的就可以把文字写在屏幕上

 回复 引用 查看   
#13楼[楼主2007-12-03 17:03 1-2-3      
@ Enzo
其实我最近一直在想一个问题:什么让人幸福?什么让人满足?科技的进步到底能不能让人更满足?
或许会偏激些吧,我突然觉得人是要比别人强才能满足。每个人都希望能向上走,希望明天会比今天好。而且还要比别人进步的快——其实就是想自己最牛啦!所以科技就算比现在进度100倍,如果我用它们写出的文章总被骂,我也不会开心;只有大家都说这个文章太好了,太牛了,我才能高兴,唉!迷茫中的1-2-3留言。

 回复 引用 查看   
#14楼 2007-12-03 20:23 瓜牛      
赞同楼主的想法!
 回复 引用 查看   
#15楼[楼主2007-12-04 08:01 1-2-3      
@瓜牛

 回复 引用 查看   
#16楼 2007-12-04 08:15 BlackCat      
@1-2-3

好就一个字,看了你们在沈阳聚会的照片和视频了,哈哈,他们说你不爱说话啊,有个哥们自称是框架师啊,牛啊,哈哈. 很可惜啊,我要是在沈阳,我也过去参与一下了,一看你长象和你说话就知道你是做技术的了.HOHO

 回复 引用 查看   
#17楼[楼主2007-12-04 08:24 1-2-3      
@BlackCat
视频我还没看呢。我不爱说话?冤呐。我那天说的比我一个星期说的加起来还多。架构师是“沦落为神”,他以前作过好几个大项目,这个是我最羡慕的地方。他现在负责一个全新的医疗信息系统的架构设计,挺厉害的,可惜你不能去,挺想跟你聊聊的。

 回复 引用 查看   
#18楼 2007-12-05 08:20 BlackCat      
@1-2-3
恩,是的,我也很想跟你聊聊, 无奈公司不让上QQ和MSN,我也不想违反纪律,我是一个听话的好孩子啊,所以只能在你的Blog上洒洒水了,哈哈.

不过,有互联网真好啊,可以缩短我们的距离,你不知道,我一到晚上上线,就跟老K他们吓侃,胡侃,侃晕为止.

我看了你们的视频后,第一感觉就是,全都是沈阳人,以前在沈阳听不出来口音,现在北京混了3年,听的一清二楚,一下子就分辨出来了,感觉很亲切.

我的工作领域是WEBGIS,大型B2B,B2C网站,现在又做ERP产品,转向ERP业务方面,但是我水平没有那么高,俺可不是框架师, 俺是程序员而已,现在也只能算是一个小组长,手下有那么3,4个人.那手底下的人啊,说有就有啊,说没就没了,最后还的靠我自己一个人,所以现在天天加班,累的要死, 不过跟我一起工作的韩国人比我还累,他天天要干到10点多呢,很佩服他们那种精神,呵呵

其实这样更好,在网上认识,没事时候聊聊技术,谈谈天地,放松一下,如果要是天天在一起聊来聊去了,好象也没有什么新鲜感了,你说对不?

 回复 引用 查看   
#19楼[楼主2007-12-05 08:38 1-2-3      
@BlackCat
> 我的工作领域是WEBGIS,大型B2B,B2C网站,现在又做ERP产品,转向ERP业务方面
看来你已经混得不错了^_^
我这些年我只是对公司内部做些小型MIS系统,最多的时候是两个人合作,现在最羡慕作过大项目的人,我已经决定要转会到别的公司了。我也只是个普通的程序员啦,不过现在好像做程序员的都觉得要当PM或架构师才有面子,好像架构师相当于建筑师,PM是包工头,程序员就只能算农民工了:) 我在现在的公司混了5年,外面的世界一点不了解,现在对将来的发展稍微有些迷茫,一定要找机会跟你聊聊,希望得到些你的指点。

 回复 引用 查看   
#20楼 2007-12-05 08:39 ca[未注册用户]
@BlackCat
hehe

 回复 引用   
#21楼 2007-12-06 13:15 BlackCat      
@1-2-3
别这么客气, 什么指点啊? 那是高手才做的事,我才工作3年多,要是论大小我还得叫你一声哥呢,哈哈. 咱不是高手, 咱一起切磋,有的东西确实的一起聊聊, 才能豁然开朗. 我每天都会收email的, 希望哪天会看见你的email, 我们可以把email当成即时通讯软件来用,哈哈, 你有什么想法都可以告诉我,我可以随便说说我的愚见.


 回复 引用 查看   
hehe
 回复 引用   
#23楼 2008-05-16 10:24 zbb[未注册用户]
不明白。。。
 回复 引用   
#24楼 2009-05-04 10:58 無心      
你好啊,呵呵,看了您的文章深有启发,最近在找这方面的资料,很难寻找啊。呵呵。希望看到您后续的更多更好的作品!
 回复 引用 查看   
#25楼[楼主2009-05-04 11:31 1-2-3      
@無心
谢谢。偶也是被网上的文言文折磨了之后才想写的这篇白话文^_^

 回复 引用 查看   
#26楼 2009-07-10 11:13 api0731[未注册用户]
嗯,真实不错!
楼主有没有使用 CAPICOM 来验证exe数字签名的文章?
还有,CAPICOM.HashedData 类生成的 md5 值为何与常见算法得出的值不同啊?

 回复 引用   
#27楼[楼主2009-07-10 12:02 1-2-3      
@api0731
CAPICOM 没有用过呀,帮不了你了,抱歉。

 回复 引用 查看   
#28楼 2010-07-06 16:08 WorkTimer      
用支付宝的证书就能签名
 回复 引用 查看   
#29楼[楼主] 2010-07-06 16:44 1-2-3      
@WorkTimer
偶是灰常灰常土的人,到现在还没在淘宝买过东西呢。

 回复 引用 查看