mach5:iOS逆向与安全 - 5. Mach-O文件格式

前言

  • Mach-O文件格式源码
  • Mach-O苹果官方手册
  • 想要程序跑起来,那么这个可执行文件的格式就需要被当前的操作系统所理解,比如:

    • Linux 操作系统下可执行文件格式是 ELF
    • Windows 的可执行文件格式是 PE32/PE32+
    • Android 的可执行文件格式是 ELF
    • OSX 和 iOS的可执行文件格式是 Mach-O

    准备工具

    方式1: 终端查看

    来到Mach-O文件所在位置,输入相关命令得到Mach-O文件信息。为了更直观点,推荐方式2查看Mach-O文件。

    方式2: 工具查看

    首先要下载一个可以查看Mach-O文件格式的工具,本来想用 MachOView ,无奈下载完后打开Mach-O文件后,会闪退,就去逆向论坛找了个大神些的替代MachOView的工具 MachOExplorer 。我这里下载使用的是MachOExplorer,下载完后,打开,点击菜单栏的 file -> Mach-O文件 (此处我用模拟器的运行,打开了Debug-iphonesimulator文件夹,找到ipa,邮件显示包内容后可以获得可执行文件)。


    Mach-O文件是什么

    在OSX和iOS系统下,平时接触到的可执行文件、库文件、dsym文件、动态库、动态链接器(dyld)都是这种格式。Mach-O的组成结构包括:Header (头部)、Load commands(加载命令)、Data(Data包含多个 Segment(段),Segment中包含多个 Section(节))

    Mach-O文件格式

    简单介绍dsym文件,后续开篇介绍。

    • dSYM 文件是什么:Xcode编译项目后,会有一个项目同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件。
    • dSYM 文件的作用:release 模式打包或上线后,崩溃错误不直观,这时就需要分析 crash report 文件,iOS 设备中会有日志文件保存我们每个应用出错的函数内存地址,通过 Xcode 的 Organizer 可以将 iOS 设备中的 DeviceLog 导出成 crash 文件,这个时候我们就可以通过出错的函数地址去查询 dSYM 文件中程序对应的函数名和文件名。大前提是我们需要有软件版本对应的 dSYM 文件,这也是为什么我们很有必要保存每个发布版本的 Archives 文件了。

    Header (头部)

    header的数据结构

    Mach-O的头部信息,可以使我们快速得到一些信息,比如
    32位结构还是64位结构,比如文件类型架构类型等等。
    让我们先来看看header的数据结构定义。

    /** 32位架构对于header的定义*/struct mach_header { uint32_t magic; /* mach magic number identifier */ cpu_type_t cputype; /* cpu specifier */ cpu_subtype_t cpusubtype; /* machine specifier */ uint32_t filetype; /* type of file */ uint32_t ncmds; /* number of load commands */ uint32_t sizeofcmds; /* the size of all the load commands */ uint32_t flags; /* flags */};/** 64位架构对于header的定义*/struct mach_header_64 { uint32_t magic; /* mach magic number identifier */ cpu_type_t cputype; /* cpu specifier */ cpu_subtype_t cpusubtype; /* machine specifier */ uint32_t filetype; /* type of file */ uint32_t ncmds; /* number of load commands */ uint32_t sizeofcmds; /* the size of all the load commands */ uint32_t flags; /* flags */ uint32_t reserved; /* reserved */};

    32位和64位架构的头文件对比,多了一个reserved(保留字段&#

    相关推荐

    相关文章