现在用ios系统的人越来越多了,但是发现很多人从非正规渠道购买的ios设备里的操作系统已经被越狱过了,什么是越狱呢,越狱是指ios系统不在像原生系统那样有很多限制。比如说可以安装不是通过itunes分发的应用程序,可以安装iap creaker,模拟购买流程,不用花钱就可以购买游戏里的道具,金币。还可以向系统文件夹下拷贝文件。其实说了这么多,意思就是说越狱的机器用户可以获取最高的root权限,干任意自己想干的事情。任何事情都是有利有弊的,既然你可以拥有最高的root权限,那别人同样可以拥有同样的root权限,这样你的ios设备完全暴露在危险之中。说到这里大家可能就迷惑了,为什么说我自己还不能拥有系统的最高权限了呢?这就和ios操作系统有关了,ios是从苹果的next操作系统发展过来的,next是一款类unix操作系统,unix系统对于文件权限的限制非常严格,普通用户常用的操作更本用不到root权限,用户的操作请求假如是已分配权限,自然可以执行,反之需要root权限的话就不被允许,说了这么多,那sandox又是什么东西呢?let‘s go,揭开它神秘的面纱。

其实苹果的sandbox不是特别前沿的安全模型,在微软的office2010,我们常用的chrome浏览器,都用到了这一安全体系,为什么说是安全体系呢?让我们来看苹果官方给出的一张图,这张图就是苹果解释sandbox的原理图。从原理图可以看到以下几点:

图一
     1、每个应用程序都有自己的存储空间
     2、应用程序不能翻过自己的围墙去访问别的存储空间的内容
     3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。
     通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是:sandbox对应用程序执行各种操作的权限限制。通过查看资料,发现苹果sandbox被封装在libsandbox.dylib的静态库里。下面主要介绍下sandbox的运行流程:
1、为每个进程分配空间和权限配置
2、TrustedBSD API 托管 和通信
3、暗盒负责关闭代码控件,明盒负责打开代码控件
     开始以sandbox_init 通过libsandbox.dylib转换为2进制传递给kernel mac syscall TrustedBSD 将sandbox_init 的请求发sandbox.kext 的扩展,扩展为当前进程安装证书,然后返回安装结果,如果安装成功,每次进程的请求,都会被trusted bsd 发送给sandbox.kext 去匹配之前安装的证书规则。如果证书不匹配的话,则安装失败。目前苹果的证书都是rsa加密的证书,证书有三种类型,一种是developer类型,真机调试的时候要用到这个证书,还有另外两种分别是ad hoc,和distribution证书,它们的区别以及使用方式,我将通过另一篇博客向大家介绍。还是回到正题上,每种证书里都写有设备id,应用程序的权限。现在来看看,应用程序都有哪些权限,通过运行man sandbox_init, 得到一下权限:
图二
     看到这里,开发ios的同学肯定恍然大悟了,ios下可写文件和可读文件不是放在同一个文件下的,从这里可以看到,应用程序的可写文件都放在/var/tmp下,具体是什么文件格式没有深究,但是和android估计差不了多少吧,android是通过apk包名来命名文件夹名字。这样才应用程序卸载时会将可写文件下的文件一同卸载掉,同样程序升级的时候,只将可读文件下的文件覆盖掉,做到同步到最新文件。这里直到权限部分,后面的如何解析证书权限就不深说了,有兴趣的同学自己看文档,文章后面我会附上文档的地址。
     解析文件权限是通过苹果自己定义的一种解析语言,通过读证书里定义的权限,得出结果,来判断是否执行应用程序的请求。如果解析拥有请求的权限,则通过TrustBsd将请求传递给操作系统进程,由操作系统来执行,反之则返回失败。
参考文档:http://securityevaluators.com/files/papers/apple-sandbox.pdf

