时时勤拂拭,勿使惹尘埃

TOC

Categories

iOS(一)iOS文件目录&程序类型



一、iOS系统目录结构

1.1 类Unix目录结构

      iOS由Mac os x演化而来,mac os x则基于unix,故iOS满足类unix目录结构:
/
根目录
/bin
用户级基础功能二进制文件
/boot
系统启动文件,iOS为空
/dev
即devices,BSD设备文件
/sbin
系统级基础功能二进制文件
/etc
系统脚本&配置文件,iOS中实际指向/private/etc
/lib
系统库文件、内核模块、设备驱动等,iOS中为空
/mnt
临时文件系统挂载点,iOS中为空
/private
两个目录,/private/etc和/private/var
/tmp
临时目录,iOS中指向/private/tmp
/usr
大多数用户工具和程序
/usr/bin基础功能
/usr/include标准c头文件
/usr/lib库文件
/var
日志、用户数据、临时文件等。
/var/mobile/Applications下存放了所有的App Store App

1.2 iOS独有目录

/Applications
系统&cydia的app,不包括app store app,越狱过程把目录指向/var/stash/Applications
/Developer
Xcode连接设备选择”use for developer“产生
/Library
存放系统app数据;
/Library/MobileSubstrate存放所有MobileSubstrate插件,iOS中为hook平台,插件又叫tweak
/System
iOS系统组件:
/System/Library/Frameworks&/System/Library/PrivateFrameworks:存放各种framework;
/System/Library/CoreServices/SpringBoard.app:即桌面管理器;
/System/Library/PreferenceBundles:bundle提供各种”设置“功能。
/User
用户目录,实际指向/var/mobile:
/var/mobile/Media/DCIM:照片;
/var/mobile/Library/SMS:短信;
/var/mobile/Library/Mail:邮件;
/var/mobile/Library/CallHistory:通话记录;
/var/mobile/Applications:App Store App。
/Library/MobileSubstrate下通常有三种文件:
1、dylib,即Dynamic Library,也就是tweak插件;
2、plist,配合dylib使用的filter文件,指定注入目标;
3、disabled,被SBSettings禁用的tweak文件,其实就是把*.dylib改为*.disabled,不让MobileSubstrate加载。

二、iOS程序类型

2.1 Application

       Application就是常说的应用App。
       iOS体系中,App、framework、PreferenceBundle都是以bundle形式存在,bundle是按标准结构来组织的目录,包含可执行程序以及运行所需资源等。

2.1.1 App形式

1、App Store只有App一种类型;
2、越狱平台还有两种App形式:
a)       WeeApp,依附于NotificationCenter的App;
b)       PreferenceBundle,依附于Settings的App;
3、framework结构与App类似,但其bundle中存放的是动态链接库。

2.1.2  App文件结构-逆向关键部分

一、Info.plist
记录App的基本信息,等同于dex的AndroidManifest.xml (不含组件信息)。
包含:bundle identifier(唯一标识符,可以理解为APK的包名)、可执行文件名(app程序名)、图标文件名等。

二、Executable
App的执行入口,可执行程序,可直接使用classdump、IDA、GDB等工具加载。

三、Resources
资源文件,图标、图片、声音、配置文件、nib文件、字符串等。

2.1.3  App存放目录

一、/Applications:
存放系统App和Cydia下载的App;
App安装包格式主要为deb;
二、/var/mobile/Applications:
存放从App Store下载的App;
App安装包格式主要为ipa。

2.1.4  安装包格式

一、deb
Debian系统专属安装包格式,配合apt管理使用,由Cydia作者移植到iOS,Cydia下载的App都是deb格式,权限较高,涉及系统底层较多;
二、ipa
ipa格式是iOS唯一官方安装包格式,文件权限很小,sandbox限制很大,访问资源有限;
三、pxl
源于Mac上的pkg安装包,早期iOS唯一安装包,现在只有91等手机助手使用。

2.1.5  sandbox

访问限制机制,iOS最核心安全部件之一,实现很复杂,此处列举两个现象:
一、文件访问:
App的文件访问被限制在自身的bundle内部,但可以通过framework来访问如照片、音乐、通讯录等系统数据;
二、硬件调用:
跟文件访问一样,App只能通过framework访问摄像头、GPS模块等硬件。

2.2       Dynamic Library

动态链接库,类似于win下的dll文件。
面向App Store时候用不到,但Cydia中的tweak插件都是Dynamic Library形式。
Static Library,App启动时加载;Dynamic Library,App运行后需要时加载。
Dynamic Library权限和空间由加载的App决定。
Dynamic Library由Dynamic Loader(/usr/lib/dyld)加载进App内存空间。

2.3       Daemon

守护进程,即后台service。
iOS系统daemon主要由一个可执行文件和一个plist文件构成;plist文件与App中的Info.plist文件类似,记录daemon的基本信息。
iOS根进程是/sbin/launchd,会在开机或接到命令时检查/System/Library/LaunchDaemons和/Library/Daemons下符合规定的plist文件,然后按需启动对应daemon。
iOS第一款电话录音软件-Audia Recorder就是通过逆向/usr/sbin/mediaserverd这个daemon实现的。

0 评论:

发表评论