223 views
首页 > 技术心得 > 64 位 Windows 操作系统手工为驱动程序添加数字签名

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

2011年11月30日

MS 自从 Vista 开始在 64 位系统加载内核驱动要强制签名, 而普通开发者也许不愿或没有能力购买昂贵的 CA 数字证书.

那么解决方案就是:自己伪造签名。

过程:

  1. 打开系统的 testsigning 模式, 使得非权威 CA 发放的签名可以使用.
    bcdedit /set testsigning on
  2. 做一个签名证书出来.
    MakeCert -pe -ss PrivateCertStore -n CN=tinybrowser.net(test) tinybrowser.cer
  3. 把证书加进本机信任根 CA 中去.
    CertMgr -add tinybrowser.cer -s -r localMachine root
  4. 给驱动签名.

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

说明:

  1. mydriver.sys就是所要签名的驱动文件名称了, 这个驱动是 64 位的.
  2. MakeCert.exe, CertMgr.exe 和 Singtool.exe 在基本系统中不附带, 不过Plateform SDK, .netFramework SDK, Visual Studio里面都有, 拣自己方便弄得安一个就是.
  3. 命令中 tinybrowser.net, tinybrowser 都可以替换成你自己喜欢的, 不过反正是 fake 的, 你自己爱写什么写什么, 如果要签其他驱动, 把 mydriver.sys 换成你要的文件名就是了.
  4. 要 reboot.
  5. testsigning 打开后据说会影响到 DRM, 会使有 DRM 的玩意儿失效, 不过我等贫民还没看见什么东西用 DRM.
  6. 喜欢学习的好同学想知道原理自己去啃文档:

    Signing Drivers during Development and Test (Windows Vista and Later)

感想:

  1. 打上 testsigning 开关后重起系统屏幕四个角会出来 Test mode, 上面中间会出来版本号和 build. 看起来好像很酷, 不过还好不是 Safe Mode.
  2. 如果我自己能这么做绕过 MS 的签名机制, 病毒不是也能嘛. 那强制签名和安驱动时跳个可以被屏蔽掉的警告框也没什么区别了嘛! 噢, 对了, 所以才给你打个 Test mode 的标, 别怪我没提醒. :D
  3. 有没有给病毒或木马发证书的 CA?

延伸阅读:
64位Windows Vista 和Windows 7系统下驱动签名指南
设备和驱动程序安装

技术心得

  1. 目前还没有任何评论.
  1. 目前还没有任何 trackbacks 和 pingbacks.