Oct 302007
 

交作业的文章,其实装系统当天就搞定这个问题了,一直懒得写,现在也懒,流水账记录之。

故障现象:Dscaler在系统升级为64位Windows 2008后不工作。

原因:Dscaler的程序所调用的64位驱动不带数字签名,而MS自从Vista开始在64位系统加载内核驱动要强制签名了。

解决方案:自己伪造签名。

过程:

1,打开系统的testsigning模式,使得非权威CA发放的签名可以使用
bcdedit /set testsigning on

2,做一个签名证书出来。

MakeCert –r –pe –ss PrivateCertStore –n CN=dawnh.net(test) dawnh.cer

3,把证书加进本机信任根CA中去。

CertMgr -add dawnh.cer -s -r localMachine root

4,给驱动签名。

Signtool sign /v /s PrivateCertStore /n dawnh.net(test) /t http://timestamp.verisign.com/scripts/timestamp.dll dsdrv4.sys

 说明:

1,dsdrv4.sys就是所要签名的驱动文件名称了,Dscaler默认安装的是32位的,64位的要单独下载

2,MakeCert.exe,CertMgr.exe和Singtool.exe在基本系统中不附带,不过Plateform SDK,.netFramework SDK,Visual Studio里面都有,拣自己方便弄得安一个就是。

3,命令中dawnh.net,dawnh都可以替换成你自己喜欢的,不过反正是fake的,你自己爱写什么写什么,如果要签其他驱动把dsdrv4.sys换成你要的文件名就是了。

4,要reboot。

5,testsigning打开后据说会影响到DRM,会使有DRM的玩意儿失效,不过我等贫民还没看见什么东西用DRM。

6,喜欢学习的好同学想知道原理自己去啃文档:

http://msdn2.microsoft.com/en-us/library/aa906247.aspx

感想:

1,打上testsigning开关后重起系统屏幕四个角会出来Test mode,上面中间会出来版本号和build。看起来很酷,不过还好不是Safe Mode XD

2,如果我自己能这么做绕过MS的签名机制,病毒不是也能嘛。那强制签名和安驱动时跳个可以被屏蔽掉的警告框也没什么区别了嘛!噢,对了,所以才给你打个Test mode的标,别怪我没提醒 :D

3,有没有给病毒或木马发证书的CA?

  6 Responses to “64位Windows操作系统手工为驱动程序添加数字签名”

  1. 11月4日,用同样的签名办法解决了vmware server的vmx86.sys的签名问题,成功使得vmware server跑在windows server 2008上。

  2. 请问,该方法只能在bcdedit /set testsigning on,也就是保持系统测试模式下才可以成功使用驱动吗?

  3. 是的,我个人做到此为止,没有深入研究。我不知道将自己制作的根证书加入到信任列表是否会有用,你可以试试看。

  4. 我试了下,果然只能在测试模式使用,Vista和win7的64位版本果然卡得很严格,
    http://www.minasi.com/newsletters/nws0908a.htm
    这里有提到,这个网站也有几个相关的博位文有讲。

  5. [...] 这里有一个类似的方法,可以自己实现 http://opslife.com/make-test-sig … nder-64bit-windows/ [...]

  6. 感谢分享

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>