前言:最近因为工作需要,一直在研究iOS的逆向工程。说起来,这个方面涉及到的的知识面实在太广,所以想开一个系列,从基础知识到实战攻防,系统的总结一下最近的所思所学。
第一篇,先从一个基础知识开始:Mach-O文件。
说起Mach-O文件,很多开发人员应该不陌生。即使你没有听过Mach-O,但你也肯定知道exe文件是什么。每个操作系统都有自己的可执行文件,比如Linux下的ELF,Windows下的exe。而Mach-O,就是Mac系统上的可执行文件。比如,每个iOS开发几乎都接触过dsym,dsym就是一种Mach-O文件。
这里先介绍一个工具:MachOView,一个观察Mach-O文件的利器,我们之后的后多观察都是使用这个工具来进行。
构成
Mach-O 主要包括了Header、Load commands、Data(Segement和Section)等几个部分
用网上的一张图来描述下Mach-O的结构:

Header:

header是一些基础信息,比如魔数、CPU构架、文件类型等等
struct mach_header {
uint

本文是iOS逆向工程系列的第一篇,主要介绍Mach-O文件结构,包括Header、Load commands、segment和Section。Mach-O是Mac和iOS系统的可执行文件格式,MachOView是分析此类文件的工具。Header包含魔数、CPU类型、文件类型等信息,Load commands指示如何处理二进制数据,segment和Section则定义了文件的内存布局。Load commands中的LC_LOAD_DYLIB等命令揭示了库的依赖关系,暗示了修改Load commands可动态添加库。

2004

被折叠的 条评论
为什么被折叠?



