iOS 首款“免安装”App 启动器诞生:打破苹果 3 个 App 限制,支持多开多任务

不是越狱,但比越狱更优雅;不是模拟器,运行效率与原生毫无差别。一个 iOS App 启动器,把苹果免费开发者账号的 3 个 App 限制彻底打穿!

先说苹果给免费开发者挖的坑

用免费的苹果开发者账号在 iPhone 上侧载应用,有个让人非常难受的限制:总共只能同时安装 3 个 App

具体来说,每安装一个 App 就要消耗一个 App ID,而且证书只有 7 天有效期,过期后需要重新签名、重新安装。想多装一个 App,就得删掉一个之前的。想用两个不同账号登录同一个 App?那就得装两次,占掉两个珍贵的 App 位置。

LiveContainer 如何破局

LiveContainer 的解决方案非常巧妙:把所有 App 都装在一个容器里,系统层面只看到这一个 App,占 1 个 App ID,装的 App 数量完全不受限制。

它到底是什么?

LiveContainer 是一个 iOS App 启动器——注意,它不是模拟器也不是虚拟机,而是真正在 iOS 原生运行时里执行目标 App。

它的核心能力可以概括为:

  •   无限 App 安装:所有 App 装在 LiveContainer 里,只消耗 1 个 App ID,苹果的 3 个应用限制直接失效

  •   无需 JIT 即可运行:JIT-Less 模式下,App 使用 LiveContainer 自己的证书自动签名,点开即用

  •   多开 + 多任务:同一个 App 可以装多个独立数据容器,相当于多账号同时在线;还支持画中画和分屏运行

技术原理:它是怎么做到的?

这是整个项目最值得深入了解的部分。LiveContainer 没有利用任何越狱漏洞,而是对 Mach-O 二进制格式和 dyld 动态链接器做了精准的“操作”。

image.png

第一步:将 App 的主程序变成动态库

iOS App 的主可执行文件(类型 MH_EXECUTE)通常无法被另一个进程直接加载。LiveContainer 做了两处关键修改:

  1.  修改 __PAGEZERO 段的加载地址和大小

  2.  把文件类型从 MH_EXECUTE 改成 MH_DYLIB

经过这两个补丁,目标 App 就变成了一个可以通过 dlopen() 加载的动态库。

第二步:欺骗 dyld,让 App 以为自己是主进程

App 启动时会调用 _NSGetExecutablePath 查询自己的路径。LiveContainer 拦截了这个函数:

  •   先调用原始函数拿到真实路径

  •   通过内存操作解锁写权限

  •   把路径替换成目标 App 的路径

  •   再恢复原始函数

同时,NSBundle.mainBundle 也被替换成目标 App 的 bundle,让 App 完全相信自己是在“自己的”进程里运行。

第三步:dlopen 加载,跳转到入口点

dlopen(目标 App 可执行文件路径) → 注入所有 .dylib 插件 → 找到 App 的入口点 → 直接跳转执行 → App 调用 UIApplicationMain,正常启动。

整个过程不需要越狱,不需要内核漏洞,完全在用户态完成。

五大功能详解

1. 无限安装,多版本共存

用 AltStore 或 SideStore 侧载 App 时,每个 App 都要独占一个 App ID。LiveContainer 把所有 App 装在自身沙盒里,系统只知道有 LiveContainer 这一个 App,所以:

  •   一个免费账号可以安装几十上百个 App

  •   同一个 App 可以装多个版本,每个版本有独立的数据容器

  •   支持 128 个独立 Keychain 访问组,最多可让 128 个账号同时共存

2. JIT-Less 模式

早期版本必须开启 JIT(即时编译)才能绕过代码签名,每次启动都要连电脑操作。现在的 JIT-Less 模式大幅简化了流程:

  1.  从 AltStore/SideStore 导入证书

  2.  LiveContainer 用这个证书自动给 App 重新签名

  3.  直接点图标启动,零额外操作

如果某些 App 确实依赖 JIT 运行,配合 StikDebug 使用就行,LiveContainer 会自动探测并启动 JIT 支持流程。

3. 多任务:画中画 + 分屏

这是 3.x 版本加入的重量级功能:

  •   虚拟窗口模式(iPhone/iPad):在 LiveContainer 界面内开启悬浮窗,同时运行多个 App,每个窗口可独立调整大小和缩放比例

  •   画中画(PiP):App 窗口可以悬浮在其他界面之上,切出 LiveContainer 后继续运行

  •   iPad 原生窗口:在 iPadOS 上,每个 App 可在独立的系统级窗口中运行,实现真正的多窗口多任务

  •   双 LiveContainer 实例:安装第二个 LiveContainer(灰图标版),两个实例共享 App 数据,做到“两个 App 真正同时运行”

