IOS逆向(3)Mach-O

Mach-O

  • Mach-O是Mach object的缩写,是Mac/IOS上的存储格式、库的标准格式。

常见的Mach-O文件类型

  • MH-OBJECT
  1. 目标文件(.O)
  2. 静态库文件(.a),静态库其实就是N个.O合并在一起
  • MH-EXECUTE:动态库文件;
  • MH-DYLIB:动态库文件
  1. dylib : 动态库文件,用于加载以下几种类型文件:MH_DYLIB、MH_BUNDLE、MH_EXECUTE;
  2. APP的可执行文件、动态库都是由dyid负责加载的;
  3. framework/xx
  • MH_DYLINKER:动态链接编辑器
  1. /usr/lib/dyid
  • MH_DSYM :存储着二进制文件符号信息的文件
  • .DSYM/Contents/Resources/DWARF/xx(常用于分析app的奔溃信息)

Universal Binary(通用二进制文件)

  • 通用二进制文件
  • 同时使用于各种架构的二进制文件
  • 包含了多种不同架构的独立的二进制文件

窥探Mach-O的结构

  • 命令行工具
  1. file:查看Mach-O的文件类型。   file 文件路径
  2. otool:查看Mach-O特定部分和段的内容
  • lipo:常用于多架构Mach-O文件的处理、
  1. 查看架构信息:lipo -info 文件路径
  2. 导出某种特定架构:lipo 文件路径 -thin 架构类型 -output 输出文件路径
  3. 合并多种架构:lipo 文件路径1 文件路径2 -output 输出文件路径
  • GUI工具

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

Mach-O的基本结构

  • 一个Mach-O文件包含3个主要区域
  1. Header:文件类型、目标架构类型等;
  2. Load commands:描述文件在虚拟内存中的逻辑结构、布局;
  3. Raw segment data:在Load commands中定义的Segment的原始数据;

在后续的逆向中,了解Mach-O文件的架构是至关重要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像海岛的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值