WM6.1驱动程序上的代码签名

时间:2010-08-31 15:39:55

标签: security windows-mobile device-driver code-signing windows-mobile-6

我已经就堆栈溢出这个问题提出了类似的问题,但我相信这部分问题可以分成一个新问题。

我之前没有进行过移动开发,所以签名和证书的使用对我来说是一个新概念,对于我所做的所有主题的阅读,它并没有真正提高我的知识,因为我读到的每个网站都只谈到签名的一小部分,而不是整个过程,并将它拼凑在一起很困难。

我遇到的问题是我的驱动程序在启动时没有加载到WM6.1上。它是GPS的驱动程序,因此需要加载,因此可用于COM端口上可访问的任何GPS软件。我相信这是由于签名问题,因为DllMain方法永远不会被调用。

我获得了一个特权证书(.pfx),并且该记录也获得了新的(2010年1月)SDKSamplePrivDeveloper证书。我假设驱动程序需要特权证书。

那我到底做了什么。在过去的4-5天里,我已经尝试了至少几种变体,但都没有成功。

在视觉工作室; 1)DLL项目将authenticode签名设置为.pfx证书。建立项目。

2)CABWizard项目将authenticode设置为相同的证书。建立项目。

3)遵循MSDN说明...将.pfx转换为509 Base64证书,并从中创建XML配置文件..它已创建到自己的CAB或CPF文件中。并且还尝试将_setup.xml文件配置到先前创建的CAB文件中,以便随应用程序一起安装。

4)我已将这些安装到设备上,虽然驱动程序在我们的测试应用程序中工作,但即使其“BuiltIn”中的注册表设置正确,它也不会在启动时加载。检查注册表中的证书存储时,我可以看到添加到SPC,Root,Privileged和Unprivileged存储的证书。使用System | Certificates时,我可以在Root选项卡中看到证书。所以他们肯定已被添加。

鉴于上述情况不起作用。我还尝试了http://www.modaco.com/content/i8000-verizon-sch-i920-omnia-ii-http-i8000-modaco-com/306870/sdkcerts-2010-and-signing-tool/的siggner.exe工具和SDKSamplePrivDeveloper证书。

1)Dll项目将authenticode签名设置为否。构建项目。

2)加载siggner.exe并使用SDKSamplePrivDeveloper.cer对Dll文件进行签名。

3)CABWizard项目将authenticode设置为No.构建项目。

4)加载siggner.exe并使用SDKSamplePrivDeveloper.cer对cab文件进行签名。

5)使用NewSDKCerts.Cab将SDKSamplePrivDeveloper证书安装到商店中。

6)安装我用驱动程序创建的CAB文件。

7)同样,在热启动时,驱动程序在启动时未加载到device.exe。

鉴于上述情况,任何人都可以给我一些关于在启动时加载驱动程序的确定方法的明确指示。我显然在签名方面做错了,因为这样做会在Windows CE5中没有问题而启动。我知道设备驱动程序代码没问题,因为我可以使用WM6.1中的ActiviateDevice()方法在代码中手动激活它。

编辑 -

可能值得添加,我还创建了一个没有签名的DLL和CAB。在一个干净的操作系统启动它安装没有抱怨。虽然仍未在启动时加载,但我确实预计有关CAB和DLL的警告未签名。

2 个答案:

答案 0 :(得分:0)

驱动程序失败的原因不是证书问题。

驱动程序最初是自包含的,并且还包含一些GUI代码,并且已经扩展。用于使应用程序全屏的库在启动时不可用,因此它会因依赖性问题而无声地失败。

一旦库可用,这个目前已经通过启动应用程序加载解决,以便唤醒驱动程序。要添加的正确解决方案是延迟加载所需的库以防止依赖性失败。

答案 1 :(得分:0)

与此驱动程序相关的驱动程序签名也是一个问题。我们现在有制造商的证书来签署驱动程序,以便解决问题。