快轉到主要內容

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。安裝無限數量的這點很像是TrollStore,卻沒有限制iOS版本。

1. LiveContainer原理
#

供有興趣的開發者參考,我只是簡略翻譯。

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側載。

大部分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 18,為了方便啟用JIT,所以使用StikDebug的方案

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

JIT-Less模式
#

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

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

  1. Github下載LiveContainer的IPA安裝。

  2. 連著SideStore提供的StosVPN。

  3. 開啟LiveContainer APP,點選Settings,按Patch SideStore

  4. 之後SideStore會被修補,接著自動重新安裝。

  5. 重新開啟SideStore,LiveContainer應該會就會取得憑證。

  6. 回到LiveContainer,點選Settings → JIT-Less Mode Diagnose → Test JIT-less Mode,顯示Success即代表成功。

4. LiveContainer內APP啟動方法
#

LiveContainer的啟動方法比較曲折一些。首先要知道的是,LiveContainer雖然可以匯入多個APP,但是目前一次只能啟動一個APP。

  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。

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

因為要加速遊戲模擬器效能,我這裡有使用JIT。

1. 以RetroArch模擬器為例,雖然有上架App Store但是JIT加速要用側載的。使用iOS的Safari到官方網站下載IPA。

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

  2. 點選Run

  3. 切換到StikDebug APP,以JIT啟動LiveContainer

註:不想要手動切換的,可以在LiveContainer → Settings → JIT,選取StikDebug。並在LiveContainer首頁,長按要啟動的APP設定,勾選Launch with JIT。

  1. 然後LiveContainer的畫面就會「變成」RetroArch,功能應可正常使用。

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

  3. 對LiveContainer裡面的APP選單長按右鍵,可以將APP的圖示加到iOS主畫面。

6. LiveContainer各個APP資料儲存位置
#

LiveContainer能夠匯入多個APP,只要不刪除APP,切換APP之後資料依然會存在。

因為不是真正安裝到iOS系統,所以APP產生的資料只會儲存在LiveContainer內部。

開啟iOS檔案APP → 我的iPhone/iPad → LiveContainer → Data → Application,可以看到各個APP的資料。

7. 同時執行多個APP
#

既然LiveContainer一次只能進入一個APP,那安裝兩個LiveContainer APP就解套啦!兩個LiveContainer APP就能同時執行不同的APP。不過,第二個LiveContainer會佔掉一個位置,如果用SideStore簽名IPA,額度會全部佔滿,導致SideStore不能再安裝其他APP。點選LiveContainer的Settings → Install Another LiveContainer,產生一個不同Bundle ID的IPA,再用SideStore側載之。

最新的Nightly build支援同時執行多個APP了,不用安裝多個LiveContainer。可以是一個畫面多視窗,或者是利用iOS的多視窗功能。

相關文章

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

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

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