生活服务
iOS应用签名原理&应用重签名并附加调试
2024-12-24 08:58  浏览:137

在iOS系统出来之前,主流的操作系统(Mac或者Windows)软件随便从哪里下载都能安装,运行,系统安全存在隐患,盗版软件,病毒入侵,静默安装等等问题,苹果希望iOS的系统上不会出现这样的问题,就要保证每一个安装到iOS系统上的APP都是经过苹果官方允许的,那么苹果是如何做到的呢?

苹果服务器生成一对RSA的公钥A和私钥A,私钥A服务器保存,公钥A分给每一台iOS设备,服务器对每个APP使用私钥A签名,iOS设备在安装APP的时候,使用内置的公钥A对APP进行验证,只有通过验证了的APP才允许安装,这样就可以保证安装的APP都是经过苹果允许的了;

或许苹果在没有开放App Store给广大开发者的时候,这样简单的代码签名就够了;但是后来随着苹果对App Store的开放,个人开发者,公司开发者随时都需要连接真机调试开发APP;还有企业开发者需要在企业内部分发APP,而不需要上传App Store,需要做到开放这些方式安装APP,同时还要保证这些安装行为是可控的,那么上面所讲简单的代码签名就无法实现了

我们分析一下苹果对于APP安装的需求:

1.安装包不需要上传到App Store,可以直接安装到手机上
2.苹果为了保证系统的安全性,有必要对安装的APP有绝对的控制权
3.经过苹果的允许才可以安装
4.不能被滥用导致非开发APP也能被安装 为了实现这些需求,iOS代码签名的复杂度也就增加了,苹果实现的方案是双重签名

除了上传到App Store的APP可以下载安装之外,开发人员也可以直接使用Mac系统将开发中的APP安装到iPhone手机上,但是这个安装行为也是需要苹果允许的;

做过iOS开发的同学应该知道,当需要将Xcode开发的APP安装到真机上的时候,Xcode会在Signing & Capabilities下给出红色的错误,提示开发者 意思签名你开发的APP需要一个开发团队,这个开发团队就是由证书(Signing Certificate)和描述配置文件(Provisioning Profile)组成的;关于描述配置文件,我们放在后面再说;那这个证书(Signing Certificate)是怎么来的呢?

描述文件(Provisioning profile)一般包括三样东西:证书、App ID、设备。当我们在真机运行或者打包一个项目的时候,证书用来证明我们程序的安全性和合法性。

苹果为了解决应用滥用的问题,所以苹果又加了两个限制:

1.第一限制在苹果后台注册过的设备才可以安装.
2.第二限制签名只能针对某一个具体的APP.

并且苹果还想控制App里面的iCloud/PUSH/后台运行/调试器附加这些权限,所以苹果把这些权限开关统一称为Entitlements(授权文件).并将这个文件放在了一个叫做Provisioning Profile(描述文件)文件中.

描述文件的存放路径:~/Library/MobileDevice/Provisioning Profiles

描述文件是在AppleDeveloper网站创建的(在Xcode中填上AppleID它会代办创建),Xcode运行时会打包进入APP内.所以我们使用CSR申请证书时,我们还要申请一个东西!! 就是描述文件!

在开发时,编译完一个 APP 后,用本地的私钥M对这个APP进行签名,同时把从苹果服务器得到的 Provisioning Profile文件打包进APP里,文件名统一改为embedded.mobileprovision,把 APP 安装到手机上.最后iOS系统进行验证。

终端查看描述文件内容: 可以看到就是一个plist文件,里面有很多键值对,其中key为entitlements,这个键值对在后面使用codesign重签应用的时候会用到

了解了iOS应用的签名原理之后,我们是不是可以做一个大胆猜想,对于任何不是我们开发的APP,我们能不能使用我们的描述文件和证书来重新签名,别人的APP经过我们重签后就会被Xcode认为是我们当前正在开发的APP,从而可以附加调试了;实际上,我们确实可以对任何来源的APP进行重签和附加调试,但是前提是这个APP必须是砸壳过的APP,pp助手iOS版下架后,现在网上砸壳过的APP不好找了,就只有自己动手砸壳了,这个我们以后会讲,如果有需要的可以私我

codesign 是Xcode自带的签名工具,我们可以先使用它来帮我完成重签名,后面也可以直接使用Xcode进行重签;

通过授权文件(Entilements)重签.app包

