为什么在越狱后,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。 这可以让你的设备启动,就像从来没有越狱和沙箱启用。 回到你的越狱状态,重新启动。 就那么简单!