本文概述 iOS 进行逆向分析的基本步骤和工具。
逆向分析一般分两种场景:
- 通过注入代码,在运行时进行分析,如 trace 看方法调用、Lookin 看视图结构、DoraemonKit 看文件和存储等
- 直接分析砸壳后的 ipa 二进制文件,推测代码逻辑和信息
一、代码注入
注入代码分析的整体流程如上图,下面对每个步骤做展开说明。
1、越狱并安装常用工具
不同硬件、不同系统有着不同的漏洞类型,故有不同的针对性越狱方法。
可以参考 IOS苹果系统越狱教程-教程分享-巨魔论坛 中的概览,有个大致的了解。
我是针对 iPhone10,3_16.7.10 使用了 palera1n 越狱。
具体操作可参考 一键越狱iOS 16.7.10版,安装Sub基板和Cydia管理器_哔哩哔哩_bilibili。
越狱成功后通过 palera1n 可以安装 Sileo(包管理软件,安装为越狱系统提供的 app)。
Sileo 添加 havoc.app/ 软件源 通过 Sileo 可以添加 TrollHelper,安装巨魔商店 TrollStore(安装任意 ipa 到手机)。
通过 TrollStore 安装 TrollFools - Havoc Repo(为 app 注入动态库,更加方便)。
其中 TrollStore、TrollFools 非越狱设备也能安装,具体可参考 TrollStore 2 - Permanently Sideload Any IPAs For Free。
其它辅助类工具推荐:
- NewTerm - 在手机上执行命令行,初始 SSH 配置可能需要 [Help] Can't SSH into my device : r/jailbreak
- ES文件浏览器 - 提供 wifi 传文件功能,方便传 ipa、动态库
2、砸壳包获取
通过网站直接下载
利用工具自行砸壳
- iOS逆向(11)-砸壳原理剖析,主动加载所有framework在平时的日常工作过程中,时常会有道友私聊我,问我能不能帮 - 掘金
- AloneMonkey/frida-ios-dump: pull decrypted ipa from jailbreak device
3、代码注入
目前采用的流程是生成需要注入的 framework。
如果产物有多个库,且某些库只支持静态库方式编译,可以通过创建一个动态库工程,将产物合并包裹为一个单独的动态库。
将 framework 通过 ES文件浏览器 传给手机,再通过越狱版本的 TrollFools 注入动态库。 如注入 LookinServer 后,可查看 app 视图结构实现。
亦可通过 sideloadly 注入 framework 导出 ipa。
再通过越狱版本的 TrollStore 安装 ipa。
像 Snapchat 这种包含 extension、watch 扩展的 app, 目前通过 IPAPatch、AltStore 重签名没有成功,无论是否 remove extension, 但通过越狱版本的 TrollStore 可以成功。
Sideloadly - iOS, Apple Silicon & TV Sideloading(集成了注入、安装、导出 ipa 功能)
类似工具:
- Naituw/IPAPatch: Patch iOS Apps, The Easy Way, Without Jailbreak.(开源实现)
- altstoreio/AltStore: AltStore is an alternative app store for non-jailbroken iOS devices.(利用苹果账号重签名安装)
二、代码分析
目前这块还没有深入研究
- fangshufeng/MachOView: 分析Macho必备工具 Hopper(反汇编器)
- iOS逆向(5)-不知MachO怎敢说自己懂DYLD窥一斑而知全豹,从这些许内容其实已经可以了解到MachO在我们APP - 掘金
- iOS 逆向编程(二十二)Hopper Disassmbler 安装使用Hopper Disassmbler 能够将 M - 掘金