当前位置: 首页 > news >正文

Android 11系统签名修改

Android OS 映像在两个地方使用加密签名:

  1. 映像中的所有 .apk 文件都必须经过签名。Android 软件包管理器通过下列两种方式使用 .apk 签名:

  • 更换应用时,必须使用与旧应用相同的密钥对其签名,才能存取旧应用的数据。无论是通过覆盖 .apk 来更新用户应用,还是使用安装在 /data 下的新版本应用来覆盖系统应用,这一点都适用。

  • 如果两个或多个应用想要共享同一个用户 ID(方便共享数据等),则必须使用相同的密钥对它们进行签名。

  1. 必须使用符合系统预期的密钥对 OTA 更新包进行签名,否则在安装过程中 OTA 更新包将被拒绝。

标准安卓使用四对密钥,分别是:

testkey: 适用于未另外指定密钥的 apk 包的通用默认密钥。(如果app的Android.mk中LOCAL_CERTIFICATE未设置,则默认会采用testkey)

platform: 适用于核心平台所包含的 apk 包的测试密钥。

shared: 适用于家庭/联系人进程中的共享内容的测试密钥。(apk需要和home/contacts共享数据)

Meida: 适用于媒体/下载系统所包含的 apk 包的测试密钥。(apk是media/download系统中的一环)

除testkey以外,其他密钥需要在App的Android.mk中明确指定LOCAL_CERTIFICATE。

以上提到的四对密钥默认在build/target/product/security目录,每种密钥包含两个文件:一个扩展名为.x509.pem的证书,一个扩展名为.pk8的私钥。以platform为例,则会有platform.x509.pem和platform.pk8两个文件。

需要注意的是:以上密钥都是默认密钥,也就是说用户需要自己生成密钥才能保证安全性。

根据安卓官方的声明,还可使用以下方式对单个apk通过路径名指定不同的密钥,比如:

device/yoyodyne/apps/SpecialApp/Android.mk

[...]

LOCAL_CERTIFICATE := device/yoyodyne/security/special

现在,此版本使用 device/yoyodyne/security/special.{x509.pem,pk8} 密钥来对 SpecialApp.apk 进行签名。此版本仅可使用不受密码保护的私钥

2.密钥生成

根据安卓官方推荐,使用以下命令生成新的密钥:

subject='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
我们可将subject中的内容替换为公司的信息。这样在android-certs中会生成四对密钥:releasekey/platform/share/media。

生成key的过程中会提示输入password, 可以不输入,避免编译过程中要求密码输入。

可将生成的密钥拷贝到build/target/product/security目录覆盖掉原有的默认密钥。

3. Makefile修改

为了使用releasekey替换掉testkey,需要修改以下Makefile文件:

  1. 在buid/core/config.mk中定义变量:DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/releasekey

  1. ./system/sepolicy/prebuilts/api/26.0/private/keys.conf
    ./system/sepolicy/private/keys.conf中将testkey修改为releasekey。

4. 手动签名image

如果需要对OTA image手动签名,可以使用以下命令:

./build/tools/releasetools/ota_from_target_files

-k ~/.android-certs/releasekey \ --签名key

signed-target_files.zip \ --输入文件,已经签过名

signed-ota_update.zip --输出文件,重签名文件

那么,如何得到OTA image对应的ROM image呢?可以使用以下命令生成:

./build/tools/releasetools/img_from_target_files signed-target-files.zip signed-img.zip

生成的signed-img.zip就包含所有的.img文件。可用fastboot加载到设备:

fastboot update singed-img.zip

http://www.lryc.cn/news/4577.html

相关文章:

  • 亚马逊、沃尔玛卖家自养号退款经验和测评技术
  • Spring Security in Action 第十一章 SpringSecurity前后端分离实战
  • 高级前端二面vue面试题(持续更新中)
  • 七大设计原则之依赖倒置原则应用
  • Dubbo面试题2023
  • Swift(5)
  • [Java 进阶面试题] CAS 和 Synchronized 优化过程
  • 算法思想 - 贪心算法
  • 解决需求变更难题的8大方案
  • NSSROUND#8[Basic]
  • Vue3代码初体验找不同
  • opencv调取摄像头录制
  • html标签手册
  • SpringMVC--视图、RESTful案例、处理AJAX请求
  • 一个同学升了leader,今年活还没干,他就已经想好组里成员的两次绩效考核怎么打了,还说:leader都是这样的!...
  • Docker 面试知识点
  • C++高级篇学习笔记
  • gentoo基本安装过程
  • 【LeetCode】1234. 替换子串得到平衡字符串
  • [动手写操作系统]-01-开机运行系统
  • 最长回文子序列问题
  • 月薪11k!从财务专员到软件测试工程师,成都校区小哥哥用三个月实现转行换岗
  • Android 逆向工具大整理,碉堡了
  • 二维数组的定义
  • SpringMVC--获取请求参数、域对象共享数据
  • 2月13日,30秒知全网,精选7个热点
  • 【C++设计模式】学习笔记(2):模式分类与模版方法 Template Method
  • 【Swift 60秒】92 - Nil coalescing
  • python pip安装的包的路径
  • 个人收藏学习