一、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
- 辅助:后续更新