美文网首页
iOS逆向 - Mach-O

iOS逆向 - Mach-O

作者: linleiqin | 来源:发表于2019-06-28 17:58 被阅读0次

简介

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

属于Mach-O格式的文件类型有

可以在xnu源码中,查看到Mach-O格式的详细定义

xnu/EXTERNAL_HEADERS/mach-o/loader.h
#define MH_OBJECT   0x1     /* relocatable object file */
#define MH_EXECUTE  0x2     /* demand paged executable file */
#define MH_FVMLIB   0x3     /* fixed VM shared library file */
#define MH_CORE     0x4     /* core file */
#define MH_PRELOAD  0x5     /* preloaded executable file */
#define MH_DYLIB    0x6     /* dynamically bound shared library */
#define MH_DYLINKER 0x7     /* dynamic link editor */
#define MH_BUNDLE   0x8     /* dynamically bound bundle file */
#define MH_DYLIB_STUB   0x9     /* shared library stub for static */
                    /*  linking only, no section contents */
#define MH_DSYM     0xa     /* companion file with only debug */
                    /*  sections */
#define MH_KEXT_BUNDLE  0xb     /* x86_64 kexts */

常见的Mach-O文件类型

  • MH_OBJECT
    目标文件(.o)
    静态库文件(.a),静态库其实就是N个.o合并在一起
  • MH_EXECUTE:可执行文件
    .app/xx
  • MH_DYLIB:动态库文件
    .dylib
    .framework/xx
  • MH_DYLINKER:动态链接编辑器
    /usr/lib/dyld
  • MH_DSYM:存储着二进制文件符号信息的文件

Mach-O的基本结构

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

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

窥探Mach-O的结构

1、命令行工具

file:查看Mach-O的文件类型

file 文件目录

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

lipo:常用于多架构Mach-O文件的处理
查看架构信息:

lipo  -info  文件路径

导出某种特定架构:

lipo  文件路径  -thin  架构类型  -output  输出文件路径

合并多种架构:

lipo  文件路径1  文件路径2  -output  输出文件路径

2、GUI工具

MachOView

dyld和Mach-O

  • dyld也是Mach-O格式文件,属于MH_DYLINKER类型
  • dyld用于加载以下类型的Mach-O文件
    MH_EXECUTE
    MH_DYLIB
    MH_BUNDLE
  • APP的可执行文件、动态库都是由dyld负责加载的

其他

在Xcode中查看target的Mach-O类型

Build Settings->Mach-O Type


Xocde

相关文章

  • 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/sneecctx.html