android系统签名及修改

android系统签名及修改系统签名文件目录:build/make/target/product/security主要签名文件media.pk8media.x509.pemnetworkstack.pk8networkstack.x509.pemplatform.pk8platform.x509.pemreleasekey.pk8releasekey.x509.pemshared.pk8shared.x509.pemtestkey.pk8testkey.x509.p…

大家好,又见面了,我是你们的朋友全栈君。

系统签名文件目录:
  build/make/target/product/security

主要签名文件

 media.pk8
 media.x509.pem

 networkstack.pk8
 networkstack.x509.pem

 platform.pk8
 platform.x509.pem

 releasekey.pk8
 releasekey.x509.pem

 shared.pk8
 shared.x509.pem

 testkey.pk8
 testkey.x509.pem

 verity_key
 verity.pk8
 verity.x509.pem

各类签名说明:
    platform:平台的核心应用签名,签名的apk是完成系统的核心功能。这些apk所在的进程UID是system。manifest节点中有添加android:sharedUserId=”android.uid.system”。
    media: 这个签名的apk是media/download的一部分。manifest节点中有添加android:sharedUserId=”android.media”。
    shared:这个签名的apk可以和home/contacts进程共享数据。manifest节点中有添加android:sharedUserId=”android.uid.shared”。
    testkey/releasekey:平台默认key。在编译中未指定LOCAL_CERTIFICATE的,默认是用testkey。因为testkey是公开的,任何人都可以获取,不安全,所以一般使用 自己创建releasekey作为默认key。

.pk8 与 .x509.pem
    .pk8就是私钥文件,用于对apk进行签名。
    .x509.pem是证书文件,相当于公钥。主要用于验证某个apk是否由相应的私钥签名。

在系统中配置和使用:
    build/make/core/config.mk中

    ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE
      DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE)
    else
      DEFAULT_SYSTEM_DEV_CERTIFICATE := build/make/target/product/security/testkey
    endif

    如果配置了PRODUCT_DEFAULT_DEV_CERTIFICATE,则使用PRODUCT_DEFAULT_DEV_CERTIFICATE。
    否则使用build/make/target/product/security/testkey。

    system/sepolicy/private/keys.conf中
        [@PLATFORM]
    ALL : $DEFAULT_SYSTEM_DEV_CERTIFICATE/platform.x509.pem

    [@MEDIA]
    ALL : $DEFAULT_SYSTEM_DEV_CERTIFICATE/media.x509.pem

    [@NETWORK_STACK]
    ALL : $MAINLINE_SEPOLICY_DEV_CERTIFICATES/networkstack.x509.pem

    [@SHARED]
    ALL : $DEFAULT_SYSTEM_DEV_CERTIFICATE/shared.x509.pem

    # Example of ALL TARGET_BUILD_VARIANTS
    [@RELEASE]
    ENG       : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem
    USER      : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem
    USERDEBUG : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem

 
  Android.mk使用LOCAL_CERTIFICATE指定签名文件
   如:LOCAL_CERTIFICATE := platform
    

APK签名查看:
    keytool -printcert -jarfile DKSystemManager.apk
    签名者 #1:

    签名:

    所有者: EMAILADDRESS=zyfzhangyafei@163.com, CN=blackview, OU=blackview, O=blackview, L=sz, ST=gd, C=cn
    发布者: EMAILADDRESS=zyfzhangyafei@163.com, CN=blackview, OU=blackview, O=blackview, L=sz, ST=gd, C=cn
    序列号: 98d0393b4632d805
    有效期为 Mon Feb 21 15:46:24 CST 2022 至 Fri Jul 09 15:46:24 CST 2049
    证书指纹:
         MD5:  C5:DD:3B:32:18:81:30:BA:69:AF:C5:91:5F:00:C0:0D:49:34:61:3B
         SHA1: EA:50:DE:80:A8:4F:91:0C:52:8D:2F:75:B6:33:A6:CD:F9:DE:94:F6:4A:1C:13:A0:D7:9A:CD:DC:1D:20:F8:15
         SHA256: SHA256withRSA
    签名算法名称: 2048 位 RSA 密钥
    主体公共密钥算法: 3
    版本: {10}

