购买地址 http://www.shanzhuqian.com ,官方购买地址可以直接在线支付,支付后会跳出山猪签的安装链接,如果没有自动跳出,购买后点击获取安装链接就可以安装了。paypal的用户因为网络的因素,不要急着再次购买等几分钟获取安装链接。游戏辅助已不支持签名。
专业的研究团队
我们拥有一支资深的研发团队
一直致力于产品更新迭代
优质的证书资源
支持超大文件
保证用户证书不掉签
高效的客服团队
7*24小时响应机制
随时随地响应您的需求
首先查询您的手机型号和系统版本是否支持越狱,如果你有电脑的话你就用电脑越狱,
或者就是用手机软件山猪签工具直接越狱,下载地址 http://www.shanzhuqian.com,下载山猪签这个工具到手机上,因为苹果那边不让上架,这样就越狱不需要电脑 重要事情说三遍 不需要电脑,不需要电脑,不需要电脑只要一把手机就可以了,你可以自己找一下.不过越狱对手机的伤害是比较大的,因为有一些程序会影响手机,所以不建议用越狱.
苹果手机越狱有风险,越狱需谨慎。苹果手机系统因为会自动杀进程所以容易维持好的机器环境,越狱之后可以体验到更多的自定义功能,不过一般人不建议越狱,除了喜欢追求其他开发功能的人,不过现在很多都是借助平台越狱,PP助手,ITURN等工具用电脑越狱,但是现在很多人都很少用电脑了,电脑基本成为了摆设.所以现在有不少人开始研究用手机签名安装软件.目前比较成熟的是山猪签,下载后直接包含了苹果所需要的证书,可以直接安装unc0ver和odyssey到手机上,实现了在手机上就可以直接越狱的功能.也算是一款不错的开发.解决了很多一直要靠电脑越狱的烦恼.之前也是用电脑越狱的,不过每次关机后就要重新越狱非常的麻烦.现在就不用那么麻烦了,而且随时随地都能实现越狱.
iOS 签名机制复杂,各种证书,Provisioning Profile,entitlements,CertificateSigningRequest,p12,AppID,概念一堆,也很容易出错,本文尝试从原理出发,一步步推出为什么会有这么多概念,希望能有助于理解 iOS App 签名的原理和流程。
苹果为什么这么做?
先来看看苹果的签名机制是为了做什么。在 iOS 出来之前,在主流操作系统(Mac/Windows/Linux)上开发和运行软件是不需要签名的,软件随便从哪里下载都能运行,导致平台对第三方软件难以控制,盗版流行。苹果希望解决这样的问题,在 iOS 平台对第三方 APP 有绝对的控制权,一定要保证每一个安装到 iOS 上的 APP 都是经过苹果官方允许的,怎样保证呢?就是通过签名机制。
非对称加密原理
通常我们说的签名就是数字签名,它是基于非对称加密算法实现的。对称加密是通过同一份密钥加密和解密数据,而非对称加密则有两份密钥,分别是公钥和私钥,用公钥加密的数据,要用私钥才能解密,用私钥加密的数据,要用公钥才能解密。
简单说一下常用的非对称加密算法 RSA 的数学原理,理解简单的数学原理,就可以理解非对称加密是怎么做到的,为什么会是安全的:
上述的 (n,e) 这两个数据在一起就是公钥,(n,d) 这两个数据就是私钥,满足用公钥加密,私钥解密,或反过来公钥加密,私钥解密,也满足在只暴露公钥(只知道 n 和 e)的情况下,要推导出私钥 (n,d),需要把大整数 n 因数分解。目前因数分解只能靠暴力穷举,而n数字越大,越难以用穷举计算出因数 p 和 q,也就越安全,当 n 大到二进制 1024 位或 2048 位时,以目前技术要破解几乎不可能,所以非常安全。
若对数字 d 是怎样计算出来的感兴趣,可以详读这两篇文章:RSA 算法原理(一)(二)
数字签名
现在知道了有非对称加密这东西,那数字签名是怎么回事呢?
数字签名的作用是我对某一份数据打个标记,表示我认可了这份数据(签了个名),然后我发送给其他人,其他人可以知道这份数据是经过我认证的,数据没有被篡改过。
有了上述非对称加密算法,就可以实现这个需求:
非对称加密
好了,有了非对称加密的基础,知道了数字签名是什么,怎样可以保证一份数据是经过某个地方认证的,来看看怎样通过数字签名的机制保证每一个安装到 iOS 上的 APP 都是经过苹果认证允许的。
签名方式
1. AppStrore:
要实现这个需求很简单,最直接的方式,苹果官方生成一对公私钥,在 iOS 里内置一个公钥,私钥由苹果后台保存,我们传 App 上 AppStore 时,苹果后台用私钥对 APP 数据进行签名,iOS 系统下载这个 APP 后,用公钥验证这个签名,若签名正确,这个 APP 肯定是由苹果后台认证的,并且没有被修改过,也就达到了苹果的需求:保证安装的每一个 APP 都是经过苹果官方允许的
AppStore签名方式
2. 使用公司(个人)开发者账号安装
开发者 App 时可以直接把开发中的应用安装进手机进行调试。开发时我们有两个需求:
(1)我们安装包不需要传到苹果服务器,可以直接安装到手机上。加入你编译一个 APP 到手机前要先传到苹果服务器签名,这显然是不能接受的。
(2)苹果必须对这里的安装有控制权:a.经过苹果允许才可以这样安装。b.不能被滥用导致非开发app也能被安装。
苹果这里给出的方案是使用了双层签名,会比较绕,流程大概是这样的:
开发者安装
3.在实际开发中:
除了 设备 ID / AppID,还有其他信息也需要在这里用苹果签名,像这个 APP 里 iCloud / push / 后台运行 等权限苹果都想控制,苹果把这些权限开关统一称为 Entitlements,它也需要通过签名去授权。
实际上一个“证书”本来就有规定的格式规范,上面我们把各种额外信息塞入证书里是不合适的,于是苹果另外搞了个东西,叫 Provisioning Profile,一个 Provisioning Profile 里就包含了证书以及上述提到的所有额外信息,以及所有信息的签名:
最终流程
开发者证书从签名到认证最终苹果采用的流程大致是这样,还有一些细节像证书有效期/证书类型等就不细说了。
概念和操作
上面的步骤对应到我们平常具体的操作和概念是这样的:
第 6 - 7 步的打包和验证都是 Xcode 和 iOS 系统自动做的事。
这里再总结一下这些概念:
其他发布方式
前面以开发包为例子说了签名和验证的流程,另外两种方式 In-House 企业签名和 AD-Hoc 流程也是差不多的,只是企业签名不限制安装的设备数,另外需要用户在 iOS 系统设置上手动点击信任这个企业才能通过验证。
而 AppStore 的签名验证方式有些不一样,前面我们说到最简单的签名方式,苹果在后台直接用私钥签名 App 就可以了,实际上苹果确实是这样做的,如果去下载一个 AppStore 的安装包,会发现它里面是没有 embedded.mobileprovision 文件的,也就是它安装和启动的流程是不依赖这个文件,验证流程也就跟上述几种类型不一样了。
据猜测,因为上传到 AppStore 的包苹果会重新对内容加密,原来的本地私钥签名就没有用了,需要重新签名,从 AppStore 下载的包苹果也并不打算控制它的有效期,不需要内置一个 embedded.mobileprovision 去做校验,直接在苹果用后台的私钥重新签名,iOS 安装时用本地公钥验证 App 签名就可以了。
那为什么发布 AppStore 的包还是要跟开发版一样搞各种证书和 Provisioning Profile?猜测因为苹果想做统一管理,Provisioning Profile 里包含一些权限控制,AppID 的检验等,苹果不想在上传 AppStore 包时重新用另一种协议做一遍这些验证,就不如统一把这部分放在 Provisioning Profile 里,上传 AppStore 时只要用同样的流程验证这个 Provisioning Profile 是否合法就可以了。
所以 App 上传到 AppStore 后,就跟你的 证书 / Provisioning Profile 都没有关系了,无论他们是否过期或被废除,都不会影响 AppStore 上的安装包。
到这里 iOS 签名机制的原理和主流程大致说完了,希望能对理解苹果签名和排查日常签名问题有所帮助。