美文网首页
Android发布的时候签名的意义

Android发布的时候签名的意义

作者: 七分小熊猫 | 来源:发表于2017-05-27 11:44 被阅读159次

每个app都必须要签名才能安装到手机上,不然就会安装失败。

假设你开发了一个手机游戏app,然后你要生成一个apk,发布出去供玩家下载安装玩耍,你创建了一个签名文件,文件名是god.jks,并且使用这个签名文件对游戏进行了签名。用户成功安装。

好,过了一个星期,你修改了app的代码,增加了一个体力值系统,这个时候你要发布新版本出去就得再签一次名,有两种操作:

1. 如果你换了签名文件,不是上次那个god.jks,用户升级安装失败,

2. 如果你使用上次的god.jks签名,用户升级安装成功。

好,来看看Android系统在安装的时候做了什么:

第一步:读取新版本的签名信息

第二步:读取老版本的签名信息

第三步:对比新版和老版的签名信息是否一致,如果一致,继续安装,安装成功,如果不一致,停止安装,安装失败。

重点来了,为什么要对比签名信息?因为你发布的apk文件可能会被别人修改。让我们来模拟一个场景。

用户玩着你的游戏,到了第99关,想玩第100关,但是过关条件太难了,要收集99块碎片,用户才50块。这个时候用户动了歪心思,他想修改你的APK,让过关条件变成50块碎片。

于是他打开了他的破解软件,反编译了你的apk,修改了过关条件,然后他打包->签名->安装->签名信息不一致->安装失败。那么也基本等于破解失败。

像这样的场景还有很多,比如有的人会往你的apk里植入恶意代码,然后发布。用户不小心下载到了含有恶意代码的apk,然后在升级过程中,Android系统就会阻止安装,因为签名信息跟你的不一致,说明这个软件是盗版。

那么,这就是签名的意义所在,可以防止别人修改你的apk,然后发布给用户让用户升级。

当然Android系统的对比都是新版本跟老版本对比,如果用户先安装了你游戏的破解版,再安装你的正版时,也会安装失败。

到最后,apk其实就是一个.zip压缩文件,任何人都可以对他进行修改。

看吧,这是我反编译夸克浏览器的代码,如果我修改了他,哪怕是一个字母,我都升级安装不了

反编译后的JAVA代码
代码包

我修改了一个字母,打包签名

签名成功 开始安装 安装失败

因为我用的签名是我的,跟已安装的app包含的签名信息不一致,故安装失败

相关文章

网友评论

      本文标题:Android发布的时候签名的意义

      本文链接:https://www.haomeiwen.com/subject/vztqfxtx.html