生成签名:
    1.生成长度为2048位的RSA私钥

    openssl genrsa -3 -out test.pem 2048

    2.生成x509格式的公钥证书
    openssl req -new -x509 -key test.pem -out test.x509.pem -days 10000

    3.生成符合PKCS8标注的私钥文件
    openssl pkcs8 -in test.pem -topk8 -outform DER -out test.pk8 -nocrypt

   verity_key生成方法:
    先执行上面三步,生成veritykey.x509.pem veritykey.pk8
    1、make generate_verity_key (mmm system/extras/verity/)
    
    2、执行 out/host/linux-x86/bin/generate_verity_key -convert veritykey.x509.pem verity_key

验证key:
   openssl x509 -noout -subject -issuer -in media.x509.pem

   输出
   subject= /C=cn/ST=gd/L=sz/O=blackview/OU=blackview/CN=blackview/emailAddress=zyfzhangyafei@163.com
   issuer= /C=cn/ST=gd/L=sz/O=blackview/OU=blackview/CN=blackview/emailAddress=zyfzhangyafei@163.com

系统key文件生成keystore

    生成keystore文件主要是给外部apk开发签名使用的;

    以常用的platform签名为例:

    //如果之前没有生成platform.pem文件,现在可以执行以下命令生成

    openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

    //生成platform.p12文件,设置对应的密码和alias名(app签名使用到)

    openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:密码 -name 名称

    //生成platform.jks(app使用的签名文件),启动

    keytool -importkeystore -deststorepass 密码 -destkeystore ./platform.keystore -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 密码

    //剩下的就是将platform.jks拷贝到app工程目录下设置alias名和密码即可

    最终的platform.keystore即为我们所要的keystore

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151972.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java开发手册之二方库依赖

    Java开发手册之二方库依赖Java开发手册之二方库依赖

    2022年4月23日
    52
  • a星算法c++实现_递归算法理解

    a星算法c++实现_递归算法理解翻了翻别人写的博客,我看到一个A星算法,只怪自己见识太少,竟然没听过这个算法。网上查了好些资料,自己对这算法理解了些,并用C#实现出来。           A星算法,也叫A*算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。如在一张dota地图上,英雄从一个地方走动到地图上另一个点,它选择最优路线的算法。       如上图,绿点是

    2022年10月6日
    0
  • 多层感知机和神经网络_CNN采用多层感知机进行分类

    多层感知机和神经网络_CNN采用多层感知机进行分类单独的ESN仿真:ESN的运行结果如下所示:这个部分的误差为:0.0435ESN部分就不多做介绍了,你应该了解的,下面我们对ESN和BP改进和极限学习改进分别进行修改和说明,并进行仿真。ESN+BP的仿真:首先,在原始的ESN中,权值的计算是通过pseudoinverse.m这个函数进行计算的,其主要内容就是:即:这里,我们的主要方法…

    2022年8月30日
    0
  • PHP和PHPINFO

    PHP和PHPINFOPHP开放源码和跨越平台,PHP可以运行在WINDOWS和多种版本的LINUX上。它不需要任何预先处理而快速反馈结果,它也不需要mod_perl的调整来使您的服务器的内存映象减小。PHP消耗的资源较少

    2022年7月4日
    21
  • 高级shell脚本编程指南_python的快速入门

    高级shell脚本编程指南_python的快速入门文章目录1.shell简介 1.1什么是shell 1.2shell脚本 1.3运行shell脚本 1.4shell注释 1.5shell编写的基本步骤 2.shell变量 2.1命名变量 2.2使用变量 2.3变量类型 2.4变量操作 3.shell字符串 3.1字符串类型 3.2字符串操作 4.shell数组 4.1定义数组 4.2数组操作 5.shell传递参数 6.shell运算符

    2022年10月3日
    0
  • 神经网络为什么要归一化

    神经网络为什么要归一化用神经网络的小伙伴都知道,数据需要做归一化,但是为什么要做归一化,这个问题一直模梭两可,网上也没有较全的回答,小编花费了一段时间,作了一些研究,给大家仔细分析分析,为什么要做归一化:1.数值问题。无容置疑,归一化的确可以避免一些不必要的数值问题。输入变量的数量级未致于会引起数值问题吧,但其实要引起也并不是那么困难。因为tansig的非线性区间大约在[-1.7,1.7]。

    2022年6月23日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号