iOS 逆向编程(十九)Mach-O 入门了解(如何通过 Mach-O 逆向 APP 思路)

624 阅读2分钟

一、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、界面分析

  • 辅助:CycriptReveal

2、代码分析,对 Mach-O 文件静态分析(也就是我们一行一行阅读别人的代码)

  • 辅助:MachOViewclass-dumpHopper Disassemblerida

3、动态调试分析,对运行中的 APP 进行代码调试

  • 辅助:debugserverLLDB

4、代码编写,注入代码到 APP 中,必要时还需要 重新签名打包ipa

  • 辅助:后续更新