出于安全考虑,也为了让每一个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