通过verifier_test工具检验安卓升级包的完整性和合法性

用途说明:因我们开发的Android系统升级是通过网络自动升级的,没有触摸屏,需要远程控制,所以需要保证升级百分百成功,因试过如果网络推送升级包为不完整(网络差的时候丢掉一些文件)或者非法文件(没有签名),系统会进入recovery模式中,需要人为重启才能工作,这时我们就需要在进入recovery模式前判断升级包的完整性和合法性。以下就是该功能的详细讲解:

1.编译安卓verifier_test程序模块:

首先,如果自己的Android SDK编译是工程模式(eng),这里需要修改参数:cctc_0509_1080\bootable\recovery\Android.mk里的关于该工具的命令

LOCAL_MODULE_TAGS := tests 这里我们改成以下:

LOCAL_MODULE_TAGS := eng  

 

user: 指该模块只在user版本下才编译

eng: 指该模块只在eng版本下才编译

tests: 指该模块只在tests版本下才编译

optional:指该模块在所有版本下都编译

 

在根目录下执行: . build.sh  编译整个SDK

进入cctc_0509_1080\bootable\recovery\  下执行mm(单步编译,mm命令需要在上面执行编译整个SDK后才能工作)

 

Ok,cctc_0509_1080\out\target\product\macallan\symbols\system\bin中生成该工具。

 

2.工具使用方法:

verifier_test是验证工具,使用的是base64+md5编码验证,它需要用到系统中的keys,位于cctc_0509_1080\out\target\product\macallan\recovery\root\res\keys

AndroidMANIFEST.MFSHA1-Digest 编码数字也是通过该keys生成的。

Keys是安卓系统中recovery模式加密工具,和signapk.jar  testkey.x509.pem testkey.pk8 三个工具是配套的。

 

执行命令:

./verifier_test -file keys update.zip

 

shell脚本中使用命令:

./verifier_test -file $KEYS $LOCAL_UPDATE_FILE

if [ "$?" = "0" ] ;then

echo ok

exit 0

fi

如果返回值等于0的话,说明update.zip升级包是合法的,包括已经签名和完整的包。

 

安卓的升级包必须是需要经过签名的,该工具就是验证签名的,工具需要用到对于系统的keys,通过SHA256算法计算升级包是否通过。

 

通过verifier_test工具可以检验安卓升级包的完整性和合法性(是否签名)。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值