越狱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/
以上内容可能有所改动,一切以原书为准。感谢作者的分享。