4. 插件支持

LiveContainer 内置了从越狱社区移植的 TweakLoader:

  •   支持 CydiaSubstrate 格式的 .dylib 插件

  •   Tweaks 文件夹里的插件可全局注入所有 App

  •   可以为每个 App 单独设置插件文件夹,随时切换

  •   内置签名管理,导入即自动签名

5. 三级隐藏系统

LiveContainer 提供了层层递进的 App 隐藏方案:

| 级别   | 方式           | 效果             |

| —- | ———— | ————– |

| 锁定   | Face ID / 密码 | 需要验证才能启动       |

| 隐藏锁定 | —            | 显示为占位符,无法直接打开  |

| 严格隐藏 | 主界面三击触发      | 完全从界面消失,解锁后才可见 |

安装方法

系统要求:iOS / iPadOS 15+(多任务功能需要 16.0+),需要已安装 AltStore 2.0+ 或 SideStore 0.6.0+

方式一:通过 AltStore/SideStore 添加源(推荐)

直接在 AltStore/SideStore 中添加以下源:

https://github.com/LiveContainer/LiveContainer/releases/download/1.0/apps.json

方式二:手动安装 IPA

从 Releases 页面下载最新的 LiveContainer.ipa,通过 AltStore/SideStore 安装即可。项目也提供了 LiveContainer+SideStore.ipa,适合同时需要 SideStore 的用户。

JIT-Less 模式配置(安装后必做)

进入 LiveContainer 设置 → 导入来自 AltStore/SideStore 的证书 → AltStore 弹出授权提示 → 导出证书 → 进入 JIT-Less 模式诊断 → 点击测试 JIT-Less 模式 → 显示「Test Passed」即完成。

已知限制

项目文档对限制写得很清楚,值得提前了解:

  •   App 扩展不支持:因为 SpringBoard 不知道 LiveContainer 内部装了什么,Widget、Share Extension 等系统级扩展无法注册

  •   沙盒隔离不完整:Guest App 之间可以互相访问数据,这是设计取舍而非 bug

  •   权限全局共享:相机、麦克风等权限是按 LiveContainer 整体申请的,无法为每个 App 单独设置

  •   远程推送不工作:App 的 APNs 推送无法正常接收

  •   Custom URL Scheme 查询不稳定:跨 App 唤起可能有问题

来自开发者的安全提示

项目 README 里有条非常醒目的警告:

最近出现了一些闭源的第三方 LiveContainer 构建版本。请务必注意:所有 App 都装在 LiveContainer 里,这意味着第三方版本可以完全访问您的所有数据,包括 Keychain 中存储的敏感信息和登录凭证。我们不支持任何非官方版本。

只从官方 GitHub Releases 或官方 AltStore 源下载,不要用任何来历不明的第三方打包版。

项目结构

代码以 Swift 为主(37.5%),其余是 Objective-C(28.2%)、C++(20.5%)、C(12.7%):

| 模块                   | 说明                              |

| ——————– | ——————————- |

| LiveContainer(主程序)   | Guest 环境初始化、Guest App 加载核心逻辑    |

| LiveContainerSwiftUI | SwiftUI 写的 UI 层,包含多语言字符串        |

| MultitaskSupport     | 多任务实现,基于 FrontBoardAppLauncher  |

| TweakLoader          | Tweak 注入器,加载 CydiaSubstrate 和插件 |

| ZSign                | 内置 App 签名器,源自 zsign             |

| SideStore            | SideStore 集成支持代码                |

写在最后

LiveContainer 在工程上做得相当精巧。它没有越狱、没有利用内核漏洞,只是靠吃透 dyld 的动态加载机制、Mach-O 格式和 iOS 运行时的边界,然后用精准的二进制补丁和函数 Hook 实现了“不用安装就能运行”。

对用户而言,最直接的价值是彻底打破了免费开发者账号 3 个 App 的上限。这个限制本是苹果用来区分付费账号和免费账号的一道门槛,LiveContainer 用一套巧妙的架构绕了过去,而且完全合法——它本质上就是一个普通的 iOS App。

目前项目已有 6.3k Stars,20 位贡献者,从越南开发者 khanhduytran0 的个人项目发展到如今的 LiveContainer 组织。版本迭代稳定,文档和 FAQ 也比较完备。3.7.x 版本新增了 Launch App Shortcut、iOS 26 JIT 脚本支持、外部容器等功能,项目活跃度仍然很高。

如果您已经在用 SideStore 或 AltStore 侧载 App,LiveContainer 几乎是必不可少的利器。

GitHub 仓库https://github.com/LiveContainer/LiveContainer