iOS逆向及安全

iOS逆向开发(五)- Mach-O

Posted on 2018-10-30,2 min read
封面图

1.Mach-O
2.Mach-O文件类型
3.Mach-O的基本结构
4.窥探Mach-O的结构

Mach-O

  • Mach-O是Mach object的缩写,是Mac\iOS上用于存储程序、库的标准格式
  • 属于Mach-O格式的文件类型有
  • 可以在xnu源码中,查看到Mach-O格式的详细定义(https://opensource.apple.com/tarballs/xnu/)

EXTERNAL_HEADERS/mach-o/fat.h
EXTERNAL_HEADERS/mach-o/loader.h

Mach-O文件类型

  • MH_OBJECT

目标文件(.o)
静态库文件(.a),静态库其实就是N个.o合并在一起

  • MH_EXECUTE:可执行文件

.app/xx

  • MH_DYLIB:动态库文件

.dylib
.framework/xx

  • MH_DYLINKER:动态链接编辑器

/usr/lib/dyld

  • MH_DSYM:存储着二进制文件符号信息的文件

.dSYM/Contents/Resources/DWARF/xx(常用于分析APP的崩溃信息)

Mach-O的基本结构

  • 一个Mach-O文件包含3个主要区域

Header:文件类型、目标架构类型等
Load commands:描述文件在虚拟内存中的逻辑结构、布局
Raw segment data:在Load commands中定义的Segment的原始数据

窥探Mach-O的结构

  • 命令行工具

file 文件路径

otool:查看Mach-O特定部分和段的内容

  • GUI工具

MachOView(https://github.com/gdbinit/MachOView)


下一篇: iOS逆向开发(四)- Reveal→