一、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、界面分析
2、代码分析,对 Mach-O
文件静态分析(也就是我们一行一行阅读别人的代码)
- 辅助:
MachOView
、class-dump
、Hopper Disassembler
、ida
等
3、动态调试分析,对运行中的 APP
进行代码调试
4、代码编写,注入代码到 APP
中,必要时还需要 重新签名
、打包ipa