想要在iPhone/iPad安裝第三方APP,卻苦於免費Apple開發者帳號只有3個APP的簽名限制嗎?
Duy Tran開發的「LiveContainer」用一種曲折的方式解決這個問題。

它有點類似虛擬機,或說是容器,但其實是APP啟動器,讓你不用真的安裝APP也可以使用APP。雖然APP是暫時執行的,但是資料會保存在同一個資料夾,日後可以持續使用。
LiveContainer最大的好處就是 安裝APP數量無上限! 我們知道不論是SideStore還是AltStore,因為是用免費的個人Apple開發者帳號簽名IPA的,所以會有一個裝置同時只能安裝3個APP的限制。要解鎖就只能花錢買3000台幣的Apple開發者年費帳號。
而LiveContainer沒有此限制,在這個APP內部想裝幾個APP就裝幾個,只是需要進行切換程序。不需要花錢買Apple開發者帳號。

另外,LiveContainer也可以當成一種「私密空間」的APP使用,因為安裝的APP只有LiveContainer裡面能見到,所以APP不會顯示在主畫面上,可以增加隱私保護。LiveContainer支援使用FaceID給內部APP上鎖。
對不想花錢的免費仔來說,LiveContainer是一個值得考慮的方案。因為SideStore的簽名額度有限,而LiveContainer能讓你測試更多APP。在分配簽名額度的策略上,LiveContainer能夠靠一個APP換到好幾十個APP。
LiveContainer能夠安裝無限數量APP的這點很像是TrollStore,但卻沒有限制iOS版本,不需要靠漏洞破解就能用。
1. LiveContainer原理 #
這段供有興趣的開發者參考,Ivon我只是簡略翻譯。
LiveContainer為開源軟體,根據開發者在Github的解釋,LiveContainer透過一連串技巧達成「讓系統以為這個APP是經過認可的」,所以就能直接執行。
-
首先LiveContainer會拆開IPA,修補二進位Mach-O執行檔的記憶體結構,將
__PAGEZERO區段的起始記憶體地址調整,避開一些安全機制。 -
把Mach-O標頭的檔案類型從
MH_EXECUTE改成MH_DYLIB,這樣系統就會以載入函式庫的方式來處理這個App。 -
接著注入一段新的指令,載入自己的
TweakLoader.dylib,讓App在啟動時會執行自定義的程式碼。 -
修補
@executable_path,LiveContainer對_NSGetExecutablePath傳出空指標,並讓它當掉,產生SIGSEGV錯誤,再修改@executable_path上下文。讓載入的 App 以為自己是正統安裝的。 -
修補
NSBundle.mainBundle,直接改成安裝的IPA的路徑。 -
採用Restoring Dyld Memory Loading方法,繞過iOS的簽名驗證。也可以用JIT來繞過簽名驗證。如果沒有JIT,就透過AltStore或SideStore給APP簽名。
-
呼叫
dlopen啟動APP的二進位執行檔。 -
讓
TweakLoader在指定資料夾裡面載入tweaks。 -
找到程式執行入口,跳到該處。
-
APP呼叫
UIApplicationMain,像一般的iOS APP一樣啟動。 -
關於多帳號與Keychain管理:iOS的Keychain可以用「Access Groups」區分不同App的資料。LiveContainer預先建立了128組不同的Access Groups。每次建立一個新的App容器,就隨機分配一組Access Group,達成資料隔離的效果。這樣至多能安裝到128個APP。
為什麼能不安裝IPA就執行?它是把「安裝APP到系統 → 執行」這兩步拆開,然後用修改記憶體與Mach-O結構的方式,讓iOS誤以為這個App已經是合法可執行的,用動態連結庫注入方式載入執行。因此可以直接執行而不用正式安裝到iOS系統。
2. 系統需求 #
LiveContainer需要iOS 15以上版本。
不需要越獄就能使用。
可想而知,LiveContainer沒有在App Store上架,需要用側載的。iOS側載IPA方法匯總
支援SideStore或AltStore側載。也可以自行用付費開發者憑證簽名。
LiveContainer本體每7天就要重簽一次,內部安裝的APP不用。
大部分APP應該都能在LiveContainer裡面啟動,不過根據Github用戶的回報,少部份APP啟動會崩潰。
3. 安裝LiveContainer #
上文講了LiveContainer的原理,因此啟動APP之前都要修補一番。開發者提供「JIT」與「JIT-Less」模式來啟動APP。
各有利弊,看哪個比較方便就選哪個。我比較推薦LiveContainer + SideStore合體版。
LiveContainer + SideStore合體版 #
這是JIT-Less模式的變種。將SideStore內建在LiveContainer裡面,讓LiveContainer「借用」SideStore的憑證給IPA簽名。這樣的話它就能夠在一個APP裡面自己幫自己完成簽名了,不用用到電腦。不過你要安裝IPA的話還是要用LiveContainer主界面安裝,這裡SideStore只是負責幫LiveContainer簽名,防止7天後過期而已。
參閱:LiveContainer + SideStore ,自己給自己簽名,不用電腦重簽IPA
JIT模式 #
JIT的好處是能加速一部份模擬器APP的效能,且APP不需要簽名就能啟動。缺點是啟動APP要多一個切換JIT的步驟。
JIT-Less模式 #
JIT-Less模式的話會取用SideStore或AltStore的憑證來幫LiveContainer內部的APP簽名,不會受到免費Apple ID一週10個Bundle ID的限制。
- 我系統是iOS 26,安裝SideStore。
註:如果你有付費Apple開發者帳號,可以不需要安裝SideStore,改用自行匯入.p12憑證到LiveContainer給APP簽名。
-
到Github下載
SideStore.ipa,使用SideStore安裝。 -
連著LocalDevVPN。
-
開啟LiveContainer APP,點選設定 → 從AltStore/SideStore匯入憑證