通过使用codesign手动重签过程后,发现其实上述过程并不难,只是过程特别的复杂和繁琐,Xcode可以帮我们简化一些复杂繁琐的过程,那么现在我们直接使用Xcode来重签;

新建与重签APP同名的工程,并在真机上运行一次

对比下来发现使用Xcode来重签并附加调试别人的APP还是要简单方便一点

经过上述两种手动重签的之后,我们知道了重签的原理了,那么我们可以将上面的手动签名的步骤写成脚本,让Xcode来执行我们的脚本进行自动重签,脚本我已经准备好了,下面是使用脚本重签的步骤:

新建工程并在真机在运行一次

这一步还是跟之前一样,为了把描述文件安装到真机上,但是使用脚本来重签的话就不需要新建一个跟待重签APP同名的工程了

iOS应用签名原理&应用重签名并附加调试

将待重签ipa包放到新工程目录下的APP目录下

将脚本放到新工程根目录下并配置好

接下来command + R运行就可以运行并调试他人APP了,有可能报一些权限问题安装不了啥的,那就Command + shift + k清一下缓存再command + R运行,用上脚本之后可真是太舒服了,那为什么还要讲之那些手动重签的步骤呢…当然是学习脚本背后的原理啊

了啥的,那就Command + shift + k清一下缓存再command + R运行,用上脚本之后可真是太舒服了,那为什么还要讲之那些手动重签的步骤呢…当然是学习脚本背后的原理啊

    以上就是本篇文章【iOS应用签名原理&应用重签名并附加调试】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/tnews/2.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
腾讯围棋(野狐)手机版最新版中国象棋手机版「腾讯围棋(野狐)手机版最新版」
中国象棋竞技版最新版是有着很多经典的象棋残谱的经典益智游戏,在这里解锁自己感兴趣的棋谱,不管是是和电脑竞技还是真人pk,都
小米手机掉水里了应该怎么处理手机掉水里怎么处理「小米手机掉水里了应该怎么处理」
在日常生活中,我们难免会遇到一些突发情况,比如小米手机不慎掉入水中。面对这种情况,如果处理不当,可能会导致手机严重损坏。
有钱人“买爆”上海豪宅,有楼盘卖出200亿!去年多个“10万+”豪宅“日光”
本文来源:时代财经 作者:陈泽旋图源:图虫创意有钱人仍在楼市发挥他们的“钞能力”。近日,来自上海的中高端改善型项目海玥黄
华为WatchGT3可以遥控拍照吗?华为WatchGT3遥控拍照介绍华为手机驱动「华为WatchGT3可以遥控拍照吗?华为WatchGT3遥控拍照介绍」
近日有些朋友询问能否用华为Watch GT 3远程控制拍摄照片?以下是相关说明。(注:以上为简化版文本)华为WatchGT3支持遥控拍照,
谱写中印尼命运共同体新篇章
王鲁彤 中国和印度尼西亚是隔海相望的好邻居、命运与共的好伙伴,两国友谊源远流长。古代海上丝绸之路曾将双方紧密联系在一起,
东京股市继续上涨
  新华社东京4月18日电(记者钱铮)受医药和生物相关股普遍上涨拉动,日本东京股市18日继续上涨。日经225种股票平均价格指数收
如何有效格式化手机以清理存储空间和提升性能手机格式化是什么意思「如何有效格式化手机以清理存储空间和提升性能」
  在现代社会,手机已经成为我们生活中不可或缺的一部分。随着时间的推移,手机中的数据会逐渐增多,可能会导致设备运行缓慢,
如何快速关闭手机勿扰模式?详细步骤解析!手机勿扰模式在哪里「如何快速关闭手机勿扰模式?详细步骤解析!」
如何在Android手机上关闭勿扰模式 通过快捷设置关闭:用户可从屏幕顶部向下滑动以打开通知面板,接着找到“勿扰模式”图标(通常
microsd卡是什么卡手机sd卡是什么「microsd卡是什么卡」
  microsd卡是什么卡,很多人都有这样的疑问吧?下面就让我来为大家介绍一下吧!microsd卡是什么卡?  其实,MicroSD卡是一种
名茶汇聚的安徽,何以大而不强?
01为何名茶多,但名企少、名牌也少?说起安徽茶叶,大家第一印象是名优茶多,但这并不意味着龙头企业、知名品牌也多。中国十大名