关于超级签名的原理以及系统,大部分归为两大类:

一、市面上美其名曰自动化的系统很多,但是基本都是依靠第三方工具,像内测侠啊、开心签名工具啊,每年基本都得交1000多块钱,而且还有下载次数限制。然后我试用了市面上的蒲公英或者其他工具,都是需要appid账号和密码还要允许登录,我猜测蒲公英的是在mac电脑上搭建了服务器,然后通过linux服务器控制mac,mac可能是托管了服务器,或者是自家有服务器mac server机房什么的,才能商用。

二、照抄,如下图。这种方式就只能自己玩玩,小公司玩玩,不适合商用,缺陷太明显,只能在mac上运行,不过可以在局域网内部署这种,方便测试。代码从某书那里花2k买的,买了之后才发现被坑了,只能在mac下运行

下载链接

今天就来帮大家解析一下其中的门门道道,以及这套机制的技术难点。

  • 签名原理

签名原理其实就一句话,使用了苹果提供给开发者的Ad-Hoc分发通道,把安装设备当做开发设备进行分发。

既然签名用是 Ad-Hoc ,那么 Ad-Hoc 所具有的优劣势也一并继承了下来:

优势:

直接分发,安装即可运行,不需要用户做企业证书的信任操作

目前稳定,不会有证书吊销导致的业务风险(后续苹果政策风险非常高)

缺点:

单开发者账号的iPhone设备数量只有100个,导致分发成本非常高(99美元/1年/100个设备)

开发者账号需要预先写入安装设备的UDID,在工具链不通的情况下,获取用户的UDID相对困难和繁琐,而且手动写入UDID不存在商用可行性,当然目前这个缺点被解决了

  • 整体架构

接下来我们就看看整套机制是如何进行的:

设备安装描述文件后,会向服务器发送设备的UDID。

服务器收到UDID后,将UDID注册到某个开发者账号下。

再生成签名用的描述文件,给IPA签名。

然后iPA传Server,使用itms-services方式让用户下载。

  • 技术细节

使用配置文件获取UDID

苹果公司允许开发者通过IOS设备和Web服务器之间的某个操作,来获得IOS设备的UDID(包括其他的一些参数)。这里的一个概述:

在你的Web服务器上创建一个.mobileconfig的XML格式的描述文件;

用户在所有操作之前必须通过某个点击操作完成.mobileconfig描述文件的安装;

服务器需要的数据,比如:UDID,需要在.mobileconfig描述文件中配置好,以及服务器接收数据的URL地址;

当用户设备安装描述文件后,设备会回调你设置的URL,如果你的URL返回302跳转的话,Safari浏览器会跳转到你所给的地址;

Apple Developer Center 自动化工具

接下来的关键点就是如何在获取到用户的UDID之后,秒级完成注册新的开发者设备+更新Provisioning Profile的。这里我们需要借助开源工具(Spaceship):

Spaceship公开了Apple Developer Center的API,而且执行速度比解析开发者Web页面快两个数量级,从而在非常短的时间内搞定Provisioning Profile。这个框架解决了整套机制的关键问题,成为整个工具链的基石。其实某平台早就完成了UDID获取和应用签名分发的技术储备,只差这套API。

下面是解析开发者Web页面和直接访问API的速度对比图:

Cool!!!!!!! 非常棒!再次为Spaceship鼓掌????

如何自动签名封包

此处其实应该有一万个解决方案,通过命令行脚本/Python脚本/或者其他第三方都能实现。

这里推荐使用Sigh这个框架来解决这个问题。

Sigh的用法和配置都非常简单,一个纯命令工具,丰富的配置选项(自行查阅文档),活跃的社区,完全够用了。

直接上演示图:

OTA 分发已签名的应用

此处也应该有一万个解决方案,那就选择AppDeploy吧。入选原因非常简单,这个框架有Logo(看脸的社会就是那么真实...)。

可视化部署流程如下图(同时支持命令行调用):

  • 结语

通过开源社区的力量,我们成功搞清了整个机制上的关键技术点,必须要说fastlane团队非常优秀的提供了工具链关键一环(Spaceship),从而使Ad-Hoc自动分发成为可能。

苹果对于App的分发审核管控可以说是非常严苛,这背后既有安全考虑,也有垄断利益。但无论如何,对于终端用户都是利大于弊的措施,App审核保护了无数的手机用户免受恶意程序的侵害。个人强烈反对这种绕过审核的分发形式。同时我要指出,分发平台以这种情况绕过苹果的审核是严重违反APPLE 开发商计划许可协议的3.3.3条款:

未经 Apple 预先书面核准或依照第 3.3.25 条 (In-App Purchase API) 得到允许,应用程序不可经由 App Store、Custom App Distribution 或 TestFlight 以外的分销渠道提供、解锁或激活附加的特征或功能。

开源工具链

获取设备UDID的第三方库:

下载链接

Apple Developer Center 自动化工具:

下载链接

自动签名封包工具:

下载链接

OTA 分发应用工具:

下载地址

三、企业签名的话就简单多了,github上很多开源的mac工具。

工具:Apple Configurator 2 Mac系统

