交作业的文章,其实装系统当天就搞定这个问题了,一直懒得写,现在也懒,流水账记录之。
故障现象: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的标,别怪我没提醒
3,有没有给病毒或木马发证书的CA?