999宝藏网

 找回密码
 

QQ登录

只需一步,快速开始

  • 1286阅读
  • 3回复

[教程&攻略] 关于安卓盒子update包的详解希望对想学习的人有用

[复制链接]

7522

主题

1425

回帖

3万

积分

宝藏院长

Rank: 16Rank: 16Rank: 16Rank: 16

回帖
1425
金币
28082
威望
88
积分
38195
股份
940
热心值
596
宝藏币
26

最佳新人活跃会员灌水天才新人进步宝藏新人进步勋章

发表于 2021-3-5 20:56:09 | 显示全部楼层 |阅读模式
本来想研究下安卓盒子的升级包的结果发现非常复杂主要地方加密不说,就算修改了系统模块也通不过签名验证,很厉害!

一、目录结构
update.zip包的目录结构,如下图所示:

165928hixfgbsggxfg44xu.png

二、目录结构分析
下面分析以全量包升级为准。

1、META文件夹
bootargs.txt    bootargs启动参数

filesystem_config.txt    system目录文件权限

recovery.fstab    分区表
165930c0w9aowojkz94ee9.png


2、META-INF目录
目录结构如下:|---META-INF/
       `|CERT.RSA
       `|CERT.SF
       `|MANIFEST.MF
       `|----com/
              `|----Android/
                      `|----metadata
              `|----google/
                      `|----android/
                             `|----update-binary
                             `|----updater-script
CERT.RSA:与签名文件相关联的签名程序块文件,它存储了用于签名JAR文件的公共签名。

CERT.SF:这是JAR文件的签名文件,其中前缀CERT代表签名者。

MANIFEST.MF:这个manifest文件定义了与包的组成结构相关的数据。类似Android应用的mainfest.xml文件。

metadata文件:是描述设备信息及环境变量的元数据。主要包括一些编译选项,签名公钥,时间戳以及设备型号等。

updater-script:此文件是一个脚本文件,具体描述了更新过程。我们可以根据具体情况编写该脚本来适应我们的具体需求。

update-binary:是一个二进制文件,相当于一个脚本解释器,能够识别updater-script中描述的操作。

文件怎么来的:

1、CERT.RSA、CERT.SF、MANIFEST.MF、metadata文件是自动生成的(怎么生成详见下文签名部分)

2、update-binary一般是系统编译过程中自动生成的升级脚本,但是这部分是可以通过手动编辑(详见后文update-binary脚本语言详解)

3、update-binary在sdk中哪个部分

./device/hisilicon/bigfish/build/emmc.mk
cp -a $(PRODUCT_OUT)/system/bin/updater $(EMMC_PRODUCT_OUT)/update/file/META-INF/com/google/android/update-binary
又上面脚本部分可知update-binary其实就是updater,updater部分是通过源码编译生成的,源码路径在:

bootable/recovery/updater/

3、system目录
system/目录的内容在升级后会放在系统的system分区。主要用来更新系统的一些应用或则应用会用到的一些库等等。

有的时候会以打包的形式(system.img)存在。

165932byf4ulq5tk5tj96s.png

4、userdata目录
userdata目录,用来更新系统中的用户数据部分。这部分内容在更新后会存放在系统的/data目录下。

有的时候会以打包的形式(userdata.img)存在。

165934qr1sk1bxr1kpgeeo.png

5、其他文件
*.img是更新各个分区分区所需要的文件。

165941m8x9ixafxcxh98f4.png

三、如何制作一个update升级包
update升级包一般有两种方式得到:

一种是通过编译系统得到update.zip包(make ota-package)
另一种是通过自己手动创建的方式得到update升级包
这里我们主要介绍下如何通过自己手动创建的方式得到update升级包

1、创建文件夹并拷贝你需要的升级文件
可以将原有的升级包中的升级文件解压拷贝过来,再替换你需要的文件,比如在system中添加一个apk或者修改写升级脚本updater-script。

165936cv0otrzzt077owgt.png

2、打包
将你需要的升级文件导入进来后,通过压缩打包成update.zip包


165938pywokum9n9cock9z.png
接下来就是最重要的一步,进行update包签名。

