【问题标题】:Driver proxy to avoid repeated code signing on Windows避免在 Windows 上重复代码签名的驱动程序代理
【发布时间】:2010-07-01 13:48:46
【问题描述】:

Windows 上的驱动程序应经过签名并提交给 Microsoft 进行代码签名,这是 64 位系统的要求。问题是,当您必须更新驱动程序时,您必须再次提交,每次发布一次。

是否可以构建某种代理或 shim 驱动程序,以便我只需签署和提交一次,然后将我的代码放在单独的模块中?

当然,我不能只在 DLL 中移动工作代码,因为动态加载的模块也必须签名才能在 64 位内核模式下执行。如果我将代码放在原始文件中,将其加载到内存中(在启用执行标志的情况下分配)然后执行它会怎样?其他想法?

【问题讨论】:

    标签: windows driver code-signing wdm


    【解决方案1】:

    您不必向 Microsoft 提交驱动程序。您必须使用交叉签名证书签署您的驱动程序。这样你会得到一个唠叨屏幕,但这不是被禁止的!

    有几次尝试去做你想做的事。这些是“勉强”容忍的,但这些驱动程序可能随时被禁止。 (通过撤销您的签名)

    这个过程很简单:

    1. 加载已签名的驱动程序。
    2. 提供一个 IoControl,用户模式程序可以在其中向内核发送内存。
    3. 改变这个内存的执行位,只调用这个内存中的一个地址。

    【讨论】:

    • 客户即使在 32 位上也会避免警告,因此我们必须将驱动程序提交给 WHQL。然而,即使是内核级代码,也需要提供非常快速的更新和补丁。幸运的是,安装系统的数量相对较少。感谢您提供简单的步骤!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2010-12-22
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    相关资源
    最近更新 更多