AUTORUN与数字签名(二)

上一篇文章说到AUTORUN很好用,麻烦是别人可能利用它做坏事。别人可能利用它来运行他的危险程序,偷取资料甚至破坏设备,甚至你自己的 AUTORUN也有可能被病毒感染。一个对付的做法是把AUTORUN放到一个不容易猜到的目录下,起个古怪的名字。不能从根本解决问题,但比没有强。根 本的解决办法是给AUTORUN加数字签名。Windows Mobile设备好像内置就支持程序的数字签名。Windows CE没有直接支持,但也提供了一些必要的组件,利用这些组件,我们可以自己实现数字签名功能。过程分三步,生成密钥和给AUTORUN.EXE签名,以及 验证AUTORUN.EXE:

  • 生成密钥
  1.  
    1. 在PC上用密钥生成工具生成一对公钥/私钥;
    2. 私钥妥善保管在某个地方,给AUTORUN.EXE生成数字签名用;
    3. 公钥嵌入到CE kernel里,验证AUTORUN.EXE的数字签名用。
  • 给AUTORUN.EXE签名
  1.  
    1. AUTORUN程序的开发和普通的windows CE完全一样;
    2. EXE编译出来后,用签名工具给EXE附加上它的签名,做成AUTORUN.EXE;
  • 使用AUTORUN.EXE
  1.  
    1. 在CE设备上插入U盘时,系统检测U盘上特定目录下是否存在AUTORUN.EXE;
    2. 若存在则用放在KERNEL里的公钥验证它的签名;
    3. 若相符则运行AUTORUN.EXE。

 

借用Wikipedia的图示,数字签名的制作和验证过程如下:

在WinCE上实现程序的数字签名,有几个步骤,如下:

  • 用Visual Studio提供的制作证书工具makecert.exe,生成密钥:
makecert -sv mycert . pvk -a sha1 -len  1024  -sky signature -n  " CN=XXXXXXX, O=YYYYYYY "  mycert . cer

 以上命令指定SHA1算法,密钥长度1024位,生成证书文件mycert.cer和私有密钥文件mycert.pvk

  •  cert2spc.exe把cer格式文件 (X.509 certificate)转换成spc格式(Software Publisher Certificate)

 

cert2spc.exe mycert . cer mycert . spc
  •  用pvk2pfx.exe把.spc文件和.pvk文件合并成一个pfx格式(Personal Information Exchange)文件,1234是保护pfx文件的密码
pvk2pfx.exe -pvk mycert . pvk -spc mycert . spc -f -po 1234 -pfx mycert . pfx
  •  给AUTORUN签名用signfile.exe:
signfile.exe -fautorun . exe -xmycert . pfx -ppubkey . h -w1234 -a

注意以上命令在给autorun.exe签名的同时还以C头文件的形式导出了公钥(pubkey.h)。pubkey.h要放到BSP中,验证AUTORUN.EXE的数字签名时要用到。公钥导出一次即可。

在BSP中验证签名,需要实现OEMCertifyModule和OEMCertifyInit。签名的验证算法CE在loadauth.lib里提供,具体用法可以参考MSDN,这里不详细讲了。

上面用到的命令中,signfile.exe是我在Platform Builder里提供的源代码(D:/WINCE500/PUBLIC/COMMON/OAK/TOOLS/SIGNFILE/signfile.c)基 础上改的,PB提供的代码只能从windows注册表中获取证书,这对于证书的管理和使用都不方便,我修改的版本可以从pfx文件读取证书。其他工具都可 以从网上找到。或者从我这里下载(包括我修改的singfile.c代码):

 http://files.cnblogs.com/singlerace/KEYTOOL.zip

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android Autorun是一种可在安卓手机上自动运行应用程序的功能。这个功能允许用户在手机启动时自动启动指定的应用程序。这对于那些需要经常使用某个应用程序的用户来说非常方便,因为他们不需要每次启动手机后手动打开该应用程序。 使用Android Autorun的过程非常简单。用户只需在手机上安装一个名为“应用启动管理器”的应用程序,然后在其中设置需要在启动时自动运行的应用程序。一旦用户将自己选择的应用程序添加到启动列表中,每次手机开机后该应用程序就会自动打开。用户还可以在任何时候编辑应用程序的启动列表,以满足自己的需求。 Android Autorun的好处是显而易见的。首先,它提供了便利,因为用户不需要每次打开手机时都手动启动某个应用程序。其次,对于那些需要经常使用某个应用程序的用户来说,这个功能能够节省他们的时间和精力。最后,Android Autorun还可以帮助用户控制自己的手机,确保只有用户真正需要的应用程序在启动时自动运行,从而提高手机的整体性能和效率。 然而,值得注意的是,使用Android Autorun功能时需要谨慎。如果用户设置了太多的自动运行应用程序,可能会导致手机的性能下降,并且在运行时会更耗费电量。因此,用户应该谨慎选择自动运行的应用程序,并根据自己的需求进行合理的设置。只启动真正需要的应用程序,避免过多的自动运行应用程序,是确保Android Autorun功能正常运行的关键。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值