iOS 免安装运行任意 App?这个开源项目把苹果的「3个应用限制」彻底打穿了
不是越狱,不是模拟器,是一种更聪明的方式。
先说苹果给开发者挖的这个坑
用免费苹果开发者账号给 iPhone 侧载应用,有一个让人抓狂的限制:同时最多只能安装 3 个 App。
每个 App 都要占用一个 App ID,7 天后证书失效还得重新签名、重新安装。想多装一个,就得删掉一个。想同时用两个账号登录同一个 App?那得装两次,占两个位置。
LiveContainer 的解法很直接:所有 App 都装在 LiveContainer 这一个壳子里,只占 1 个 App ID,App 数量不受任何限制。
LiveContainer 是什么
LiveContainer 是一个 iOS App 启动器——注意,不是模拟器,也不是虚拟机,是真正在原生 iOS 运行时里执行目标 App。
核心能力三句话说清楚:
• 无限 App 安装:所有 App 装在 LiveContainer 里,只占 1 个 App ID,3 个应用槽的限制彻底失效 • 无需 JIT 即可运行:JIT-Less 模式下,App 用 LiveContainer 自己的证书自动签名,直接启动 • 多开 + 多任务:同一个 App 可以装多个数据容器,相当于多账号同时在线;还支持画中画和分屏
先看真实截图
应用主界面(类 AltStore 风格)

技术原理:它是怎么做到的
这是整个项目最值得深读的部分。LiveContainer 没有用任何越狱漏洞,而是对 Mach-O 二进制格式、dyld 动态链接器做了精准的"外科手术"。
第一步:把 App 的可执行文件变成动态库
每个 iOS App 的主可执行文件(MH_EXECUTE)都无法被另一个进程直接加载。LiveContainer 做了两件事:
1. 修改 __PAGEZERO 段: vmaddr: 0x0 → 0xFFFFC000 vmsize: 0x100000000 → 0x40002. 把文件类型从 MH_EXECUTE 改成 MH_DYLIB经过这两个补丁,目标 App 就变成了一个可以被 dlopen() 加载的动态库。
第二步:欺骗 dyld,让 App 以为自己是主进程
App 启动时会调用 _NSGetExecutablePath 查询自己的路径。LiveContainer hook 了这个函数:
Hook dyld4::APIs::_NSGetExecutablePath → 调用原始函数获取真实路径 → 用 builtin_vm_protect / TPRO 解锁内存写权限 → 把路径替换成目标 App 的路径 → 还原原始函数同时,NSBundle.mainBundle 也被替换成目标 App 的 bundle,让 App 完全认为自己运行在"自己的"进程里。
第三步:dlopen 加载,跳到入口点
dlopen(目标App可执行文件路径) → TweakLoader 注入所有 .dylib tweak → 找到 App 的 entry point → 直接跳转执行 → App 调用 UIApplicationMain,正常启动整个过程不需要越狱,不需要内核漏洞,完全在用户态完成。
五大核心功能详解
1. 无限 App 安装,多版本共存
用 AltStore 或 SideStore 侧载 App,每个 App 都要独占一个 App ID。LiveContainer 把所有 App 的安装路径都收纳在自己的沙盒里,从系统角度看只有 LiveContainer 这一个 App,所以:
• 一个免费账号可以安装几十上百个 App • 同一个 App 可以装多个版本,每个版本独立数据容器 • 支持 128 个独立 Keychain 访问组,相当于最多 128 个账号同时共存
2. JIT-Less 模式(推荐)
早期版本必须开 JIT(Just-In-Time 编译)才能绕过代码签名,每次启动都要连电脑操作。现在 JIT-Less 模式下:
1. 从 AltStore/SideStore 导入证书 2. LiveContainer 用这个证书自动给安装的 App 重新签名 3. 直接点图标启动,零额外操作
如果仍然需要 JIT(某些 App 依赖 JIT 执行代码),配合 StikDebug 使用,LiveContainer 会自动探测并启动 JIT 支持流程。
3. 多任务:画中画 + 分屏
这是 3.x 版本加入的重量级功能:
虚拟窗口模式(iPhone/iPad):在 LiveContainer 界面内开启悬浮窗,可以同时运行多个 App,每个窗口可以独立调整大小和缩放比例。
画中画(PiP):App 窗口可以悬浮在任意其他界面上方,切出 LiveContainer 后继续运行。
iPad 原生窗口:在 iPadOS 上,每个 App 可以在独立的系统级窗口中运行,真正意义上的多窗口多任务。
双 LiveContainer 实例:安装第二个 LiveContainer(灰色图标),两个实例之间可以共享 App 数据,实现真正的"两个 App 同时跑"。
4. 插件(Tweak)支持
LiveContainer 内置了 TweakLoader,这是越狱社区的成熟方案移植版:
• 支持 CydiaSubstrate 格式的 .dylib插件• Tweaks文件夹里的插件全局注入所有 App• 可以为每个 App 单独设置插件文件夹,随时切换 • 内置签名管理,导入即自动签名
5. 三级隐藏系统
LiveContainer 提供了递进的 App 隐藏方案:
安装方式
系统要求: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 扩展(Extension)不支持:因为 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 | |
LiveContainerSwiftUI | |
MultitaskSupport | |
TweakLoader | |
ZSign | |
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]
夜雨聆风