Generated by Answer me with HTML 0.5.5 · 2026-10-30 20:16 · ★ Star on GitHub
iPhone 自签全景:证书、描述文件、LiveContainer 与 JIT
你手上这套 SideStore + LiveContainer 二合一,到底在跑什么
Lead: 一张 distribution 证书能长期签普通 App,但开不了 JIT。免费证书能开 JIT,但 7 天一轮。LiveContainer 里的 App 不占系统槽位,靠 LiveContainer 本体活着。掉签不删数据,删 App 才删数据。
先说你可能卡在哪
跟着教程一步步点,却不知道在点什么是正常的。教程只写「点这里」,不写这一步在跟谁说话。
这一页要拆掉三个误解:
- 以为「签名」是一件事。其实是三件套:证书、描述文件、App 包。你看到的「描述文件」只是三件套里的一张纸。
- 以为 LocalDevVPN 是翻墙工具。它一个字节都不出你的手机,它是给 iOS 造了一条虚拟数据线。
- 以为 LiveContainer 是模拟器。它不模拟硬件,它只是把别的 App 装进自己的肚子里跑。
三件套:印章、通行证、包裹
用门禁比喻:证书是公章,描述文件是保安手里的通行证,App 包是被带进门的人。
通行证上钉死四件事:谁盖的章、进哪栋楼、允许进哪几层、有效期到哪天。少一样,或者过期一天,保安就不让进。
你用免费 Apple ID 时,苹果给的不是一张证,是两张:
- 证书有效期 365 天,一年换一次。
- 描述文件有效期只有 7 天,所以要每周「续签」。
- 续签不是重新签 App。续签是去苹果那换一张新的通行证,再塞进 App 包里。
朋友给你的 distribution 证书是另一套路子:
| 项目 | 免费 Apple ID | distribution 证书 |
|---|---|---|
| 证书有效期 | 365 天 | 通常 1 年,企业签 3 年 |
| 描述文件有效期 | 7 天 | 通常 1 年 |
| 装机数量 | 只限你自己登记的设备 | Ad Hoc 限登记设备,企业签不限 |
| get-task-allow 权限 | 有 | 没有 |
| 能开 JIT | 能 | 不能 |
get-task-allow 是关键那一行。它允许调试器挂上去。JIT 必须靠调试器。所以 distribution 签的 App 天生开不了 JIT,这不是你的操作问题。
掉签以后,文件还在不在
先把一句话记住:iOS 删 App 才删数据,掉签不删数据。
掉签时你看到「App 不再可用」,那是保安拦在门口,不是房子被拆了。房子的门牌号就是 bundle id。
| 你做了什么 | 数据结果 | 说明 |
|---|---|---|
| 描述文件过期,图标变灰 | 数据全在 | 只是进不去 |
| 用同一个 bundle id 覆盖安装 | 数据全在 | 新包接回老容器 |
| 手动删除 App 再重装 | 数据没了 | 容器跟 App 一起删 |
| 换了 bundle id 装同名 App | 当成新 App | 系统认不出是同一个 |
| LiveContainer 本体过期 | 里面的 App 全锁 | 但容器没删 |
| 删除 LiveContainer | 里面数据一起没 | 除非用了外部容器 |
「文件」App 里「我的 iPhone → 某个 App」那个文件夹,就是这个 App 沙盒里的 Documents。它不在系统公共区,它在 App 自己的房子里。所以删 App,它跟着没。
微信这类 App 同理。聊天记录在它自己的沙盒里,不是公共文件。掉签时记录还在,删 App 就真没了。
两个逃生口:
- 想留东西,就永远别长按删除。掉签了直接覆盖安装同一个包。
- 重要数据定期往外搬。搬到 iCloud Drive 的文件,才算离开这栋房子。
iCloud 备份会带上 App 数据,包括自签 App。但恢复设备时,App Store 不会帮你装回自签 App。数据躺在备份里,你得重新签名装回去才看得到。本地加密备份还会带上钥匙串,登录态也能回来。
LocalDevVPN 到底在干什么
正常装 App 要靠电脑上的 iTunes 或 Finder,通过 USB 跟手机的安装服务说话。没有电脑,这条路就断了。
LocalDevVPN 造了一个虚拟网段:手机拿 10.7.0.0,另一头 10.7.0.1 假装是那台电脑。它干的事只有一件——把发往假电脑的包,改个 IP 再发回手机自己。
结果就是:iOS 以为自己在跟电脑通话,其实对面是 SideStore 自己开的服务。SideStore 冒充 iTunes,把新描述文件装了进去。
所以这个 VPN:
- 不出网,没有服务器,没有流量。
- 不耗电,因为不连外部。
- 只在你装、刷、续签的那一刻有用。
- 同一时间只能有一个 VPN,它会跟你的机场客户端打架。
为什么非要 WiFi,能不能绕
官方原话是:需要一个 Wi-Fi 连接,移动网络「不适合」。原因是 iOS 不允许这类「指向本机地址」的隧道在纯蜂窝下建立起来。
于是就出现一个很别扭的规则:要么连着 WiFi,要么开着飞行模式。飞行模式能成,是因为那时没有别的网络在抢路由。
四种绕法,按省事程度排:
- 走官方新开关。SideStore 0.6.4 起有实验性的蜂窝刷新,能批量刷。
- 手动骗一次。先开 LocalDevVPN,再开飞行模式,最后打开蜂窝数据。隧道活着,网也回来了。
- 改路由器。让家里的路由器替你做那次 IP 交换,手机端就完全不用开 VPN。代价是必须在那个局域网里。
- 换成长期证书。不需要 JIT 的 App 直接用 distribution 签,一年不用管刷新。
第一种要配两条快捷指令,缺一条就不工作:
- 建一条「打开蜂窝数据 → 打开 SideStore」,命名为 TurnOnData。
- 建一条「关闭蜂窝数据 → 打开 SideStore」,命名为 TurnOffData。
- 打开 SideStore 设置 → 诊断 → 实验功能 → 蜂窝刷新。
- 之后在没 WiFi 的地方刷新即可。
原理就是脚本替你把蜂窝关掉,让隧道起来,再把蜂窝打开。
LiveContainer 与二合一的续签链路
LiveContainer 是个「寄居蟹」。真正被系统承认的只有它一只壳,其它 App 都住在壳里。
所以答案是:能管内外,但不是同一条链路。
- 外面那一层,是内置 SideStore 在续。它刷的是 LiveContainer 本身的描述文件。
- 里面那一层,是 LiveContainer 自己在重签。它用的是你从 SideStore 导入的证书。
- 两条链路共用一张证书和一个 Apple ID。证书一废,两头一起完。
注意:二合一只占免费账号的 1 个槽位。这就是它存在的主要理由。
里面的 App 也不等于系统 App:
| 能力 | 系统直装 | LiveContainer 里 |
|---|---|---|
| 占免费账号槽位 | 占 | 不占 |
| 独立进程、独立内存上限 | 有 | 共享 LiveContainer 的额度 |
| 推送通知 | 有 | 一般没有 |
| 小组件、扩展 | 有 | 一般没有 |
| 添加到主屏幕 | 系统图标 | 快捷指令图标,不是真安装 |
| 数据位置 | 自己的沙盒 | LiveContainer 的容器里 |
「添加到主屏幕」那一步要看清:它只是建了个快捷方式,点开还是先喊 LiveContainer 起来。它没有把 App 装进系统的事实不会变。
想让里面的数据活得更久,可以在 LiveContainer 里给 App 建外部容器,把数据放到「文件」App 的目录下。这样删掉 LiveContainer,数据还在。
JIT:为什么它这么挑证书
用大白话讲:JIT 是让 App 一边跑一边现写新指令。苹果的芯片默认不允许这种内存。要开这个后门,必须有个调试器全程挂着证明「这是我自己的开发版本」。
于是结果很干脆:
- 免费开发证书有
get-task-allow,能开 JIT,代价是 7 天一轮。 - distribution 证书没有这个权限,怎么调都开不了。
- 这就是那个现象的答案:能开 JIT 的签名,只有免费证书。
在 LiveContainer 里开 JIT,要点三处:
- 设置 → JIT → 选 StikDebug。iOS 26 起只有 StikDebug 这一条路。
- 长按 App → 设置 → 打开「Launch with JIT」。
- 芯片从 A15、M2 这一代起,还要给每个 App 单独放 JIT 脚本。脚本找 App 作者要。
iOS 27 的现状要接受:大部分 App 开不了 JIT。SideStore 官方在 2026 年 6 月列出的可用名单只有这些:
| App | iOS 27 上 |
|---|---|
| UTM | |
| Amethyst | |
| MeloNX | |
| maciOS | |
| Geode | |
| Manic EMU | |
| Flycast(iOS 26 分支) | |
| MeloCafe | |
| ARMSX2 | |
| DukeX | 只在 A13、A14、M1 上能到 27 |
| DolphiniOS | 只到 26.6 |
名单会变。装之前先看 App 自己的说明,别拿这份表当永久有效。
你这套每 7 天要做的事
- 先开 LocalDevVPN,确认状态是已连接。
- 打开内置 SideStore,先刷 LiveContainer 本体。
- 再进 LiveContainer,让里面的 App 用证书重签。
- 用 StikDebug 的 App Expiry 看一眼,确认描述文件真的生效。
- 显示还有 7 天才算刷成功,只看「无报错」不够。
顺手记住三条反例:
- 大版本更新前别急着升。iOS 26.4、26.5 都曾经把整套打回原形。
- LiveContainer 本体过期,里面的 App 一起锁死。它是壳,壳破了全破。
- 换 Apple ID 或换证书,等于全部重签。数据在,但要一个个覆盖装回去。
掉签是门禁失效,删 App 才是拆房子。证书决定能不能开 JIT,描述文件决定能用几天,LiveContainer 决定占不占槽位。这三件事互不替代。
哪块没看懂直接问我。想让我展开某一段,比如把路由器那次 IP 交换写成可照抄的配置,说一声。