iOS 逆向分析

532 阅读3分钟

本文概述 iOS 进行逆向分析的基本步骤和工具。

逆向分析一般分两种场景:

  1. 通过注入代码,在运行时进行分析,如 trace 看方法调用、Lookin 看视图结构、DoraemonKit 看文件和存储等
  2. 直接分析砸壳后的 ipa 二进制文件,推测代码逻辑和信息

一、代码注入

image.png

注入代码分析的整体流程如上图,下面对每个步骤做展开说明。

1、越狱并安装常用工具

不同硬件、不同系统有着不同的漏洞类型,故有不同的针对性越狱方法。

可以参考 IOS苹果系统越狱教程-教程分享-巨魔论坛 中的概览,有个大致的了解。

我是针对 iPhone10,3_16.7.10 使用了 palera1n 越狱。

具体操作可参考 一键越狱iOS 16.7.10版,安装Sub基板和Cydia管理器_哔哩哔哩_bilibili

越狱成功后通过 palera1n 可以安装 Sileo(包管理软件,安装为越狱系统提供的 app)。

image.png

Sileo 添加 havoc.app/ 软件源 通过 Sileo 可以添加 TrollHelper,安装巨魔商店 TrollStore(安装任意 ipa 到手机)。

image.png

通过 TrollStore 安装 TrollFools - Havoc Repo(为 app 注入动态库,更加方便)。

image.png

其中 TrollStore、TrollFools 非越狱设备也能安装,具体可参考 TrollStore 2 - Permanently Sideload Any IPAs For Free

其它辅助类工具推荐:

  1. NewTerm - 在手机上执行命令行,初始 SSH 配置可能需要 [Help] Can't SSH into my device : r/jailbreak
  2. ES文件浏览器 - 提供 wifi 传文件功能,方便传 ipa、动态库

2、砸壳包获取

通过网站直接下载

  1. Cracked iOS & Mac App Store Apps Free Download | AppCake
  2. ipa软件下载|ios软件下载

利用工具自行砸壳

  1. iOS逆向(11)-砸壳原理剖析,主动加载所有framework在平时的日常工作过程中,时常会有道友私聊我,问我能不能帮 - 掘金
  2. AloneMonkey/frida-ios-dump: pull decrypted ipa from jailbreak device

3、代码注入

目前采用的流程是生成需要注入的 framework。

如果产物有多个库,且某些库只支持静态库方式编译,可以通过创建一个动态库工程,将产物合并包裹为一个单独的动态库。

image.png

将 framework 通过 ES文件浏览器 传给手机,再通过越狱版本的 TrollFools 注入动态库。 如注入 LookinServer 后,可查看 app 视图结构实现。

image.png

亦可通过 sideloadly 注入 framework 导出 ipa。

再通过越狱版本的 TrollStore 安装 ipa。

像 Snapchat 这种包含 extension、watch 扩展的 app, 目前通过 IPAPatch、AltStore 重签名没有成功,无论是否 remove extension, 但通过越狱版本的 TrollStore 可以成功。

Sideloadly - iOS, Apple Silicon & TV Sideloading(集成了注入、安装、导出 ipa 功能)

类似工具:

  1. Naituw/IPAPatch: Patch iOS Apps, The Easy Way, Without Jailbreak.(开源实现)
  2. altstoreio/AltStore: AltStore is an alternative app store for non-jailbroken iOS devices.(利用苹果账号重签名安装)

二、代码分析

目前这块还没有深入研究

三、学习资料

一缕清风扬万里 的个人主页 - 文章 - 掘金