• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2023-05-11 10:17 Aet 隐藏边栏 |   抢沙发  18 
文章评分 2 次,平均分 5.0

简介

  1. Mach-O 是 Mach 目标文件格式的缩写,是一种用于可执行文件、目标代码、共享库、动态加载代码和核心转储的文件格式
  2. 对mach-o对解析需要考虑到两点:
    1. 有的文件是以典型的mac-o头开始的
    2. 而有的文件则是以一个fat头开始的(详细如下文)

查看工具

otool

machOView

  1. 用这个图形工具打开目标文件,查看详细信息

Editor

mach-o结构

典型的mach-o

  1. mach-o header
    1. 包含有关二进制文件的一般信息
  2. load commands
    1. 它是一种目录,描述了段的位置、符号表、动态符号表等。每个加载命令都包含一个元信息,例如命令类型、名称、二进制文件中的位置等
  3. data
    1. 包含代码和数据,如符号表、动态符号表等

通用文件结构,也称fat file

  1. fat header
    1. 存放了fat file信息,以及不同架构的mach-o的位置
  2. mach-o header
  3. load commands
  4. data
  5. mach-o header
  6. load commands
  7. data

区别

  1. Mach-O 文件包含一种架构(i386、x86_64、arm64 等)的目标代码。
  2. Fat 二进制文件可能包含多个目标文件,因此包含不同架构(i386 和 x86_64、arm 和 arm64、 ETC。)

结构体

mach-o

解析

mach_o.h

mach_o.cpp

使用

  1. 上述解析代码,并没有写关于load_commands的部分
  2. 上述解析代码,包含了获取常规mach-o头和fat头的信息的功能
    1. 在封装时只封装了判断一个文件是不是可执行文件,像其他的cpu信息,架构信息等,也是可以获取

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2023-05-13
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享