剥开ios 系统sandbox神秘面纱相关推荐

  1. 揭开均线系统的神秘面纱_揭开依赖注入的神秘面纱,并通过此快速介绍了解它的实际应用...

    揭开均线系统的神秘面纱 by Sankalp Bhatia 通过Sankalp Bhatia 揭开依赖注入的神秘面纱,并通过此快速介绍了解它的实际应用 (Demystify Dependency In ...

  2. 揭开均线系统的神秘面纱_在应用程式审查API中揭开新玩法的神秘面纱

    揭开均线系统的神秘面纱 During the #11WeeksOfAndroid the new Play In-App Review API was announced. This was a lo ...

  3. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(1):确定框架方案

    遇到的问题   做游戏的时候用的是cocos2dx+lua,游戏开发自有它的一套框架机制.而现在公司主要项目要做android和iOS应用.本文主要介绍如何搭建简单易用的App框架. 如何解决   对 ...

  4. 【翻译】揭开HTML5的神秘面纱

    写在前面的话: 这篇文章摘自Mozilla官网,主要针对HTML5和本地应用发表了一些.没有设计到技术,所以基本是逐字翻译,但愿我蹩脚的英语水平能把大师的 Chris Heilmann的思想整理明白. ...

  5. Mac 开发的神秘面纱:后娘养的嫡长子

    本来,标题是「揭开 macOS 开发的神秘面纱」,可想想,以我目前对 macOS 开发的理解,还是去掉「揭开」二字吧 ? 本文不是系统性的文章,更像是 随笔.回想自己过去 1.6 年的 macOS 开 ...

  6. 了解黑客的关键工具---揭开Shellcode的神秘面纱

    2019独角兽企业重金招聘Python工程师标准>>> ref:  http://zhaisj.blog.51cto.com/219066/61428/ 了解黑客的关键工具---揭开 ...

  7. 揭开J2EE集群的神秘面纱(一):什么是J2EE集群

    揭开J2EE集群的神秘面纱(一):什么是J2EE集群 作者:不详 来源:CSDN博客 酷勤网收集 2008-04-18 摘要 酷勤网 J2EE集群技术包括负载均衡和失效转移.负载均衡意味着有许多客户端 ...

  8. python可以干什么-Python可以用来做什么 为你揭开python神秘面纱

    Python可以用来做什么 为你揭开python神秘面纱 时间:2018-01-24     来源:解读Python 最近,编程界又一语言可谓是着实又火了一把,什么语言呢?python,python为 ...

  9. 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器开源项目介绍

    揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...

最新文章

  1. python爬虫实例--爬取拉勾网
  2. 设置超链接的HTML标签是______,如何对a超链接标签中包含的HTML标签进行样式设置...
  3. vue+elementui搭建后台管理界面(登录)
  4. java sessionmanager_java.lang.IllegalStateException:没有SessionManager
  5. SED单行脚本快速参考(Unix流编辑器)
  6. LeetCode——动态规划:斐波那契数列
  7. 力扣面试题16.05.阶乘尾数
  8. Linux配置Anaconda3环境变量的问题
  9. win10 wlan 诊断显示后没有有效的ip配置
  10. 广义pareto分布_帕累托分布
  11. 邮件监控云上脚本执行进度
  12. Android强行进阶,自定义控件—LayoutManager,技术协会安卓部面试
  13. 麻雀虽小五脏俱全----ZC评价系统
  14. python培训班深圳-深圳python人工智能培训班
  15. 南航里程每年清空吗_速度用!南航里程即将大量贬值!还有每年3张南航处卡!...
  16. 我的对象Girl会分身,浅克隆、深克隆
  17. 曾国藩:一勤天下无难事(五勤)
  18. 单点遥信发送表里一般都有什么变量啊?
  19. 处理iphone 微信中.play()方法不能播放的问题
  20. 【Reference Reading】MRI引导中子捕获治疗通过上调低密度脂蛋白转运体使用双钆/硼剂靶向肿瘤细胞

热门文章

  1. centos8 安装docker
  2. vs 无法启动程序c语言,vs2013运行c语言出现:无法查找或打开 PDB 文件。
  3. 【产品笔记】1.什么是精益产品探索
  4. GIS自主创新十年路(一):缘起ActiveMap
  5. 渗透测试学习笔记之案例五
  6. DIY个人第一台NAS
  7. 如何编辑二维码内容并批量生成
  8. SSL证书怎么购买?
  9. 跟着老猫来搞GO——工欲善其事必先利器
  10. Firefox 火狐 浏览器下载文件文件名中文乱码解决