"知行合一:iOS逆向文件类型分析"

1.文件权限

  • iOS中的每个文件都具有一系列权限.文件权限是iOS系统确保安全操作的一个重要部分.

  • iOS系统用3个比特表示文件的操作权限,从高位到低位分别是读(r),写(w)和执行(x).

  • 每个文件具有以下属性

    • 所有者权限:决定文件的所有者可以对文件进行的操作
    • 组权限:决定属于该组的成员对他所拥有的文件能够进行的操作
    • 其他人权限: 表示其他人能够对该文件进行的操作.
  • 除r,w,x权限外,文件还可以拥有SUID,SGID和Sticky等权限,SUID,SGID和Sticky等介绍

  • 文件权限字符介绍
第一个字符表示文件的类型,l是符号链接文件,d是文件夹,-是普通文件
第二到第四个字符表示读,写,执行权限
第五到第七个字符表示文件所属组的权限
第八到第十个字符表示其他人的权限

2.文件类型

我们的目标是Application,Dynamic Library(dylib)和Daemon这三类二级制文件,对它们的了解越深入,逆向工程就会越顺利.
我们会一一介绍这三类文件

Application

一般我们正向开发时间长了,对App关注有所不同.在正向开发的时候,我们不会考虑到逆向的本质.

1.bundle

- bundle,它不是一个文件,包含了二进制文件及运行所需的资源.

- 正向开发中App和framework都是以bundle的形式存在的.

- 在越狱iOS中常见PreferenceBundle,可以看成是一种依附于Settings的App.

2.App目录

- 正向开发者,对应用项目目录应该是非常的清楚.有正向开发的经验,对逆向帮助性是挺大的.

- 比如info.plist文件,它记录了App的基本信息,如Bundle identifier(标识符),
可执行文件名,图标文件名等信息;

- Iproj目录:存放的是各种本地化的字符串(.strings)

3.系统APP VS.AppStore

/Applications/目录存放系统App和Cydia下载的App,两者依然存在区别

  • 目录结构:

    • 都含有info.plist,可执行文件,Iproj目录

    • 数据目录存放位置不同:AppStore下载的应用数据目录在/var/mobile/Containers/Data下

    • 以mobile权限运行的系统App的数据目录在/var/mobile下

    • 以root权限运行的系统App的数据目录在/var/root下

  • 安装包格式与权限

    • Cydia App的安装包格式一般是deb

    • AppStore的安装包格式一般是ipa(正向开发者打包后,是一个ipa包)

    • deb 是来自Debian的安装包格式,它的属主用户和属主组一般是root和admin,能够以root权限运行.

    • ipa是苹果为iOS推出的专属App安装包格式,属主用户和属主组都是mobile,只能以mobile权限运行.

  • 沙盒:

    • iOS中的沙盒就是一种访问限制机制

    • 沙盒会将App的文件访问范围限制在这个App内部

    • 沙盒还会限制App的功能

Dynamic Library

平常开发,大部分时间都是在写应用的功能,如果某个第三方库依赖了某个库,我们一般手动导入项目中或者pod 安装.这些库我们经常遇到,其实本质是dylib.

在iOS中,lib分为static和dynamic两种:

static lib在编译阶段成为App可执行文件的一部分,会增加可执行文件的
大小,启动时需要加载的内容变多,所以可能会导致App启动变慢.
dylib,它不会改变可执行文件的大小,只有当App需要用到这个dylib时,iOS
才会把它加载进内存,成为App进程的一部分.

dylib本身并不是可执行文件,不能独立运行,只能为别的进程服务,而且它们寄生在别的进程里.
Daemon

正向开发者,从开发到接触逆向,都会认为iOS中没有真正的后台多任务.
到底有没有守护进程呢?

比如我们用手机刷短视频的时候,突然来了电话,其他操作立即中断,立即弹出来电页面,如果没有后台任务,我们可能看不到来电页面.

Daemon为后台运行而生,给用户提供了各种守护.iOS的根进程是launchd,它会在开机时检查/System/Library/LaunchDaemons和/Library/LaunchDaemons下所有格式符合规定的plist文件,然后启动对应的daemon.

3.Cydia Substrate

Cydia Substrate,允许第三方开发者在越狱系统的方法里打一些运行时不定和扩展一些方法.
需要再Cydia中安装Cydia Substrate.
Cydia Substrate主要包括3个主要模块:MobileHooker,MobileLoader,Safe mode.

  • MobileHooker
- 用于替换系统和应用的方法
  • MobileLoader
- 用于将第三方动态库加载到运行的目标应用里面

MobileLoader加载过程


- 通过环境变量DYLD_INSERT_LIBRARIES,把它自己加载到目标应用里面

- 然后查找/Library/Mobile Substrate/DynamicLibraries/目录下面的所有plist文件

- 如果plist文件里面的配置信息符合当前运行的应用,就会通过dlopen函数打开对应的dylib文件

plist过滤条件


- 只有满足plist的过滤文件,第三方动态库才会被加载

- CoreFoundationVersion: 只有CoreFoundation.framework的版本高于某个值时才会加载

- Bundles : 只有应用的Bundle ID在该列表中时才会加载

- Classes: 只有应用实现了某些特定的OC类才会加载

- Executables: 只有应用的可执行文件的名字和该列表匹配时才会加载

  • Safe mode
    安全模式是非常有用的,为什么说安全模式有用呢.之前写的插件,因为有特殊原因,编写的插件会导致崩溃,而进入安全模式,把可以把最近安装的插件给卸载掉,从而保护到越狱环境

4.总结

本篇文章详细介绍了文件权限及类型、Cydia Substrate等内容,通过对iOS文件系统的全面解析,读者应该对其有了更深入的了解。
下一篇文章将重点介绍iOS逆向工具,敬请期待!欢迎继续关注iOS逆向系列文章,并留言交流您的想法和问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,265评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,274评论 1 288
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,087评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,479评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,782评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,218评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,594评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,316评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,955评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,274评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,803评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,177评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,732评论 3 229
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,953评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,687评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,263评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,189评论 2 258

推荐阅读更多精彩内容