美文网首页
iOS系统签名机制及权限控制

iOS系统签名机制及权限控制

作者: 灰斗儿 | 来源:发表于2019-08-19 15:54 被阅读0次

本文演示的安装包是网易云音乐,下载自PP助手,查看内容使用Sublime text这个软件

一些问题

1,如何验证一个App的合法性?
2,App签名过程是怎么样的?
3,如何控制App权限?例如推送(APNS)等

前言

一个App是一个ipa格式的文件,该文件是一个压缩包
可以将后缀名改为zip 解压试试

ipa压缩包内部
iTunesArtwork =>  App的图标,一张高分辨率jpg图片。
iTunesMetadata.plist =>  App信息。包括名称、厂商、类别、账户、购买日期,购买账号等
META-INF => App属性。包括安装包大小等信息
Payload/neteasemusic => App程序主体了,它是一个格式为.app的文件
显示包内容 neteasemusic.app内部文件

文件很多,这里重点关注_CodeSignature这个文件夹,_CodeSignature包含一个名为CodeResources的文件,该文件存储了ipa包内所有的文件的签名信息(均是md5摘要签名),打开它

CodeResources内容近8万行,这里截取其中一段内容,其他的格式都一样


CodeResources内容

合法性验证

安装包大概分为两种来源AppStore和AdHoc
AppStore下载的ipa内文件数量少于AdHoc分发
AdHoc多了一个名为embedded.mobileprovision的描述文件,选中点击空格可查看
该文件包含如下内容


屏幕快照 2019-08-19 下午4.52.28.png

当一个App被安装到iOS设备上时(AppStore 下载)

  1. 解压该Ipa文件,读取CodeResources文件,对其中每一个资源签名进行验证(RSA)
  2. 验证通过,安装成功

当一个App被安装到iOS设备上时(Adhoc 分发)

  1. 解压该Ipa文件,读取CodeResources文件,验证embedded.mobileprovision的签名是否正确
  2. mobileprovision验证通过,读取embedded.mobileprovision内容,解析证书,得到证书
  3. 用证书的公钥验证CodeResources其他文件的签名是否证书
  4. 所以资源验证通过,检查设备的ID 是否在 PROVISIONED DEVICES 内包含
  5. 如包含,安装成功

相关文章

网友评论

      本文标题:iOS系统签名机制及权限控制

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