MachOView使用

MachOView使用,第1张

一、什么是MachO文件?

1.Mach-O其实是Mach Object文件格式的缩写,它是Mac以及iOS上一种用于可执行文件、目标代码、动态库的文件格式,类似于Windows上面的PE格式(Portable Executable),linux上的elf格式(Executable and Link Format)。

2.它是一种用于可执行文件、目标代码、动态库的文件格式,作为.out格式的替代,MachO提供了更强的扩展性。

二、Mach-O文件格式

目标文件.o

库文件:.a .dylib .Framework

可执行文件

dyld(动态链接器)

.dsym(符号表:Relese环境运行生成)

三、Mach-O格式

Mach-O是一个以数据块分组的二进制字节流,这些数据块包含元信息,比如字节顺序、CPU类型、数据块大小等等。
典型的Mach-O文件包含三个区域:
1.Header:保存Mach-O的一些基本信息,包括平台、文件类型、指令数、指令总大小,dyld标记Flags等等。
2.Load Commands:紧跟Header,加载Mach-O文件时会使用这部分数据确定内存分布,对系统内核加载器和动态连接器起指导作用。
3.Data:每个segment的具体数据保存在这里,包含具体的代码、数据等等

 

使用 MachOView 打开会看到通用二进制文件由 Fat Header 和可执行文件组成(可执行文件是由 Header 、 Load commands 和 Data 组成);

 

1.Header部分

Header部分(包含该二进制文件的一般信息):字节顺序、架构类型、加载指令的数量等。使得可以快速确认一些信息,比如当前文件用于32位还是64位,对应处理器是什么,文件类型是什么。

2.load commands部分

load commands 是一张包括区域的位置、符号表、动态符号表等内容的表。它详细保存着加载指令的内容,告诉链接器如何去加载这个 Mach-O 文件。通过查看内存地址发现,在内存中 load commands 是紧跟在 header 之后的;

部分字段说明:

 

3.data部分

data 是MachO文件中最大的部分,其中 _TEXT段 、 _DATA段 能给到很多信息。load commands 和 data 之间还留有不少空间,给我们留下了注入代码的冲破口

_TEXT段名称作用
_text主程序代码
_stubs、_stub_helper动态链接
_objc_methodname方法名称
_objc_classname类名称
_objc_methtype方法类型
_cstring静态字符串常量

_DATA段名称作用
_got=Non-Lazy Symbol Pointers非懒加载符号表
_la_symbol_ptr => Lazy Symbol Pointers懒加载符号表
_objc_classlist方法名称
四、MachoView 1.MachoView安装

点击链接下载:

2.MachoView使用

打开MachoView,点击左上角File 选中Open选择可执行文件

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/990578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存