美文网首页逆向+反编译
iOS 探索 Mach-O 文件

iOS 探索 Mach-O 文件

作者: qinghan | 来源:发表于2021-01-21 16:09 被阅读0次

什么是mach-o文件

macosiOSiPadOS存储程序和库的文件格式。对应系统通过应用的二进制接口(application binary interface)简称ABI来运行格式的文件

mach-o的文件类型有哪些

1.Executable:应用程序可执行文件,如.m/.h文件经过编译后会生成对应的Mach-O文件,如下图


mach-o-1.png

2.Dylib Library:动态链接库
3.Static Library:静态链接库
4.Bundle:不能被链接 Dylib,只能在运行使用dlopen()加载
5.Relocatable Object File:可重定向文件类型

mach-o文件结构

下面先来一张图大致了解一下mach-o文件的结构

mach-o.png

mach -header 头部

可以确定文件运行的框架,文件类型,cpu类型。所有指令的大小,从下面的结构体就可以看出

struct mach_header_64 {
    uint32_t    magic;      /*确定Mach-O文件运行框架,如64位/32位*/
    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 */
};

可以通过objdump --macho -private-header ${MACH_PATH} 在终端命令来查看头部信息

mach-header.png
也可通过MachOView这个工具来查看
mach-header1.png

Load Commands(加载命令)

告诉加载器如何处理mach-o文件。紧接这header后面,其通用的数据结构至少包含下面字段:

struct load_command {
    uint32_t cmd;       /* type of load command (指令类型)*/
    uint32_t cmdsize;   /* total size of command bytes (指令的大小)*/
};

通过下面的图可以大致了解有哪些指令,及指令的一些信息


LC_Commond.png

指令类型

下面一张图详细介绍了指令的类型,及作用


指令类型.png

Data区域

data段主要数据集中在Section区域,section主要包含TEXT和DATA,下面我们通过machoview看一下:


data区域.png

`

相关文章

  • iOS:strip

    1.探索macho文件 1.1macho简介 Mach-O(Mach Object)是macOS、iOS、iPad...

  • Mach-O探索

    Mach-O探索 前言 我们都知道在iOS应用程序中的可执行文件的格式是Mach-O,那么Mach-O到底存储了哪...

  • iOS Crash从捕获到符号化解析分析

    目的 探索iOS Crash分类及捕获流程 了解Crash文件结构及段含义 了解Mach-o文件结构 分析Cras...

  • iOS 探索 Mach-O 文件

    什么是mach-o文件 macos、iOS、iPadOS存储程序和库的文件格式。对应系统通过应用的二进制接口(ap...

  • iOS程序的内存布局

    iOS程序安装之后,是以Mach-o文件的格式保存在iOS设备里面,当启动程序时,对应的Mach-o文件就会被加载...

  • Mach-O二进制文件结构及其应用

    1. Mach-O 文件结构 Mach-O(Mach Object) 文件格式是 OS X 与 iOS 系统上的可...

  • fishhook 源码学习

    Mach-O 什么是Mach-O Mach-O 为 Mach Object文件格式的缩写,是用于 iOS 和 ma...

  • iOS进阶02: Mach-O

    一、什么是Mach-O文件? Mach-O是 Mach Object文件格式的缩写,是 mac以及 iOS上可执行...

  • Mach-O

    一、什么是Mach-O文件? Mach-O是Mach Object文件格式的缩写,是mac以及iOS上可执行文件的...

  • iOS逆向-Mach-O(Ⅴ)

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

网友评论

    本文标题:iOS 探索 Mach-O 文件

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