快轉到主要內容

LiveContainer教學,iOS安裝第三方APP數量無上限,免越獄

· 民國114年乙巳年
·
切換繁體/簡體
分類   智慧型手機 iOS玩機與越獄
標籤   JIT IOS AltStore
目錄

請參閱:iOS所有安裝第三方APP、側載IPA的方法

想要在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是經過認可的」,所以就能直接執行。

點選展開
  1. 首先LiveContainer會拆開IPA,修補二進位Mach-O執行檔的記憶體結構,將__PAGEZERO區段的起始記憶體地址調整,避開一些安全機制。

  2. 把Mach-O標頭的檔案類型從MH_EXECUTE改成MH_DYLIB,這樣系統就會以載入函式庫的方式來處理這個App。

  3. 接著注入一段新的指令,載入自己的TweakLoader.dylib,讓App在啟動時會執行自定義的程式碼。

  4. 修補@executable_path,LiveContainer對_NSGetExecutablePath傳出空指標,並讓它當掉,產生SIGSEGV錯誤,再修改@executable_path上下文。讓載入的 App 以為自己是正統安裝的。

  5. 修補NSBundle.mainBundle,直接改成安裝的IPA的路徑。

  6. 採用Restoring Dyld Memory Loading方法,繞過iOS的簽名驗證。也可以用JIT來繞過簽名驗證。如果沒有JIT,就透過AltStore或SideStore給APP簽名。

  7. 呼叫dlopen啟動APP的二進位執行檔。

  8. TweakLoader在指定資料夾裡面載入tweaks。

  9. 找到程式執行入口,跳到該處。

  10. APP呼叫UIApplicationMain,像一般的iOS APP一樣啟動。

  11. 關於多帳號與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上架,需要用側載的。支援SideStore或AltStore側載。

LiveContainer本體每7天就要重簽一次,內部安裝的APP不用。

大部分APP應該都能在LiveContainer裡面啟動,不過根據Github用戶的回報,少部份APP啟動會崩潰。

3. 安裝LiveContainer
#

上文講了LiveContainer的原理,因此啟動APP之前都要修補一番。開發者提供JIT與JIT-Less模式來啟動APP。預設不設定的話就是使用JIT。

JIT的好處是能加速一部份模擬器APP的效能,且APP不需要簽名就能啟動。缺點是啟動APP要多一個切換JIT的步驟。

至於JIT-Less模式的話,則是會取用SideStore或AltStore的憑證來幫LiveContainer內部的APP簽名,不會受到免費Apple ID一週10個Bundle ID的限制。

各有利弊,看哪個比較方便就選哪個。

JIT模式
#

  1. 我系統是iOS 26,為了方便啟用JIT,所以使用StikDebug的方案

  2. 安裝SideStore,再到Github下載LiveContainer的IPA。側載IPA。

JIT-Less模式
#

  1. 我系統是iOS 26,安裝SideStore

註:如果你有付費開發者帳號,可以不需要安裝SideStore,自行匯入.p12憑證到LiveContainer給APP簽名。

  1. Github下載SideStore.ipa,使用SideStore安裝。

  2. 連著LocalDevVPN。

  3. 開啟LiveContainer APP,點選設定 → 從AltStore/SideStore匯入憑證

  4. 在SideStore按Export,設定憑證密碼

  5. 回到LiveContainer,點選設定 → 免JIT模式診斷,顯示Success即代表成功。

LiveContainer+SideStore合體版
#

這是JIT-Less模式的變種。將SideStore內建在LiveContainer裡面,這樣的話它就能夠在一個APP裡面自己幫自己完成簽名了。不過你要安裝IPA的話還是要用LiveContainer主界面安裝,這裡SideStore只是負責幫LiveContainer簽名,防止7天後過期而已。

LiveContainer+SideStore的這個版本仍屬於實驗性質。且你不能直接從電腦側載IPA,必須先裝SideStore取得憑證後,再來安裝LiveContainer+SideStore的IPA。過程十分迂迴。

  1. 安裝SideStore

  2. 連著LocalDevVPN。

  3. 開啟SideStore,側載LiveContainer+SideStore.ipa。然後點選Refresh重簽。

  4. 點選SideStore,Settings → Export Sigining Certificate,匯出SideStoreSigningCertificate.p12憑證

  5. 開啟LiveContainer+SideStore,點一下左上角+號旁邊的SideStore圖示,啟動LiveContainer內部的SideStore

  6. 在提示要匯入Pairing File的時候,不要選取.p12憑證。開啟我的iPhone → SideStore資料夾,選取ALTPairingFile.mobiledevice-pairing

  7. 然後在LiveContainer內部的SideStore,開啟設定 → 匯入憑證,匯入剛才取得的SideStoreSigningCertificate.p12憑證

  8. 刪除原本的SideStore APP。

  9. 回到LiveContainer,點選設定 → 免JIT模式診斷,顯示Success即代表成功。

  10. 重新開啟LiveContainer內部的SideStore,登入Apple帳號。

  11. 之後,你就能從這裡重簽IPA了,包括LiveContainer本身。

4. LiveContainer內APP啟動方法
#

LiveContainer的啟動方法比較曲折一些。

  1. 到Github之類網站下載想要側載的第三方IPA。

  2. 在LiveContainer側載你想要的IPA,可以根據需求匯入多個APP的IPA。嚴格來說APP沒有安裝到iOS系統,只是匯入到LiveContainer,只有該APP內可見。

  3. 在LiveContainer主界面,點APP旁邊的Run。如果使用JIT-Less模式,APP會在簽名完成後直接啟動。

  4. 反之,使用JIT模式的話LiveContainer APP會跳出,請用JIT APP啟動LiveContainer,就會進入要使用的APP。

  5. 下次再開啟LiveContainer的時候,會回到LiveContainer選取APP的介面,點選切換APP。

  6. 如果要同時執行多個LiveContainer內部的APP,需開啟多任務模式。

5. 實際操作例子:安裝Mangayomi APP
#

  1. 以Mangayomi漫畫閱讀器為例,使用iOS的Safari到Github下載IPA。

  2. 開啟LiveContainer,點左上角+號,匯入IPA

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

  4. 滑掉LiveContainer之後,剛剛啟動的APP也會隨之關閉。之後要重做一次JIT啟用步驟。

  5. 對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的圖示,但起碼是一種解決方案。

  1. 在LiveContainer首頁,對APP長按 → 設定 → 轉換為共享APP

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

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

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

相關文章

SideStore在iPhone安裝第三方APP,免電腦重簽安裝IPA教學
分類   智慧型手機 iOS玩機與越獄
標籤   AltStore IOS
iOS版UTM JIT V.S. UTM SE,啟用JIT加速的虛擬機前後速度比較
分類   智慧型手機 iOS玩機與越獄
標籤   UTM JIT IOS IPad
AltStore啟用JIT加速,加速iOS模擬器APP執行速度
分類   智慧型手機 iOS玩機與越獄
標籤   AltStore JIT

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。