首页 / 资讯中心 / 文章详情

不安装也能跑 iOS 应用:LiveContainer 免安装容器化完整指南

不安装也能跑 iOS 应用:LiveContainer 免安装容器化完整指南 ★ FEATURED ARTICLE
不安装也能跑 iOS 应用LiveContainer 免安装容器化完整指南【免费下载链接】LiveContainerRun iOS apps without actually installing them!项目地址: https://gitcode.com/gh_mirrors/li/LiveContainerLiveContainer 是一款免安装运行 iOS 应用的启动器它不是模拟器而是在侧载应用内部搭建客人运行环境把 IPA 导入后即可使用同一应用还能开出多个独立数据容器免费开发者账号的应用数量限制在这里不再成立。本文从它凭什么能跑起来的角度把容器化原理、安装路径与真实边界一次讲清楚。想跑某个 iOS 应用又不想占用应用位设备没越狱、手里只有免费证书时最常见的困境是一次只能装几个应用换个版本就得先卸载旧的想给同一个应用开两个账号数据却会互相覆盖。LiveContainer 的思路是把安装应用变成加载应用——应用不再是以系统注册进程的身份存在而是作为 LiveContainer 自己加载进来的动态库运行数据落在各自的容器目录里。这样你就用同一个应用位跑了多个 App同一应用也可以装不同版本共存。它凭什么不安装就能跑答案藏在两步操作里。 免安装运行的原理二进制改写与加载器重定向第一步把应用二进制改写成可加载的动态库输入是 IPA 里的可执行文件LiveContainer 对它做三处修改。其一调整__PAGEZERO段vmaddr改为0xFFFFC000即0x100000000 - 0x4000vmsize改为0x4000解决以动态库身份加载时地址空间不足的问题其二把文件类型从MH_EXECUTE改成MH_DYLIB相当于把一台独立整机改写成可插拔的插件其三插入一条加载命令让它在被加载时顺带把TweakLoader.dylib拉起来。输出结果是一个可以直接dlopen的伪可执行文件。第二步拦截加载器改写收件地址加载之后客人应用会问系统我的可执行文件在哪。LiveContainer 通过 hookdyld4::APIs::_NSGetExecutablePath把返回路径改写为指向客人应用的容器目录就像把在途的快递拦下、改写了收件地址。同时它覆盖NSBundle.mainBundle让应用读取资源时命中的是客人自己的资源包图片、文案、plist 全部各归各家。第三步签名处理与入口跳转签名校验能不能跳过取决于设备上的 JIT 状态JIT 可用时代码签名校验被完全绕过应用无需预先签名否则由内置的 ZSign 用与 LiveContainer 相同的证书把所有可执行文件重签一遍。最后dlopen客人可执行文件TweakLoader 加载指定目录里所有兼容的 Tweak找到入口点并跳进去——客人应用随即调用UIApplicationMain像普通应用一样启动。理解完这三步就可以动手把它装起来了。从零跑起来预构建 IPA 与源码构建两条路预构建版一次侧载安装从项目发布页下载最新 IPA分稳定版与 nightly 版另有内置 SideStore 的版本用 AltStore 2.0 或 SideStore 0.6.0 安装到设备。系统要求 iOS/iPadOS 15多任务功能需要 16。打开应用后点右上角加号选择 IPA 即可导入。源码构建一个团队 ID 从克隆到编译git clone https://gitcode.com/gh_mirrors/li/LiveContainer用 Xcode 打开工程把 xcconfigs/Global.xcconfig 里的DEVELOPMENT_TEAM[configDebug]改成你的开发者团队 ID然后编译。想改核心逻辑的话重点看LiveContainer/主目录LCMachOUtils.m 负责上面的二进制改写LCBootstrap.m 负责搭建客人环境。装好之后问题变成怎么把它用到位。 四个高频场景多容器、多任务窗口、Tweak 与修复开关多容器共存的真相同一应用能开几个客人身份LiveContainer 预置了 128 个键链访问组每新建一个同应用容器就随机分配一个因此同一应用最多可开 128 个拥有独立键链数据的容器不同版本也能共存。长按应用横幅即可管理容器。多任务窗口同时跑多个应用长按应用横幅点 Multitask应用会进入应用内虚拟窗口可调整大小、缩放甚至用原生画中画显示iPad 上还能以系统窗口模式运行每个应用。你也可以在设置里把多任务设为默认启动方式。用 SideStore/AltStore 安装时记得勾选 Keep App Extensions若要让多任务中的应用启用 JIT需要一个支持按 PID 附加的 JIT 启用器如 StikDebug。Tweak 加载外部 dylib 怎么生效把.dylib放进 Tweak 目录即可应用启动时 TweakLoader 会自动加载整套机制基于 CydiaSubstrate 框架而这个加载器本身会注入到你安装的每个应用里。JIT 配置与文件选择器修复应用的文件选择器失灵、或者无法申请通知权限时进入该应用的设置页分别打开 Fix File Picker 和 Fix Local Notifications重启应用生效。iOS 26 及以上还提供脚本化的 JIT 启用机制方便你脚本控制启用流程。此外用系统共享表把 URL 或文件分享给 LiveContainer或在应用页右上角点链接图标直接输入 URL它会自动匹配能打开的客人应用。功能讲完了你还需要知道它做不到的事。认清边界数据隔离的半隔离真相与全局权限数据隔离是半隔离键链访问组彼此独立但客人应用的容器并不是沙箱一个客人应用可以读到另一个客人的数据别往里面放高敏感信息。权限全局生效客人应用自带的 entitlements 不会应用到宿主应用侧载应用一般只依赖基础权限影响不大。应用扩展无法注册远程推送通知不工作URL scheme 查询表现也可能不稳定。不是所有应用都能跑动手前先查项目兼容性列表遇到问题就带着细节提交 issue具体以仓库最新 README 为准。不要用第三方闭源构建README 明确警告第三方闭源构建可完整访问你的数据包括键链项与登录凭证官方也不为其提供支持。适合的人群由此清晰需要同一应用多账号、多版本共存或者不想占用应用位的侧载用户如果你要的是严格隔离或后台推送系统原生应用机制仍然更可靠。如果想深入使用之外参与入口如下。 参与入口构建配置、翻译与排错代码按模块划分SwiftUI 界面在 LiveContainerSwiftUI/多任务实现在 MultitaskSupport/基于 FrontBoardAppLauncher签名工具在 ZSign/源自 Feather 的修改版注入器在 TweakLoader/。构建只需配置Global.xcconfig的团队 ID想参与翻译修改Resources/Localizable.xcstrings中的字符串项目通过 Crowdin 平台组织协作排错时先看 Xcode 控制台日志再把场景简化到最基础的装一个应用、能运行。README 里也写明了下一步计划用 ChOma 替代自定义 Mach-O 解析器。现在就可以动手装一个常用社交应用、开两个容器、分别登录两个账号验证两边数据是否互不可见——这一步能直接帮你确认它是否适合你的使用场景。【免费下载链接】LiveContainerRun iOS apps without actually installing them!项目地址: https://gitcode.com/gh_mirrors/li/LiveContainer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站