3、update包签名
      update.zip包的签名:update.zip更新包在制作完成后需要对其签名,否则在升级时会出现认证失败的错误提示。而且签名要使用和目标板一致的加密公钥。加密公钥及加密需要的三个文件在Android源码编译后生成的具体路径为:
               out/host/linux-x86/framework/signapk.jar
               build/target/product/security/testkey.x509.pem         
               build/target/product/security/testkey.pk8 。
      我们用命令make 制作生成的update.zip包是已签过名的,如果自己做update.zip包时必须手动对其签名。具体的加密方法:

      java –jar yourpath/signapk.jar –w yourpath/testkey.x509.pem yourpath/testkey.pk8 update.zip update_signed.zip
      以上命令在update.zip包所在的路径下执行,其中signapk.jar testkey.x509.pem以及testkey.pk8文件的引用使用你自己(yourpath替换你的)绝对路径。update.zip 是我们已经打好的包,update_signed.zip包是命令执行完生成的已经签过名的包。

另外,在具体升级时,对update.zip包检查时大致会分三步:

①检验SF文件与RSA文件是否匹配。
②检验MANIFEST.MF与签名文件中的digest是否一致。
③检验包中的文件与MANIFEST中所描述的是否一致。
————————————————
原文链接:https://blog.csdn.net/twk121109281/article/details/90693512

评分

参与人数 1金币 +5 收起 理由
老顽童 + 5 发帖辛苦,谢谢分享!

查看全部评分

1.发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;微笑

2.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;微笑

3.如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【金币】加分不会扣除自己的积分,做一个热心并受欢迎的人!微笑

回复

使用道具 举报

47

主题

6807

回帖

1万

积分

宝藏教授

Rank: 14Rank: 14Rank: 14Rank: 14

回帖
6807
金币
7660
威望
1
积分
14516
股份
0
热心值
1
宝藏币
0
发表于 2021-3-6 06:31:16 | 显示全部楼层
谢楼主提供!

1.发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;微笑

2.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;微笑

3.如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【金币】加分不会扣除自己的积分,做一个热心并受欢迎的人!微笑

回复 支持 反对

使用道具 举报

70

主题

827

回帖

3368

积分

宝藏博士生

Rank: 11Rank: 11Rank: 11Rank: 11

回帖
827
金币
2471
威望
0
积分
3368
股份
0
热心值
0
宝藏币
0
发表于 2021-3-6 18:32:33 | 显示全部楼层
这儿真好  学习了  谢分享

1.发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;微笑

2.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;微笑

3.如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【金币】加分不会扣除自己的积分,做一个热心并受欢迎的人!微笑

回复 支持 反对

使用道具 举报

212

主题

5248

回帖

1万

积分

总版主

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

回帖
5248
金币
9055
威望
0
积分
14540
股份
43
热心值
56
宝藏币
0

最佳新人新人进步宝藏新人进步勋章活跃会员音乐之星宝藏元老宝藏护航勋章终身成就总版主优秀斑竹区域管理管理员

发表于 2021-3-8 13:22:56 | 显示全部楼层
发帖辛苦,谢谢分享!
善良是心理养身的营养素,宽容是心理养身的调节阀,乐观是心理养身的不老丹,淡泊是心理养身的免疫剂。
回复 支持 反对

使用道具 举报

快速回复
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

返回列表

|999宝藏网|sitemap|手机版|举报|申请友情链接|  

免责声明:

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表999宝藏网立场!

999宝藏网论坛所发布的一切破解软件和补丁、注册机以及注册信息,仅限用于学习和研究目的。不得将上述内容用于商业或者非法途径!否则,一切后果请用户自负!

我们不生产软件,我们只是互联网上的搬运工,本站信息来自互联网,版权争议与本站无关,如果您喜欢该程序,请购买注册正版软件,获得正版优质服务!

请重视此声明,法律不容忽视!请支持正版,尊重版权!本站如有信息侵犯了您的权益,请联系:www@rin99.com及时删除!

Powered by Discuz! © 2001-2024 Comsenz Inc. (豫ICP备2021033223号) 备案图标 豫公网安备41142602000006号

Copyright © 2016-2024 999宝藏网 版权所有 All Rights Reserved.

GMT+8, 2024-4-24 06:23 , Processed in 0.209466 second(s), 57 queries .

快速回复 返回顶部 返回列表