2.2 iOS二进制文件类型(个人笔记)

在iOS逆向工程初学阶段,我们的目标主要是 ApplicationDynamic Library(以下简称dylib)Daemon这三类二进制文件,对它们的了解越深入, 逆向工程就会越顺利。这三类文件分工不同,其目录 结构和文件权限也有一些区别。

Application

Application就是我们最熟悉的App了。了解下面的几个App相关概念,是
开始逆向工程前的必备工作。

bundle:概念来源于NeXTSTEP,是一个按某种标准结构来组织的目录,其中包含了二进制文件及运行所需的资源。正向开发中常见的App和framework都是以bundle的形式存在的;在越狱iOS中常见的PreferenceBundle,可以看成是一种依附于Settings的App,结构与App类似,本质也是bundle。Framework也是bundle,但framework的bundle中存放的是一个dylib,而不是可执行文件。
App目录结构:App目录的以下三个部分比较重要:

  • Info.plist:Info.plist记录了App的基本信息,如bundle identifier、可执行文件名、图标文件名等。其中bundle identifier会在后续章节的CydiaSubstrate中成为 tweak的重要配置信息。可以通过Xcode查看它的值,也可以通过Xcode自带的命令行工具plutil查看它的值。
  • 可执行文件:同样可以通过Xcode和plutil两种方式来查看Info.plist,定位可执行文件。也可以通过Xcode自带的命令行工具plutil查看它的值“Executable File”。
  • lproj目录:proj目录下存放的是各种本地化的字符串(.strings),是iOS逆向工程的重要线索,也可以用plutil查看。

系统App VS StoreApp:/Applications/目录存放系统App和从Cydia下载的App(我们把来自Cydia的App视为系统App)。而/var/mobile/Containers/目录存放的则是StoreApp。虽然两者都是App,但它们在如下方面存在着一些差别:

  • 目录结构:数据目录的位置不同:StoreApp的数据目录在/var/mobile/Containers/Data/下,以mobile权限运行的系统App的数据目录在/var/mobile/下,而以root权限运行的系统App的数据目录在/var/root/下。
  • 安装包格式与权限:Cydia App的安装包格式一般是deb,StoreApp的 安装包格式一般是ipa。其中deb是来自Debian的安装 包格式,由Cydia作者saurik移植到iOS中,它的属主 用户和属主组一般是root和admin,能够以root权限运 行;而ipa是苹果为iOS推出的专属App安装包格式, 属主用户和属主组都是mobile,只能以mobile权限运 行。
  • 沙盒(sandbox):iOS中的沙盒就是一种访问限制机制,我们可以把它看作是权限的一种表现形式,授权文件(entitlements)也是沙盒的一部分。它是iOS最核心的安全组件之一。总的来说,沙盒会将App的文件访问范围限制在这个App内部,一个App一般不知道其他App的存在,更别说访问它们了;沙盒还会限制App的功能,例如对iCloud接口的调用就必须经过沙盒的允许。

Dynamic Library

在Xcode工程里导入的各种framework,链接的各种lib,其实本质都是dylib。如果把焦点转移到越狱iOS中,Cydia里的各种tweak无一不是以dylib的形式工作的,正是这些tweak的存在让我们能够随意定制自己的iOS。在逆向工程中,我们会频繁接触各种dylib,因此有必要了解一些相关知识。

在iOS中,lib分为static和dynamic两种,其中staticlib在编译阶段成为App可执行文件的一部分,会增加可执行文件的大小。因为App尺寸变大,启动时需要加载的内容变多,所以可能会导致App启动变慢。dylib则相对“智能”一些,它不会改变可执行文件的大小,只有当App需要用到这个dylib时,iOS才会把它加载进内存,成为App进程的一部分。

值得一提的是,dylib虽然充斥在iOS的各个角落,是逆向工程的重要目标类型,但其本身并不是可执行文件,不能独立运行,只能为别的进程服务,而且它们寄生在别的进程里,成为了这个进程的一部分。因此,dylib的权限是由它寄生的那个App决定的,同一个dylib寄生在系统App和StoreApp里时的权限是不同的。

例如,你写了一个Instagram的tweak,用来把喜欢的图片保存在本地,如果保存目录是/var/mobile/Containers/Data/下App对应的Documents目录,那么因为Instagram是一个StoreApp,这样的操作是没有问题的,tweak能够正常工作。而如果保存目录是/var/mobile/Documents,那么在兴高采烈地保存了一大堆美图,准备回头细细品味时,你就会发现/var/mobile/Documents里啥图片也没有——操作都被sandbox给禁掉了。

Daemon

Daemon为后台运行而生,给用户提供了各种“守护”,如imagent保障了iMessage的正确收发,mediaserverd处理了几乎所有的音频、视频,syslogd则用于记录系统日志等。

iOS中的daemon主要由一个可执行文件和一个plist文件构成。iOS的根进程是launchd,它会在开机时检查/System/Library/LaunchDaemons和/Library/LaunchDaemons下所有格式符合规定的plist文件,然后启动对应的daemon。

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

推荐阅读更多精彩内容