iOS逆向 - 沙箱逃脫

出於安全考慮,也爲了讓每一個App運行在本身的獨立空間,iOS引入了名爲沙箱(沙盒sandbox)的安全體系。沙箱會自動攔截文件訪問,網絡套接字、Bootstrap服務,以及對子進程的spawn。安全

越獄操做對沙箱作出了適量修改,使全部進程都可以加載CydiaSubstrate, 但爲了用戶的隱私安全,大多數沙箱限制仍保留原樣。markdown

在每個iOS版本中,蘋果公司都會加強沙箱的做用,當咱們的tweak須要跨進程訪問數據或向磁盤寫數據時,沙箱會給咱們的操做帶來限制。網絡

繞過這些限制的方案之一是視tweak運行在哪些進程中而定。選擇一個這些進程都能訪問的路徑或文件,達到共享數據的目的。這是一種常規的操做方法,但一旦蘋果公司再次收緊沙箱的限制,這種方法就可能失效,好比iOS8中已經不存在一個全部進程皆可讀寫的路徑了。spa

另外一種更好的方案是把相似操做放在權限高的進程,好比SpringBoard、backboardd,甚至是咱們本身編寫的守護進程裏去完成,咱們的tweak所在的進程只須要把受限制的操做丟給這些高權限的進程,而後坐等結果就能夠了。這麼作的好處是,即便沙箱的限制愈來愈嚴,只要tweak所在的進程可以與高權限進程通訊,tweak就能正常運行。code

奇怪的是,在iOS8裏,蘋果公司甚至限制了AppStore App所能訪問的服務(即可以通訊的進程),致使幾乎全部AppStore App的進程間通訊都失效了。RocketBootstrap應用而生,它既破除了上面提到的訪問限制,又較好的保留了沙箱的防禦,向RocketBootstrap註冊的服務能夠被全系統進程訪問,包括那些沙箱限制很是嚴格的進程;RocketBootstrap是一個單獨的程序orm

相關文章
相關標籤/搜索