证书系统64驱动签名工具64Signer

时间:2024-03-11 11:38:47

首先声明,我是一个菜鸟。一下文章中涌现技术误导情况盖不负责

    

【作者:张佩】【工具下载:http://www.yiiyee.cn/Blog/64signer/

    

  • 背景分析

    

微软对于自Vista开始的64位OS有新的数字签名策略,即全部内核驱动都必须是经过可信机构签发过数字证书的,否则系统拒绝加载。此策略的目的是增强系统安全防护,使得一干惯于偷偷摸摸、不知所自何来的内核模块没法在系统中容身。但它却也给端庄的内核开发人员带去了一个麻烦:开发进程中会不断生成新的驱动镜像文件,开发者不可能将每个内部版本都拿去申请数字签名,那样不仅太麻烦,而且会大大延长开发周期。

    

微软当然也斟酌到了这一点,它供给了一个可以制止签名检验的开机启动项。要运用此启动项,用户必须在启动电脑的时候,实时在键盘上按下F8键,在出来的启动菜单中选择倒数第二个启动项:Disable Driver Signature Enforcement.

    

这看上去很省心,但你如果再懂得得深刻一点,就会发明它其实很麻烦。

    

首先开机启动项只能手动选择,系统再次重启的时候,它会忘记上一次所选择的启动项,用户如果不再次实时按下F8按钮的话,就会错过机会,只能谋求下一次重启时的机会。如果开发者需要不断地进行重启测试的话,就必须有一个专人站在边上,作用就是实时地按下F8并在涌现的启动菜单中选择倒数第二项。这是很无聊并痛苦的事情,所以大多数开发者不肯采取这类方法。

    

其次就是在Win8系统上,用户在系统开机时已没有通过F8调出启动菜单的机会。这一点虽然可以避免,但进程却也复杂,这里不展开分析。

    

看到一扇关闭的窗户,不必急着懊丧,因为或许旁边正有一扇为你敞开的大门。微软还供给了一项称为Test Sign的技术,却正可以较好处理内核开发者的这项困扰。只不过它的实现方法比较复杂,虽然微软供给了详细的文档,但不到万不得已,开发者一般不会去详细研究其内容。从步调上来讲,这个技术分两个部分:

    

首先,启动Test Signing启动项属性。实现的一个简单方法是在控制台中运行如下命令:

    

    Bcdedit /set testsiging true

    

    

此命令的意思是为以后系统启动项打开名为“TestSigning”的属性。如果再运行上面的命令,就能看到这个属性被列出:

    

    Bcdedit /enum {current}

    证书和系统

    

    

这个属性会在下次系统重启时生效。系统会始终记住这个属性,重启系统后也仍然有效。

    

第二是用一个测试证书对你的内核镜像文件(一般即.sys文件)进行签名。用户对此可能有点迷惑,稍微分析一下。原来如果认证机构为内核驱动签名的时候,会发表一个受信证书,这个证书最终会安装到用户系统中,而对镜像文件所进行的签名操纵,就是把证书信息写到文件中。系统通过验证这个证书来确认其受信与否。获得这个证书首先需要银子,其次也需要时光。但如果我自己可以给自己发表一个临时证书,又怎样呢?那当然又省心又快捷了。微软供给了这样的策略:在Test Signing模式下,测试证书能和其它商业证书一样任务无误。

    

那么这第二个步调其实又能细分为两个小步调:1. 创立测试证书;2.用测试证书为驱动签名。微软供给了相关工具,包含在最新的SDK或DDK中。简单来讲,用户应该应用makecert.exe创立证书,再用signtool.exe进行镜像文件签名。微软所供给的工具不止这两个,但这两个确实是最主要的。遗憾的是这些工具都只能运行在控制台中,用户界面不算友好,参数也很晦涩。这大概是为什么大多数内核开发者都不太应用这些工具的原因?

    每日一道理
站在历史的海岸漫溯那一道道历史沟渠:楚大夫沉吟泽畔,九死不悔;魏武帝扬鞭东指,壮心不已;陶渊明悠然南山,饮酒采菊……他们选择了永恒,纵然谄媚诬蔑视听,也不随其流扬其波,这是执著的选择;纵然马革裹尸,魂归狼烟,也要仰天长笑,这是豪壮的选择;纵然一身清苦,终日难饱,也愿怡然自乐,躬耕陇亩,这是高雅的选择。在一番选择中,帝王将相成其盖世伟业,贤士迁客成其千古文章。

    

工具应用方法,请参考微软相关文档。

    

  • 应用64Signer

    

好了,当初一个崭新的新星涌现了。64Signer能帮助你一步到位。它不仅界面清晰明了,并且功能完整智能。开发者只要简单地进行一次拖拽,点最多两个按钮,就可以实现系统设置和文件签名等一系列的任务。深渊隐藏在坚固的桥面下,用户只要开车通过就行,而无需流连惊骇。

    

证书和系统

    

工具的操纵方法其实已简单明了地列在界面上(红色字体部分),但我还是愿意详细解释一下应用进程:

    

  1. 运行工具后它可以准确表现以后系统的Test Signing设置。如果此属性已被打开,则“Enable Test Signing Option”是主动钩住的;否则用户需点击一下(第一个点击)。
  2. 然后用户应将驱动文件拖拽到用户界面中来,或者手动输入路径,或者点击Open按钮从而通过文件对话框来选择,都可以(一次拖拽)。
  3. 最后点击Sign按钮(二次点击)。如果签名成功,用户能看到上面的成功提示(如果有看到失败的情况,请发邮件告诉我):

    

证书和系统

    

在关闭工具的时候,工具如果检测到你改变了Test Signing启动属性,会有上面的系统重启提示:

    

证书和系统

    

就这么简单,我总结为:一拖两点。

    

这个工具的知心的地方还没有完整展现出来,如果你看到曾经操纵过的历史文件已被整理妥善,以动态列表的情势表现,而你只要点击一下就能展开并选择,贵用户的心情会不会更高兴?如下图所示:

    

证书和系统

文章结束给大家分享下程序员的一些笑话语录: 警告
有一个小伙子在一个办公大楼的门口抽着烟,一个妇女路过他身边,并对他 说, “你知道不知道这个东西会危害你的健康?我是说, 你有没有注意到香烟 盒上的那个警告(Warning)?”
小伙子说,“没事儿,我是一个程序员”。
那妇女说,“这又怎样?”
程序员说,“我们从来不关心 Warning,只关心 Error”