iOS逆向_Mach-O

作者: iOS小洁 | 来源:发表于2023-01-19 19:22 被阅读0次

Mach-O

Mach-O是Mach object的缩写,是Mac/iOS上用于存储程序、库的标准格式

可以在xun的源码中找到Mach-O的定义,地址:https://opensource.apple.com/tarballs/xnu/

常见的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个主要区域

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

Mach-O Programming Topics

查看Mach-O的结构

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

Universal Binary(通用二进制文件)

同时适用于多种架构的二进制文件

包含了多种不同架构的独立的二进制文件

因为需要储存多种架构的代码,通用二进制文件通常比单一平台二进制的程序要

由于两种架构有共同的一些资源,所以并不会达到单一版本的两倍之多

由于执行过程中,只调用一部分代码,运行起来也不需要额外的内存

因为文件比原来的要大,也被称为“胖二进制文件”(Fat Binary)

dyld和Mach-O

dyld用于加载以下类型的Mach-O文件;

  • MH_EXECUTE
  • MH_DYLIB
  • MH_BUNDLE

APP的可执行文件、动态库都是由dyld负责加载的

相关文章

  • iOS逆向开发(二)----Cycript,class-dump

    iOS逆向开发(二)----Cycript,class-dump,Mach-O Cycript 在逆向开发中经常要...

  • iOS逆向反编译

    iOS逆向 准备:完美越狱iPhone 逆向APP思路:1,代码分析 2,对Mach-O文件的静态分析MachOV...

  • # iOS进阶 # 逆向的了解

    iOS逆向 1.class-dump解密 class dump 是一个用于检查保存在 Mach-O 文件中的 ob...

  • iOS逆向-Mach-O(Ⅴ)

    Mach-O文件 Mach-O其实是Mach Object文件格式的缩写,是mac以及iOS上可执行文件的格式, ...

  • iOS逆向:Mach-O

    目录一,APP从开发到安装的过程二,class-dump三,Hopper Disassembler四,动态库共享缓...

  • iOS逆向 - Mach-O

    简介 Mach-O是Mach object的缩写,是Mac\iOS上用于存储程序、库的标准格式 属于Mach-O格...

  • iOS逆向_Mach-O

    Mach-O Mach-O是Mach object的缩写,是Mac/iOS上用于存储程序、库的标准格式 可以在xu...

  • iOS逆向之Mach-O介绍

    上一篇文章: iOS逆向之Fishhook介绍 本篇文章将要对Mach-o进行介绍,我们会通过MachoView进...

  • 一 iOS 逆向工程概述

    1 什么是iOS逆向工程 2 iOS逆向的目的 3 iOS逆向过程以及方法 一 什么是iOS逆向工程 iOS逆向...

  • iOS逆向-MACH-O文件

    博客迁移到hexo

网友评论

    本文标题:iOS逆向_Mach-O

    本文链接:https://www.haomeiwen.com/subject/rpeqhdtx.html