iOS超级签名系统源码及分析相关推荐

  1. APP分发系统源码 全开源超级签名系统源码 附带详细部署文档

    介绍: APP分发系统源码.全开源超级签名系统源码. 附带详细部署文档. 源码全开源的!!! 后台账号:admin 后台密码:123456 需要的资料:阿里云账户 服务器 linux(4核8G) 阿里 ...

  2. JAVA开心超级签名系统源码+部署文档

    介绍: 超级系统依赖 下载解压系统,安装jdk8,安装mysql5.7或者以上的版本 建议ubuntu16,64位,ubuntu18 java默认是19,mysql安装也会复杂些,下面以默认测试的ub ...

  3. 解决APP误报毒 可打包APP可上传APK 自动实现5分钟随机更换包名和签名系统源码

    简介: 解决app误报毒 可打包APP可上传APK 自动实现5分钟随机更换包名和签名系统源码 本程序功能介绍: 程序可实现域名自动打包成app 出现误报毒并自动更换包名和签名(*时间一次) 也可以上传 ...

  4. 运营级IOS一键签名程序源码 支持app超级签名一键分发平台

    简介: IOS APP超级签名一键分发平台(七牛魔签)是一款app分发源码-app签名-完美运营级别IOS一键签名程序,该系统完全在linux下运行,源码不存在使用第三方收费工具,市面上很多系统都是使 ...

  5. ios 搭建php,超级签名网源码+ios分发+签名端本地化+文字搭建教程_PHP源码

    请注意:该源码来源网友分享,搜库资源网不提供技术支持,没有技术能力的小白勿拍.(如需安装服务费用另算) 应该是有用的东西不然不能卖几千吧,他看中的是8888的那个超级签名源码,这个是2600的,区别在 ...

  6. java版苹果免签源码超级签名免签源码

    介绍: 苹果超级签名是什么我就不在赘述了,项目由java+vue开发 功能: 1.支持登录注册,拥有共有池,可上传证书等基本操作,支持用户自行上传证书 2.支持修改分发页面轮播图,简介,安卓合并 3. ...

  7. 新版股票配资系统源码/股票分析系统/融资融券/两融C#

    新股申购功能持仓,股票配资软件全套源码,可支持二次开发,安卓.苹果手机版完整,全系股票配资交易系统,股票行情分析系统,开发语言是c#+mysql,框架结构spring : C/S构架 系统分电脑软件端 ...

  8. 同城外卖跑腿系统源码分析

    外卖订餐已经成为很多"社畜"日常不可分割的一部分,足不出户,只需要一部电子设备即可在线订餐,并且可提供的选择非常多样化,与传统的电话订餐外卖模式相比也更便捷的多. 因此,同城外卖跑 ...

  9. 直播开篇——电商直播系统源码直播场景和技术分析

    一.直播场景和技术分析 好吧,既然你们非要搞什么直播,我就开始写写直播吧,怪不得WebRTC是下一代关键技术,直播的一些业务页必须要用WebRTC来实现 1. 电商直播系统源码场景分析 秀场直播 这个 ...

  10. 【安卓系统源码学习之permission】 系统源代码AndroidManifest.xml分析之permission解读

    上一节,我们讲到了怎么去查找安卓源码中AndroidManifest.xml文件,打开这个文件,你会发现里面有很多<permission ... />的标签,如下图所示: 这个是用来做什么 ...

最新文章

  1. mina 中的IoBufer(一)
  2. PyQt5 图形界面 - Qt Designer创建qrc资源文件引用图片资源实例演示,QTextBrower组件引用图片资源方法展示
  3. 工作上,我到底想要什么呢?
  4. 秀一秀我的微软MVP(最有价值专家)的大礼包和水晶奖杯!
  5. Apache Tez介绍,术语,安装,监控等
  6. CodeForces - 1409F Subsequences of Length Two(dp)
  7. 火山引擎视频云:坚持基础技术创新,打造极致用户体验
  8. Linux与Windows文件查找命令
  9. bat java 指定堆大小_jvm 堆内存 栈内存 大小设置 查看堆大小
  10. 高清网络摄像机主流芯片方案之安霸、TI和海思对比
  11. [Swift]LeetCode19. 删除链表的倒数第N个节点 | Remove Nth Node From End of List
  12. (数据库系统概论|王珊)第三章关系数据库标准语言SQL-第二、三节:数据定义
  13. 求无向图中某顶点的度 (有注释)
  14. python预测发展趋势_Python预测算法哪家强?权游龙妈是生还是凉凉?
  15. mex2 Inputs and Outputs
  16. 基于词典和弱标注信息的电影评论情感分析系统
  17. python探究小市值因子的有效性
  18. 自学编程的5个技巧总结
  19. html滚动字幕制作教程,抖音上的字幕怎么弄的?滚动字幕制作方法教程[多图]
  20. katacontainers v2编译

热门文章

  1. #10094. 「一本通 3.5 练习 2」消息的传递
  2. 保护眼睛,绿豆沙颜色的RGB值和HSL值
  3. 从零实现一个简单卷积神经网络
  4. ETR290规范的理解
  5. 中国大学慕课——程序设计与算法(一)第二周测验
  6. windows10下安装choco
  7. java String类型的处理
  8. a1708硬盘转接口_macbook pro2017 a1708转接卡更换大容量硬盘,Apple/苹果笔记本电脑_好文分享_优购 - 荐优,购适...
  9. maya餐具图片_有哪些价格低但是逼格高很文艺又实用的物品呢?
  10. logparser使用_分析您的Web服务器数据并使用LogParser和Log Parser Lizard GUI进行授权