越狱iOS平台简介-笔记

来源:互联网 发布:亿恩网络 编辑:程序博客网 时间:2024/06/01 07:14

前言

iOS系统结构以及常见的二进制文件类型

一、iOS系统结构

访问iOS全系统文件是逆向工程的首要前提。
iOS 由OS X演化而来,而OS X则是基于unix操作系统的。
1)通过FHS标准了解类unix的文件目录结构,OS X则是在FHS基础上形成自己的hier(7)框架
FHS:
/boot 存放能使系统成功启动的所有文件 – iOS在此目录中为空
/dev 存放设备文件:块设备(硬盘)、字符设备(调制解调器)
/bin 提供用户级基础功能 :ps ls
/sbin 提供系统级基础功能:reboot 、netstat
/lib 存放系统库文件、内核模块、设备驱动– iOS中此目录为空
/mnt 存放临时的文件系统挂载点- iOS中此目录为空
/var 存放一些经常更改的文件:日志、用户数据、临时文件,其中/var/mobile /var/root 分别存放mobile用户和root用户的文件,重点关注

二、文件权限

说明文件的属主用户、属主组以及其他人能做什么。
ps: SUID \SGID \sticky

三、iOS二进制文件类型

iOS程序类型分为3类:Application, Dynamic Library,后台Daemon。 这三类文件的分工不同、其目录结构和文件权限也不同。

几个基本概念的理解:
1、bundle
一种按照某种标准结构来组织的目录,其中包含二进制文件以及运行所需的资源。
framework也是bundle,只是其中存放的是一个dylib,而不是可执行文件。相对来说一个app的地位比frame来得低,因为app只要依赖framework的接口来实现。

2、app 目录结构

1)Info.plist:
使用Xcode自带的命令行工具plutil 进行查看

devzkndeMacBook-Pro:WLqinbaowan devzkn$ plutil -p Info.plist

2)lproj 目录

存放各种本地化字符串。
3)系统app :/application 目录下存放的系统app和从Cydia 下载的app
它和storeApp的区别在于:
*目录结构(storeapp的数据目录在/var/mobile/containers/data;以mobile权限运行的系统app的数据目录在/var/mobile 下; 以root的权限运行的系统app的数据目录在/var/root)
*安装包格式以及权限: Cydia的app的安装包格式为deb ,属主用户和属主组一般都是root 和admin;而storeapp的属主用户和属主组一般都是mobile。
*沙盒:可以看作权限的一种表现形式,属于iOS的访问限制机制,授权文件也是沙盒的一部分。

3、 Dynamic Library

只有当app需要dylib的时候,才会将其加载到内存,成为app进程的一部分;其本身并不是可执行文件,不能独立运行,只能为别的进程服务,成为进程的一部分,权限取决于寄生的app。

4、Daemon

iOS系统是有后台多任务的。
1)守护进程,即windows的service。daemon 为后台运行而生,为用户提供各种守护。
2)iOS中的daemon 主要由一个可执行文件和一个plist文件组成。
这里的plist文件的作用是记录daemon的基本信息。
3)iOS的根进程launchd ,它会在开机的时候检查/System/Library/LaunchDaemon 和/Library/LaunchDaemon 目录下的所有格式符合规定的plist文件,然后启动对应的Daemon

原创粉丝点击