Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security WM6.1驱动程序上的代码签名_Security_Windows Mobile_Device Driver_Code Signing_Windows Mobile 6 - Fatal编程技术网

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

Security WM6.1驱动程序上的代码签名,security,windows-mobile,device-driver,code-signing,windows-mobile-6,Security,Windows Mobile,Device Driver,Code Signing,Windows Mobile 6,我已经在堆栈溢出问题上问过类似的问题,但我相信这部分问题可以分为一个新问题 我以前没有做过移动开发,所以签名和证书的使用对我来说是一个新概念,而且对于我所做的所有主题的阅读,它并没有真正提高我的知识,因为我所读的每个网站只谈论签名的一小部分,而不是完整的过程,并且拼凑起来很困难 我遇到的问题是在WM6.1上启动时没有加载驱动程序。它是一个GPS驱动程序,因此需要加载,以便可通过COM端口访问任何GPS软件。我认为这是由于签名问题,因为从未调用过DllMain方法 我已经获得了一个特权证书(.pf

我已经在堆栈溢出问题上问过类似的问题,但我相信这部分问题可以分为一个新问题

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

我遇到的问题是在WM6.1上启动时没有加载驱动程序。它是一个GPS驱动程序,因此需要加载,以便可通过COM端口访问任何GPS软件。我认为这是由于签名问题,因为从未调用过DllMain方法

我已经获得了一个特权证书(.pfx)以供使用,并且为了记录在案,我还获得了新的(2010年1月)SDKSamplePrivDeveloper证书。我假设驾驶员需要特权证书

那么我到底做了什么呢。在过去的4-5天里,我尝试了至少几种不同的方法,但都没有成功

在visualstudio中; 1) DLL项目已将authenticode签名设置为我们的.pfx证书。构建项目

2) CABWizard项目已将authenticode设置为同一证书。构建项目

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

4) 我已经将这些安装到设备上,虽然驱动程序在我们的测试应用程序中工作,但它不会在启动时加载,即使它在“内置”中的注册表设置是正确的。当检查注册表中的证书存储时,我可以看到添加到SPC、根、特权和非特权存储的证书。当使用系统证书时,我可以在根选项卡中看到证书。所以他们肯定被添加了

考虑到上述情况,该方法不起作用。我还使用SDKSamplePrivDeveloper证书尝试了来自的signer.exe工具

1) Dll项目的authenticode签名设置为No。请生成该项目

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

3) CABWizard项目已将authenticode设置为No。请生成该项目

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

5) 使用NewSDKCerts.Cab将SDKSamplePrivDeveloper证书安装到存储中

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

7) 同样,在热重启时,驱动程序不会在引导时加载到device.exe

鉴于上述情况,有谁能给我一些明确的指示,以确保在启动时加载驱动程序。很明显,我在签名方面做了一些错误,因为在WindowsCE5中启动时没有出现问题。我知道设备驱动程序代码没有问题,因为我可以在WM6.1中使用ActiviateDevice()方法的代码中手动激活它

编辑--


也许值得一提的是,我还创建了一个DLL和CAB,完全没有签名。而且在安装的操作系统的干净引导下,没有任何抱怨。虽然在引导时仍然没有加载,但我确实期望得到有关CAB和DLL未签名的警告。

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

该驱动程序最初是自包含的,还包含一些GUI代码,后来进行了扩展。用于使应用程序全屏显示的库在启动时不可用,因此它因依赖性问题而自动失败


目前已通过稍后加载启动应用程序来解决此问题,以便在库可用时唤醒驱动程序。要添加的适当解决方案是延迟加载所需的库,以防止依赖项失败。

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