ios8蘋果越獄后cydia無法安裝插件處理方法
發(fā)表時間:2023-09-11 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]ios8蘋果越獄后cydia無法安裝插件解決方法: 設(shè)備處理的關(guān)鍵點: 有afc2服務(wù), 能看到root根目錄 問題處理的難點: 首先, 設(shè)備沒有安裝OPENSSH服務(wù)導(dǎo)致無法修改直接放入文件的權(quán)限導(dǎo)致直接將缺失的文件放入后無法運行, 使用Cydia的Autoinstall的方式安裝同樣和在...
ios8蘋果越獄后cydia無法安裝插件解決方法:
設(shè)備處理的關(guān)鍵點:
有afc2服務(wù), 能看到root根目錄
問題處理的難點: 首先, 設(shè)備沒有安裝OPENSSH服務(wù)導(dǎo)致無法修改直接放入文件的權(quán)限導(dǎo)致直接將缺失的文件放入后無法運行, 使用Cydia的Autoinstall的方式安裝同樣和在Cydia內(nèi)直接安裝deb因為apt的環(huán)境問題導(dǎo)致無法安裝的情況, 想通過iFile來修改文件的權(quán)限卻也沒有安裝iFile, 那只能查找新的辦法。
問題的原因及部分系統(tǒng)原理1, 文件權(quán)限:
在AFC2服務(wù)啟動時, 第三方資源管理器是可以看到設(shè)備的root根目錄, 但是如果是將電腦里地文件“添加”進設(shè)備的, 此文件默認(rèn)的權(quán)限為:wheel:root-0644,也就是root用戶的wheel組, 運行的權(quán)限是當(dāng)前用戶可讀寫, 組權(quán)限只讀, 但是都沒有“執(zhí)行(運行)”的權(quán)限, 所以直接丟進去的可執(zhí)行文件(包括權(quán)限需求高的文件)是無法執(zhí)行和打開的
但是, afc2add 有一個特性就是可以“繼承”權(quán)限, 也就是說, 如果原來設(shè)備里面的文件時什么權(quán)限, 那么你從電腦里面放入相同的文件去覆蓋它時, 原有的權(quán)限不變!不一定會是新加的默認(rèn) wheel:root-0644 權(quán)限
2, ZIP, TAR 壓縮文件的特性
zip 文件是一種壓縮文件的格式, 我們在安裝iFile的時候會附帶安裝處理 zip 的依賴(有些有深度潔癖的人會很不高興認(rèn)為是垃圾, 其實不是開機調(diào)用常駐內(nèi)存的依賴只是以文件的形式放置于系統(tǒng)內(nèi), 在需要它是直接調(diào)用才會打開的);而 tar 壓縮文件的支持在越獄時就已經(jīng)預(yù)置了的, 而且deb的安裝包實際上用7-zip打開會發(fā)現(xiàn)其實就是tar文件+包安裝信息, 它們有個共同點就是在iOS系統(tǒng)內(nèi)解壓時不會改變壓縮時的原始權(quán)限!
3, iOS的啟動調(diào)用
iOS系統(tǒng)在開機時通常會調(diào)用 /Library/LaunchDaemons (不常用的 /Library/LaunchAgents);/System/Library/LaunchDaemons (這里一般是放的系統(tǒng)服務(wù));如果安裝了 Cydia Substrate , 那么啟動時也會通過plist定義和調(diào)用調(diào)用加載 /Library/MobileSubstrate/DynamicLibraries 里面的 dylib 程序
以上可以看出影響設(shè)備啟動的主要是這3個目錄, 前2(3)者屬于系統(tǒng)級的開機調(diào)用, 而Cydia Substrate 的只有在安裝 Cydia Substrate 的環(huán)境后才能生效, 且在開機時按住“音量+”鍵可以全部跳過基于它的插件調(diào)用, 但是系統(tǒng)級的調(diào)用是無法跳過的!所以開機白蘋果如果是基于CS環(huán)境的插件問題可以按住“音量+”跳過, 但是如果是系統(tǒng)級開機調(diào)用的程序出現(xiàn)問題卡死的就麻煩了!
4, Cydia 開機自動安裝插件以及DEB安裝的常識
Cydia安裝后, 在 /Library/LaunchDaemons 內(nèi)防止了一個開機調(diào)用腳本的plist文件:com.saurik.Cydia.Startup.plist, 控制了系統(tǒng)在啟動時會運行/bin下的 bash 執(zhí)行程序和 /usr/libexec/cydia 下的 startup (這個startup實際上是一個賦予了可執(zhí)行權(quán)限的 shell 腳本文件)
內(nèi)容如下:
#!/bin/bash
export PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin
if [[ ! -e /var/lib/cydia/firmware.ver ]]; then
cache=
fi
/usr/libexec/cydia/firmware.sh
debs=(/var/root/Media/Cydia/AutoInstall/*.deb)
if [[ ${#debs[@]} -ne 0 && -f ${debs[0]} ]]; then
dpkg -i "${debs[@]}" 2>/tmp/dpkg.log 1>&2
rm -f "${debs[@]}"
cache=
killall -9 Lowtide AppleTV
fi
if [[ ${cache+@} ]]; then
sbdidlaunch
su -c uicache mobile
fi
iOS8越獄
debs=(/var/root/Media/Cydia/AutoInstall/*.deb)
if [[ ${#debs[@]} -ne 0 && -f ${debs[0]} ]]; then
dpkg -i "${debs[@]}" 2>/tmp/dpkg.log 1>&2
rm -f "${debs[@]}"
這段就是指定了在開機時檢查 /var/root/Media/Cydia/AutoInstall 目錄下是否有的包文件, 如果有救執(zhí)行 dpkg -i 的安裝命令, 而deb的安裝則依賴于dpkg的環(huán)境
5, 還原抹除
iOS的還原并抹除 主要是刪除 /var 目錄下的不是在iOS原生系統(tǒng)白名單以外的全部文件(包括文件夾),
為什么說越獄后的機器不要還原抹除的主要原因就是越獄后在第一次運行Cydia 時, Cydia為了擴大系統(tǒng)區(qū)的可用空間, 會將一部分的系統(tǒng)文件搬移到
/var/stash (其實在Cydia新版, 這個目錄也是一個硬鏈接, stash 真正的目錄其實是在 /private/var/db/stash )那么在抹除時會將 /private/var/db/stash 文件夾刪除導(dǎo)致系統(tǒng)文件缺失而白蘋果
但是我今天遇到的和有些人的疑問一樣, 那就是我沒有運行過Cydia抹除可以吧, 其實也是不行的(至少在沒處理之前是不能直接抹除的), 因為初始越獄后預(yù)置的基礎(chǔ)性德 apt 的程序包安裝管理會使用 /var/lib 目錄以及此目錄里面的目錄, 這個目錄里面也放置的全部安裝的程序包插件包的安裝卸載信息, 且目錄的權(quán)限都具有可執(zhí)行的權(quán)限, 如果抹除時會將此文件夾刪除, 在次文件夾刪除后 Cydia 在安裝程序時會調(diào)用apt來安裝管理下載的deb程序包, 此時因為沒有 /var/lib 目錄來存放安裝信息導(dǎo)致安裝失敗, 而直接通過利用 afc2 服務(wù)的第三方助手工具創(chuàng)建或?qū)氲哪夸浻謺驗闄?quán)限的問題無法寫入信息文件一樣會失敗!
問題處理的思路一般來講如果安裝了OPENSSH服務(wù)且能夠啟動的情況下, 基本問題都能夠處理好(可以執(zhí)行終端命令, 修改權(quán)限等等), 而如果有iFile也可以解決部分問題, 但是如果都沒有就非常麻煩了, 等于自己把自己的退路斷了!
今天遇到的就是既沒有openssh服務(wù), 也沒有安裝 iFile ;那么該怎么辦呢?其實我上面寫的原理就是需要利用的原理!
首先這個問題主要是修復(fù)越獄預(yù)置的apt環(huán)境, 那么就需要越獄程序在越獄時上傳使用的 Cydia.tar 文件, 需要用它將完整的文件解壓恢復(fù)到iOS系統(tǒng)里面
tar的文件需要解壓的環(huán)境支持不要緊, 因為基本的tar執(zhí)行程序還在, 只不過怎樣去讓系統(tǒng)執(zhí)行解壓命令來解壓上傳的tar文件呢?
那么我們就需要使用 shell 腳本來調(diào)用命令, 但是這個shell腳本怎么去調(diào)用呢?其實可以利用/Library/LaunchDaemons 等開機啟動文件夾的plist文件去調(diào)用.
但是如果是自己直接寫的調(diào)用shell腳本在傳入設(shè)備后會因為權(quán)限問題根本無法運行, 怎么辦?上面說過關(guān)于afc2add服務(wù)的權(quán)限繼承特性!我們可以利用它!
怎么利用呢?其實很簡單, 上面我就提到過Cydia就會在啟動時利用/Library/LaunchDaemons 里面的 com.saurik.Cydia.Startup.plist 文件去調(diào)用 /usr/libexec/cydia 目錄下的 startup 這個shell 腳本, 我們可以直接將 startup 文件導(dǎo)出放到本地然后修改這個腳本, 將需要的命令添加進去后重新導(dǎo)入覆蓋原來的文件即可保持繼承的權(quán)限從而達到可以執(zhí)行的目的了!
處理流程:
1, 找到越獄系統(tǒng)使用的支持本iOS版本的完整 Cydia.tar 壓縮包(在源里面的 Cydia安裝包僅是Cydia, 不含完整的越獄環(huán)境目錄結(jié)構(gòu)), 因為此壓縮包為整個系統(tǒng)目錄結(jié)構(gòu), 那么在解壓時一般就是接觸的根目錄, 所以我將 Cydia.tar 使用助手工具將其導(dǎo)入放置到root根目錄備用.
2,將 /usr/libexec/cydia 目錄下的 startup 文件導(dǎo)出, 在備份一個原始的文件后(不管干什么最好備份一個以防萬一)使用適合的編輯器修改文件, 在
#!/bin/bash
export PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin
下面添加一行命令代碼:
tar -xvf ./Cydia.tar
(這個就是最常用最簡單的一個解壓的終端命令)
原文件第一行是shell文件的類型注釋, 第二行代碼是環(huán)境定義, 所以必須添加到它們下面
(關(guān)于修改使用的編輯器需要特別注意就是必須要保證編輯和保存后的文件格式編碼不能變, 否則亂碼不能執(zhí)行, 建議使用UE或者winhex 等)
3, 將修改好的 startup 文件導(dǎo)入原始位置, 提示覆蓋時選擇“是”去覆蓋來保持繼承權(quán)限
4, 重啟設(shè)備
5, 系統(tǒng)重啟后悔自動解壓剛上傳的 Cydia.tar 來重建結(jié)構(gòu), 完成后apt環(huán)境即可修復(fù), 可以在Cydia里面直接安裝插件了!
6, 將備份的原始 startup 文件導(dǎo)入覆蓋還原(其實我這次的修復(fù)不用還原, 因為在解壓 Cydia.tar 時就已經(jīng)還原為標(biāo)準(zhǔn)的文件了, 哈哈)
7, 刪除根目錄的已經(jīng)完成光榮使命的 Cydia.tar 壓縮包文件清掃戰(zhàn)場。
蘋果應(yīng)用引領(lǐng)新的上網(wǎng)速度革命,給您帶來超快體驗。