iOS逆向之文件系统结构

·  阅读 536
  • 上一篇文章地址:iOS逆向之介绍
  • 上一篇文章中,介绍了iOS逆向做了些什么,需要怎样的防护,逆向的流程,提到的工具.
  • 本篇将要以文件系统结构开篇,带大家了解文件系统结构.
  • 欢迎大家留言,当然你也可以加群交流.

####1.系统文件结构

  • 系统文件

在手机终端执行uname -a 命令,终端可以在cydia中安装MTerminal插件. 执行命令后,可以看到iOS系统基于Darwin Kernel的,而Darwin Kernel是一种UNIX-like操作系统.

  • 文件目录 在越狱设备上,可视化方式查看iOS系统文件

  • 相对于一般的iOS开发者来说,可能对iOS系统结构一无所知.因为权限低,App不能访问自身以外的绝大多数文件.

  • iOS一旦越狱,就可以拥有更高的root权限,从而访问全系统文件.

  • 如何查看文件目录?

1.在MacOS上可以安装itools,itools下载地址

2.在MacOS上也可以安装iFunBox,iFunBox下载地址

3.在iOS越狱设备Cydia中安装iFile(如果要访问越狱设备的文件系统,需要打开Cydia,安装Apple File Conduit "2")

4.可以通过SSH远程登录iOS来查看,汇编逆向工具集(二),文章中有介绍,如何通过ssh远程登录,Cydia中使用到了OpenSSH插件.详情请看文章汇编逆向工具集(二)

  • 文件目录结构
    • iOS是OSX演化而来的,而OSX则是基于UNIX操作系统的.
    • Filesystem Hierarchy Standard (文件系统层次化标准简称FHS),FHS为类UNIX操作系统的文件目录结构指定了一套标准,目的是让用户预知文件或目录的存放位置.

UNIX操作系统的常见目录结构如下所示:

上图目录中的内容多用于系统底层.

下面接着介绍iOS的独有目录.

Application 存放所有的系统App和来自于Cydia的APP,不包括APPStore下载的App.
复制代码
Developer:供开发者使用
复制代码
Library: 系统资源,用户设置
- Logs是系统日志
- Ringtones是系统自带铃声
- Launch Daemons是启动daemon程序
- MobileSubstrate,里面存放了所有基于Cydia Substrate的插件
复制代码
System:系统的重要组成部分
- /System/Library/Carrier Bundles里面是运营商的一些配置
- /System/Library/Frameworks;/System/Library/PrivateFrameworks里面
是系统中各种公开与未公开的Framework
- /System/Library/CoreServices里的SpringBoard.app是桌面管理器,是用
户和系统直接交互的中介.
- /System/Library/PerferenceBundles里面存放的系统设置中的一些设置项.
复制代码
User:用户目录,实际指向/var/mobile
- 这个目录里存放大量用户数据
- /User/Media/里面存放的是相册等
- /User/Library/里面存放的是短信,邮件等
- /var/mobile/Media/DCIM下存放照片
- /var/mobile/Media/Recordings下存放录音文件
- /var/mobile/Library/SMS 下存放短信数据库
- /var/mobile/Library/Mail 下存放邮件数据
- /var/mobile/Containers,存放AppStore下载的app,App的可执行文件在bundle与App中的数据目录被分别存放在
/var/mobile/Containers/Bundle
和/var/mobile/Containers/Data
复制代码
bin:存放用户级二级制文件
- 比如mv,ls等
复制代码
dev:设备文件
- 每个设备在/dev目录下都有一个对应的文件
复制代码
etc:存放系统脚本,hosts配置,SSH配置文件等
复制代码
sbin:存放系统级二进制文件
比如reboot,mount等
复制代码
usr:用户工具和程序
- /usr/include存放标准C头文件
- /usr/lib中存放库文件
复制代码
var:一些经常改动的文件
- 钥匙串keychains,临时文件,从AppStore下载的应用.
复制代码
  • iOS应用的沙盒目录

1.Application Bundle包含应用可执行文件和资源文件

如果获取应用的Bundle路径,可以通过ps -e | grep appname 查看应用的Bundle路径
复制代码

2.Applicaiton Data 包含APP运行产生的数据和配置信息

如果获取应用的Data路径,可以通过Cycript工具
cycript  -p 应用名
cy# directory = NSHomeDirectory()
@"/var/mobile/Containers/Data/Application/xx"
复制代码

3.Data目录结构

1.Document 存放应用运行时生成的并且需要保存的数据。注:iTunes或iCloud同步设备时会备份该目录

2.Library/Caches 存放应用运行时生成的并且需要保存的数据。iTunes或iCloud不同步。

3.Library/Preferences 存放偏好设置。iOS的偏好设置(settings)应用
也会在该目录查找应用的设置信息。NSUserDefaults保存在该目录下。
iTunes或iCloud同步设备时备份该目录。

4.tmp存放应用运行时所需的临时数据。当某个应用没运行时,iOS系统可能会清除该目录下的文件。
但不可依赖这种自动清除机制,应该及时手动清除。
复制代码

####2.总结 以上内容是对iOS系统文件结构的介绍. 下一篇文章将要对iOS系统文件的权限进行介绍.

分类:
iOS
标签:
分类:
iOS
标签:
收藏成功!
已添加到「」, 点击更改