《iOS应用逆向工程》学习笔记(四)iOS程序类型

越狱iOS中最常见的程序有Application, Dynamic Library和Daemon三类。


1.Application

除了传统意义上的App外,越狱iOS平台上还有两种App形式的存在:WeeApp(依附于NotificationCenter的App)和PreferenceBundle(依附于Settings的App),常见于Cydia平台。

普通App的bundle中存放的是可执行程序和所需资源,而framework的bundle中存放的是动态链接库。

主要关注App中的三个部分:

1.Info.plist:该文件记录了App的基本信息,如bundle identifier,可执行文件名,图标文件名等。

2.可执行程序:主要攻击目标之一。

3.Resouces(资源文件):其中各种本地化字符串(strings)是定位逆向目标的重要线索。


/Applications目录存放系统App和从Cydia下载的App,而/var/mobile/Applications目录存放的是从App Store下载的App。

两者目录结构差别不大,但前者的属主用户和属主组一般是root和admin,而后者的属主用户和属主组一般是mobile,二者的权限不同。

另外,/Applications目录中App安装包的格式为deb,/var/mobile/Applications目录中App安装包的格式为ipa。

其中:

deb格式是Debian系统专属安装包格式,而这种格式的安装包经常会涉及系统底层的操作,可以获取较高的权限。从Cydia下载的App都是deb格式。

ipa格式是苹果公司在iOS中唯一的官方安装包格式。


2.Dynamic Library

动态库文件和静态库文件的区别在于,静态库文件是一次性加载的,且常驻内存。而动态库文件只有App要用到这个Library时,系统才会把这个Library加载到内存中。其中内核会启动Dynamic Loader(/usr/lib/dyld)把App需要的Dynamic Library加载进App的内存空间中。注意动态库的权限和可用的内存空间由加载它的那个App来决定。

3.Daemon

iOS系统的daemon(后台守护进程)主要由一个可执行文件和一个plist文件构成。其中plist文件记录了daemon的基本信息。

iOS的根进程是/sbin/launchd,它会在开机或接到命令时检查/System/Library/LaunchDaemons和/Library/Daemons中所有符合格式规定的plist文件,然后按需启动对应的daemon。


摘自《iOS应用逆向工程》,官网是http://iosre.com/

以上内容可能有所改动,一切以原书为准。感谢作者的分享。



《iOS应用逆向工程》学习笔记(四)iOS程序类型,布布扣,bubuko.com

《iOS应用逆向工程》学习笔记(四)iOS程序类型

上一篇:让ios项目同时支持ARC和非ARC


下一篇:《iOS应用逆向工程》学习笔记(六)使用dumpdecrypted砸壳