第1章:iOS逆向环境搭建
说实话,做iOS逆向这么多年,我见过太多人卡在环境搭建这一步。工具装不上、越狱失败、SSH连不上……各种问题能把人搞崩溃。今天我就把这一整套流程掰开揉碎讲清楚,你跟着走一遍,基本不会出问题。
核心要点:逆向环境搭建是后续所有工作的基础。一个稳定、干净的环境,能让你少踩80%的坑。
1.1 MacOS开发环境配置
我个人习惯用Mac mini或者MacBook Pro做逆向机。为什么?因为Xcode、Theos这些工具在macOS上最顺手。你想想看,要是用Windows,光折腾虚拟机就够你喝一壶的。
必备工具清单:
- Xcode —— 从App Store下载,至少12.x以上版本
- Homebrew —— macOS的包管理器,装啥都靠它
- Python3 —— 很多脚本依赖它
- Git —— 版本控制,也用来拉取工具源码
安装Homebrew很简单,一行命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
装完之后,用brew安装其他依赖:
brew install python3 git wget
小技巧:我建议你装个iTerm2替代系统自带的终端。分屏、配色、快捷键都强太多,逆向时经常要开多个窗口,iTerm2能让你效率翻倍。
1.2 越狱设备选择与越狱工具
设备选择这块,我踩过不少坑。先说结论:
| 设备类型 | 推荐型号 | 越狱工具 | 注意事项 |
|---|---|---|---|
| iPhone 6s ~ iPhone X | iPhone 7 / 8 | Checkra1n | A11及以下芯片,硬件漏洞,稳定 |
| iPhone Xs ~ iPhone 14 | iPhone 11 / 12 | unc0ver / Taurine | 软件漏洞,依赖系统版本 |
| iPad | iPad mini 5 / iPad Pro | Checkra1n / unc0ver | 看芯片型号 |
我个人最推荐iPhone 7或8,搭配Checkra1n。为什么?因为Checkra1n利用的是硬件漏洞(checkm8),苹果没法通过系统更新修复。你想想看,这意味着什么?意味着你随便升级iOS,照样能越狱。
我曾经遇到过一台iPhone Xs,系统是iOS 14.3,用unc0ver越狱。结果某天手滑点了系统更新,直接升到14.8,越狱失效,而且当时还没有对应的越狱工具……那叫一个郁闷。从那以后,我主力机就换成了iPhone 7。
Checkra1n使用步骤
- 从官网下载Checkra1n(注意:只支持macOS和Linux)
- 将iPhone进入DFU模式:按音量+、音量-、长按电源键10秒,再同时按音量-和电源键5秒
- 打开Checkra1n,点击"Start"
- 按照屏幕提示操作,等待进度条走完
- 越狱成功后,手机上会出现Checkra1n图标
注意:Checkra1n越狱后,每次重启手机都需要重新运行Checkra1n。这不是bug,是硬件漏洞越狱的特性。所以别慌,重启后重新跑一遍就行。
1.3 SSH连接与文件传输
越狱之后第一件事是什么?装OpenSSH。没有SSH,你没法远程操作手机,那逆向就无从谈起。
在Cydia或Sileo中搜索"OpenSSH",安装即可。默认密码是alpine,我建议你第一时间改掉:
ssh root@你的手机IP
# 输入密码 alpine
passwd
# 输入新密码
文件传输我常用两种方式:
- scp —— 简单直接,传单个文件很方便
- Filza —— 手机端的文件管理器,支持Wi-Fi传输
举个例子,把电脑上的一个二进制文件传到手机上:
scp ./my_binary root@192.168.1.100:/var/root/
避坑指南:我曾经因为Wi-Fi网络不稳定,传大文件时经常断连。后来改用USB连接,用iproxy做端口转发,稳得很。命令是iproxy 2222 22,然后SSH连localhost:2222就行。
1.4 OpenSSH与Cycript安装
OpenSSH装好之后,你就能远程操控手机了。但光有SSH还不够,我们还需要Cycript——一个强大的运行时调试工具。
Cycript的安装方式:
# 通过Cydia安装
# 搜索"Cycript",安装即可
# 或者手动安装
wget https://cydia.saurik.com/debs/cycript_0.9.594.deb
dpkg -i cycript_0.9.594.deb
装好后,在SSH里输入cycript就能进入交互模式。你可以用它来查看UI层级、调用Objective-C方法、甚至修改运行时的变量值。
举个例子,查看当前最顶层的ViewController:
cycript -p SpringBoard
UIApp.keyWindow.rootViewController
嗯,这里要注意:Cycript依赖MobileSubstrate,所以必须先装Cydia Substrate。不然你会遇到"dyld: Library not loaded"的错误。
1.5 Theos工具链安装与配置
Theos是iOS逆向开发的标配。它帮你自动生成tweak项目模板、编译、打包、安装,一条龙服务。
安装Theos:
# 设置环境变量
export THEOS=/opt/theos
sudo mkdir -p $THEOS
sudo chown $(whoami) $THEOS
# 克隆Theos
git clone --recursive https://github.com/theos/theos.git $THEOS
# 安装ldid(签名工具)
brew install ldid
配置环境变量,建议写到~/.zshrc或~/.bash_profile里:
export THEOS=/opt/theos
export PATH=$THEOS/bin:$PATH
验证安装:
nic.pl
# 如果看到模板列表,说明安装成功
核心逻辑:Theos + Cycript + SSH,这三样东西构成了iOS逆向的"铁三角"。SSH负责连接,Cycript负责动态分析,Theos负责开发tweak。缺一不可。
下面这张图能帮你理清整个环境搭建的知识体系:
好了,环境搭建这部分就讲到这里。你按照上面的步骤走一遍,基本就能把iOS逆向的"铁三角"搭起来。记住,环境越干净,后面调试越省心。别像我当年一样,图省事跳过某些步骤,结果后面花了两倍时间排查问题。
公众号:蓝海资料掘金营,微信deep3321