(四)程序类型

越狱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/

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容