(一)iOS平台简介

我们知道 iOS是有OSX演化而来的。而OSX则是基于UNIX操作系统的。那么我们可以通过filesystem hierarchy standard 来一窥iOS 的目录结构(没有用过的UNIX系统,但做过一段时间的运维)。

上一篇介绍怎么从pc端连到手机端,连过去后,我们看看iOS的系统结构,

首先一下是我在手机上的一张截图,我们可以清楚的看到,这是/目录下的一些目录。


首先来看看它的目录结构:

1)/:根目录,以斜杠表示,其他所有目录和文件都在根目录下展开。

2)/bin:“binary” 的缩写,存放提供用户级基础功能的二进制文件,比如ls、ps等。

3)/boot:用过Linux的人都知道,这个目录是存放能使系统启动的所有文件,比如系统运行级别。iOS中此目录为空。

4)/etc: "Et Cetera"的简写,存放系统的一些配置文件及脚本。比如hosts、passed、group等。在iOS中,/etc 是一个符号链接,实际指向/private/etc 。

5)/Developer; 如果一台设备连接Xcode后被指定为测试用机,Xcode就会在iOS中生成这个目录,其中还有一些调试需要的工具和数据。

6) /User: 用户目录,实际指向/var/mobile,大家可以用ls -ld /User 命令查看,这个目录实际是个符号链接,这个目录下存放大量用户数据,比如:

/var/mobile/Media/DICM下存放照片

/var/mobile/Media/Recordings 下存放录音文件

/var/mobile/Media/SMS 下存放短信数据库

/var/mobile/Library/Mail 下存放邮件数据

知道了这些,假如我们把这个目录的权限改了,那些手机助手是否还能拿到短信记录吗。

再来看看iOS系统的权限

类UNIX系统都采用3*3位来表示一个文件的权限

lrwxr-xr-x 1 root admin 11 Oct 19 14:17 /User -> /var/mobile/


比如上边这行,这就是/User 目录的详细信息,l 表示是一个目录,这个目录的权限用数字表示就是755 一个文件的权限分为 r(read ,4),w(write,2), x(execute,1),从第二位开始,3位一组,第一组:rwx 表示属主(root 用户)有可读可写可执行权限,第二组(r-x)表示属组(admin 用户组)有可读可执行权限,第三组(r-x)表示其他用户(others)有可读可执行权限。r 用数字表示为 4 ,w用数字表示 2,x用数字表示为1 所以/User 这个目录的权限为755.

再来看看iOS二进制文件类型

iOS中要有Application、Dynamic Library(简称dylib)和Daemon 三类二进制文件

Application 就是我们最熟悉的app了,但是我们还是得搞清楚几个概念:

1、bundle :bundle的概念源于NeXTSTEP(对于这个大家应该熟悉,乔帮主离开apple 后创建的一个公司)它不是一个文件,而是按某种标准来组织 的目录。其中包含了二进制文件运行所需要的资源正向开发中常见的app和framework 都是以bundle的形式存在的。

2、可执行文件,我们以美丽说为例。

plutil -p Info.plist|grep CFBundleIdentifier

  "CFBundleIdentifier" => "5LDV722ABF.com.meilishuo.meilishuo"



3、沙盒(sandbox),通俗的说,沙盒就是系统的一种访问权限机制,可以看做是权限的一种表现形式。上面说过,假如把/var/mobile 中这个目录的权限改了,那些手机助手是否还能访问了,

dylib:这个我们在写app的时候只是用过,自己并没有写过。可以用file命令查看:

$ file MainBinary

MainBinary: Mach-O executable arm


在iOS中,lib分为static 和dylib 两种,其中static lib 在编译阶段成为app的可执行的一部分,会增加可执行文件的大小。因为app尺寸变大,启东时需要加载的内容变多,所以会导致app启动变慢,当然肯定有它存在的理由,比如说会加快app的运行速度。dylib则相对“智能”一些,它不会改变可执行文件的大小,只有app需要时才会加载进内存,成为app进程的一部分。

daemon:在类UNIX系统中称为守护进程,在iOS中的daemon主要由一个可执行文件和一个plist文件构成。

顺便提一句:iOS上德第一款电话录音软件“Audio Recorder”就是通过逆向mediaserverd 这个daemon实现的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值