为什么在越狱后,iOS 6.1.1中的SandBox仍然存在?

我安装的应用程序是使用临时证书进行签名的。 但它只是为越狱 iPhonedevise的。

我尝试直接读取/var/mobile/Library/SMS/sms.db的SMS数据库。 但是我发现应用程序无法读取它,因为SandBox进程拒绝了这个动作。 所以我的问题是,在iPhone被越狱后,SandBox是否被移除?

(现在我认为/var/mobile/Applications/中的/var/mobile/Applications/仍然受到SandBox的限制,越狱过程不会删除此目录中的SandBox?)

不幸的是,你猜对了。 在越狱的设备上,安装到正常位置( /var/mobile/Applications/ )的/var/mobile/Applications/仍然是沙盒(*见下面的注释)。

越狱不完全删除沙箱

它允许您运行未由有效的Apple证书签名的代码。 因此,它也允许您将您的应用程序安装到不同的位置。

但是,如果将/Applications/安装到/Applications/ ,则可以读取/var/mobile/Library/SMS/sms.db ,正如我在此答案中所述 。 作为一个系统应用程序,你将在沙箱之外。

这与Objective-C或Cocoa Touch与C API无关。 如果你所要做的只是使用众所周知的CI / O调用来逃避它,那么它就不是一个沙盒。

看到这个类似的答案(closures的问题) ,一些相关的讨论。


更新: 在这个线上线索看到saurik的评论。 总结是不同的越狱(例如evasi0n,Absinthe,redsn0w)可能会以不同的方式影响沙箱。 Saurik的build议当然是不能完全消除。

我刚刚尝试从iPhone的串口读取时遇到了同样的问题。 您的猜测是正确的,即使在越狱后, /var/mobile/Applications/中的常规app store应用仍然受到沙盒限制。 系统应用程序不受这些限制,可在/var/stash/Applications/ (或者我认为在iOS 6中有一个标识符在path中),这是来自Cydia的越狱应用程序安装到的地方。

更新 :使用Cydia应用程序iFile,我可以打开/var/mobile/Library/SMS/sms.db数据库并查看内容。 而手机短信应用程序没有特殊的权利文件,所以我觉得你应该没有问题,如果你的应用程序放在系统的应用程序目录下阅读短信数据库。

实际上有一种方法不能使用沙箱帐户。 如果您重新启动越狱设备,并显示苹果bootlogo时,您可以按住音量增加button来禁用mobilesubstrate。 这可以让你的设备启动,就像从来没有越狱和沙箱启用。 回到你的越狱状态,重新启动。 就那么简单!