-
在SideStore按Export,設定憑證密碼
-
回到LiveContainer,點選設定 → 免JIT模式診斷,顯示Success即代表成功。

4. LiveContainer內APP安裝方法 #
LiveContainer的啟動方法比較曲折一些。
-
到Github之類網站下載想要側載的第三方IPA。
-
在LiveContainer側載你想要的IPA,可以根據需求匯入多個APP的IPA。嚴格來說APP沒有安裝到iOS系統,只是匯入到LiveContainer,只有該APP內可見。
-
在LiveContainer主界面,點APP旁邊的Run。如果使用JIT-Less模式,APP會在簽名完成後直接啟動。
-
反之,使用JIT模式的話LiveContainer APP會跳出。請用JIT APP啟動LiveContainer,就會進入要使用的APP。
-
下次再開啟LiveContainer的時候,會回到LiveContainer選取APP的介面,點選切換APP。
-
如果要同時執行多個LiveContainer內部的APP,需開啟多任務模式。
5. 實際操作例子:安裝Mangayomi APP #
-
以Mangayomi漫畫閱讀器為例,使用iOS的Safari到Github下載IPA。
-
開啟LiveContainer,點左上角+號,匯入IPA

-
點選執行,然後LiveContainer的畫面會閃一下,之後就會「變成」Mangayomi,功能應可正常使用。

-
滑掉LiveContainer之後,剛剛啟動的APP也會隨之關閉。之後要重做一次JIT啟用步驟。
-
對LiveContainer裡面的APP選單長按右鍵,可以將APP的圖示加到iOS主畫面。
6. LiveContainer各個APP資料儲存位置 #
LiveContainer能夠匯入多個APP,只要不刪除APP,切換APP之後資料依然會存在。
因為不是真正安裝到iOS系統,所以APP產生的資料只會儲存在LiveContainer內部。
開啟iOS檔案APP → 我的iPhone/iPad → LiveContainer → Data → Application,可以看到各個APP的資料。

7. 同時執行多個APP #
使用iOS的多任務模式,讓多個APP可以在同一個LiveContainer APP的視窗內執行。雖然你還是沒辦法從iOS主畫面看到多個APP的圖示,但起碼是一種解決方案。
-
在LiveContainer首頁,對APP長按 → 設定 → 轉換為共享APP

-
這樣的話,每個APP便會以視窗模式啟動。

-
上面的這個多視窗模式我認為比較適合大螢幕iPad使用。小螢幕的iPhone應該在LiveContainer設定 → 改用iOS原生視窗模式。

-
這樣的話就會變成透過iOS的多工界面來切換各個APP的「視窗」。比較像是真的在同時執行不同的兩個APP。
