守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 632|回复: 0

[Android] 关于APK签名冲突问题的记录

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51792
    钢镚
    1422

    开源英雄守望者

    发表于 2015-1-19 11:24:40 | 显示全部楼层 |阅读模式

    这几天更新APK 从版本v1.2升级到版本v1.3.遇到的签名冲突问题.在这里做一个记录.

    问题重现
    • APK_A:目前平台上玩家的版本v1.2  拥有平台签名 key_A;(md5算法)
    • APK_B:我方(开发商)提供的新版本v1.3 给平台方签名,拥有我方签名 key_B;(RSA,SHA1,MD5)
    • APK_C:平台方签名后返回的新版v1.3已签名包,拥有平台签名 key_A;

    A,B,C三个APK中  按照逻辑上将 A,C是应该拥有共同的签名key_A的,所以可以正常升级不会出现签名冲突;

    但是事情就是这样发生了,当我安装APK_A之后安装APK_C 提示签名冲突;

    原因分析
    • 平台方两次的签名key_A 被篡改;
    • 平台方两次签名工具差异导致的签名不成功(包括版本差异);
    • 平台方签名命令行两次发生变化,例如新增了某算法验证;
    • 平台方未去除干净key,就签名,等于是二次签名
    • 我方提供的签名key_B 对key_A产生影响;


    但是经过手动验证后1,2,3,5都可否决

    那就只剩下4,但是鉴于之前的更新都正常 所以4一开始是被我认为最不可能的.

    但是后来发现确实是4造成的.

    根本原因在于:平台方在未去签名的情况下进行签名;等于在APK在拥有key_A的情况下直接签key_B;

    签名后的APK_C还保留有APK_B的某类签名信息.所以导致了签名冲突;

    解决方式
    • 我方提供的时候每次都对自己的APK签名进行破坏.或者直接不签名,这个基本不可能,因为未签名的APK是不允许安装到设备上的,没签名就给平台方 请问怎么测试怎么保证版本完整性呢;
    • 平台方优化签名流程,在签名之前加一步去APK签名,变成 [去除签名]-[签名]-[优化]-[发包]的完整流程;

    其实就是两步都可以概括为一步.就是在对APK签名之前 先完全去除老签名;



    本文来自:http://shadowkong.com/archives/1332


    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-11-20 17:00 , Processed in 0.043988 second(s), 35 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

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