阅读目录
IOS平台Mach-O文件格式介绍
发布于:2016-4-25 18:35 | 202740次阅读 作者: 管理员 | 原作者: TP | 来自: 原创
IOS平台中可执行文件属于Mach-O格式,Mach-O文件格式没有Windows平台的PE文件复杂,一般的Mach-O文件由三部分组成,分别为:文件头、Command信息、节段的数据和代码内容信息,对应文件结构截图如下: 下面介绍Mach-O的文件头、Command信息结构。 1、文件头格式 文件头分为32位和64位两个版本的Mach-O文件头,两个版本对应文件头格式如下:
64位文件头信息币32位文件头信息多出了reserverd字段,下图为IDA中查看雷霆战机IOS 32位版本文件头信息: MachOView工具可查看Mach-O文件格式的详细信息,该工具只能Mac系统中运行,对应查看雷霆战机中IOS平台32位可执行文件头信息如下所示(与上图IDA内容对应): Mach-O的文件头格式较为简单,其中Magic Number属于文件标识的类型信息,通过该字段可判断文件是否同时包含32位、64位版本信息。
2、Load Command信息解析 文件头之后的内容属于Load Command信息,Load Command结构定义如下所示: Cmd的项数和大小由文件头进行定义,其中cmd表明当前项属于哪种Command,不同的Command会有不同的解析方式,其中部分CMD内容如下图所示: 上图为部分CMD内容的定义和解释,例如其中LC_GEGMENT表明当前文件数据内容中节段信息(如代码段、数据段等)、LC_LOAD_DYLIB为当前需要加载的动态库信息。例如LC_LOAD_DYLIB项Command结构定义如下: IDA中查看雷霆战机某项LC_LOAD_DYLIB实际内容如下图所示: Mach-O文件包括较多的CMD项内容,通过Command内容可将文件数据和代码正确的加载、依赖库的加载等。 以上详细介绍Mach-O格式的文件头、Load_Command定义和解析,Mach-O文件头每项详细解析可参考苹果官方链接:https://developer.apple.com/library/mac/ documentation/DeveloperTools/Conceptual/MachORuntime/。 |
最新评论
发表评论