深入剖析ios系统的文件系统结构

作者: shaneZhang 分类: ios技术 发布时间: 2014-10-10 15:42

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

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

❏/boot:存放能使系统成功启动的所有文件,这些文件一般在内核用户程序开始执行前得到调用。在iOS中此目录为空。

❏/dev:”device”的简写,存放BSD设备文件。每个文件代表系统的一个块设备或字符设备,一般来说,“块设备”以块为单位传输数据,如硬盘;而“字符设备”以字符为单位传输数据,如调制解调器。

❏/sbin:”system binaries”的简写,存放提供系统级基础功能的二进制文件,如netstat、reboot等。

❏/etc:”et cetera”的简写,存放系统脚本及配置文件,如passwd、hosts等。在iOS中,/etc是一个符号链接,实际指向/private/etc。

❏/lib:存放系统库文件、内核模块及设备驱动等。iOS中此目录为空。

❏/mnt:”mount”的简写,存放临时的文件系统挂载点。iOS中此目录为空。

❏/private:存放两个目录,分别是/private/etc和/private/var。

❏/tmp:临时目录。在iOS中,/tmp是一个符号链接,实际指向/private/tmp。

❏/usr:包含了大多数用户工具和程序。/usr/bin包含那些/bin和/sbin中未出现的基础功能,如nm、killall等;/usr/include包含所有的标准C头文件;/usr/lib存放库文件。

❏/var:”variable”的简写,存放一些经常更改的文件,比如日志、用户数据、临时文件等。其中/var/mobile/Applications下存放了所有App Store App,是要重点关注的目录之一。上述目录中的内容多用于系统底层,逆向难度较大,作为初学者,暂时不用在其中投入太多精力。从学和练的角度出发,循序渐进,由易到难,从我们熟悉的内容开刀,效率更高。作为iOS开发者,日常操作所对应的功能模块大多来自iOS的独有目录,如下所示。

❏/Applications:存放所有的系统App和来自Cydia的App,不包括App Store App。越狱的过程把/Applications变成了一个符号链接,实际指向/var/stash/Applications,如图2-3所示。这个目录也是我们要重点关注的目录之一。

❏/Developer:/Developer相对没那么重要,它的出现完全是因为我们在Xcode连接iOS设备时选择了”Use for Development”

❏/Library:用来存放系统App的数据。其中最需要关注的是/Library/MobileSubstrate目录,因为这个目录中存放了所有基于MobileSubstrate的插件。在iOS系统中,MobileSubstrate是一个提供hook功能的基础平台,运行在这个平台上的插件通常被称为tweak。

如果觉得我的文章对您有用,请随意打赏。如果有其他问题请联系博主QQ(909491009)或者下方留言!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注