一、Mach-O 简介
Mach-O是一种文件格式,是Mac上可执行文件的格式,类似于Windows上的PE格式(Portable Executable ),Linux上的elf格式(Executable and Linking Format)。我们编写的C、C++、Swift、OC最终编译链接生成Mach-O可执行文件,更详细的介绍自行百度。- 通常,在我们开发完成之后,就会打包发布,在我们打出的包里面有这样一个
应用程序包,ipa包解压之后里面也会有这样一个文件,我们也可以通过这个应用程序包生成一个ipa包: - 这个
应用程序包里面,就有我们整个项目的各种资源文件、源码编译之后的执行文件等等,我们可以通过ipa包解压来得到,或者通过Xcode编译得到Products -> Jailbreak.app里面。 - 像我们平常的
.xib会被编译成.nib存放到这个应用程序包里面,info.plist也会在这个应用程序包里面,但是就是找不到我们的代码,因为代码被编译成Mach-O格式的可执行文件了,也就是下面这个: 应用程序包怎么生成ipa?
随便新建一个文件夹,将应用程序包放进去,然后压缩成.zip,再将.zip改成.ipa就完成了,得到了一个ipa包。
二、Mach-O 逆向 APP 的思路
1、界面分析
- 辅助:
Cycript、Reveal
2、代码分析,对 Mach-O 文件静态分析(也就是我们一行一行阅读别人的代码)
- 辅助:
MachOView、class-dump、Hopper Disassembler、ida等
3、动态调试分析,对运行中的 APP 进行代码调试
- 辅助:
debugserver、LLDB
4、代码编写,注入代码到 APP 中,必要时还需要 重新签名、打包ipa
- 辅助:后续更新



