当前位置: 首页 > article >正文

搭建iOS逆向开发环境 (下) - 越狱设备与高级工具配置

搭建iOS逆向开发环境 (下) - 越狱设备与高级工具配置

在上一篇文章中,我们介绍了iOS逆向工程的基础环境搭建和核心工具链的安装。正如预告的那样,本篇将继续深入探讨环境搭建的更高级部分,包括越狱设备的配置、远程连接工具、网络分析环境以及如何将这些工具整合成一个完整的工作流程。

为什么需要越狱设备?

在开始正式配置之前,让我们先理解为什么越狱设备在iOS逆向工程中如此重要:

  1. 文件系统完整访问:越狱后可以访问iOS的整个文件系统,包括应用沙盒和系统文件
  2. 代码注入能力:允许向运行中的应用注入代码,实现功能修改和动态分析
  3. 系统API无限制:绕过iOS的API限制,使用私有API和系统功能
  4. 特权工具运行:运行需要root权限的分析工具和调试器
  5. 绕过系统安全机制:暂时解除代码签名、沙盒等安全限制

虽然部分逆向分析工作可以在非越狱设备上完成,但越狱设备提供了无与伦比的灵活性和分析深度。

选择合适的设备和iOS版本

并非所有iOS设备和版本都适合用于逆向工程,以下是选择合适设备的建议:

1. 设备型号选择

设备类型推荐型号优势劣势
iPhoneiPhone 8/X/XR系列性能足够,且有稳定越狱方案较新设备功能多但越狱选择少
iPadiPad (第6/7代)屏幕大,方便操作和查看代码部分工具不完全兼容
iPod Touch第7代体积小,价格相对较低性能较弱,屏幕小

建议:优先选择iPhone 8或iPhone X,它们既有足够的性能,又有相对稳定的越狱解决方案。

2. iOS版本选择

选择iOS版本时,需要在"新功能支持"和"越狱稳定性"之间取得平衡:

iOS版本范围越狱工具稳定性特点
iOS 14.0 - 14.3unc0ver, Taurine极高功能丰富,工具支持好
iOS 14.4 - 14.8checkra1n (A11及以下)部分设备支持,需要计算机
iOS 15.0 - 15.1.1unc0ver, Taurine部分功能受限
iOS 15.4+有限支持不建议用于逆向学习

最佳选择:iOS 14.3是目前逆向工程的最佳选择,既有良好的工具支持,又有稳定的越狱方案。

注意:iOS版本与越狱工具的兼容性经常变化,请在进行越狱前检查最新信息。

设备越狱步骤详解

下面我们将详细介绍如何对iOS设备进行越狱。以iOS 14.3上的iPhone X为例,使用unc0ver越狱工具:

1. 准备工作

备份设备

  1. 连接设备到电脑
  2. 打开Finder(macOS Catalina及以上)或iTunes(较早版本)
  3. 选择完整备份,并勾选"加密本地备份"选项
  4. 等待备份完成

其他准备

  • 确保设备电量在50%以上
  • 关闭"查找我的iPhone"
  • 关闭密码锁定

2. 安装unc0ver

方法一:AltStore安装(推荐)

  1. 在Mac上下载并安装AltServer:https://altstore.io/
  2. 启动AltServer(它会出现在菜单栏中)
  3. 将iPhone连接到Mac,并在iTunes/Finder中信任该设备
  4. 在AltServer菜单中选择"Install AltStore",然后选择你的设备
  5. 输入Apple ID和密码(建议使用非主力账号)
  6. 等待AltStore安装完成
  7. 在iOS设备上,前往设置 -> 通用 -> 设备管理,信任开发者证书
  8. 从unc0ver官网(https://unc0ver.dev/)下载最新版本的unc0ver IPA
  9. 使用AltStore打开unc0ver IPA文件进行安装

方法二:Xcode和开发者账号(备选)

  1. 下载unc0ver IPA
  2. 使用工具如iOS App Signer重新签名IPA
  3. 通过Xcode安装到设备上

3. 执行越狱

  1. 在设备上打开unc0ver应用
  2. 点击"设置"按钮,确保以下选项已启用:
    • Load Tweaks
    • Disable Auto Updates
    • Disable Revokes
  3. 点击"完成"返回主界面
  4. 点击"越狱"按钮
  5. 等待越狱过程完成,设备会自动重启
  6. 重启后,你会看到Cydia应用安装在桌面上

4. 基础设置

安装基础软件源

  1. 打开Cydia
  2. 点击"软件源" -> “编辑” -> “添加”
  3. 添加以下常用源:
    https://build.frida.re    // Frida官方源
    https://repo.chariz.io    // 常用插件
    https://repo.packix.com   // 实用工具
    https://apt.bingner.com   // 系统工具
    

安装必备工具

  1. 搜索并安装OpenSSH(用于远程连接)
  2. 安装Filza File Manager(文件管理器)
  3. 安装NewTerm(终端)

修改默认密码

  1. 打开NewTerm或通过SSH连接设备
  2. 输入命令:passwd(修改root用户密码)
  3. 输入命令:passwd mobile(修改mobile用户密码)

默认情况下,iOS设备的root和mobile用户密码都是"alpine",出于安全考虑,必须修改。

设备连接与远程访问

设置远程访问是进行高效逆向工程的关键步骤,它允许我们从电脑直接操作iOS设备:

1. USB连接设置

USB是最稳定的连接方式,特别适合大文件传输和调试:

安装usbmuxd

brew install usbmuxd

通过USB使用SSH连接

# 端口转发,将设备的22端口映射到本地2222端口
iproxy 2222 22

# 在新终端中连接
ssh root@localhost -p 2222
# 默认密码是alpine,如果已修改则使用新密码

传输文件

# 从设备复制到电脑
scp -P 2222 root@localhost:/path/on/device/file.txt /path/on/mac/

# 从电脑复制到设备
scp -P 2222 /path/on/mac/file.txt root@localhost:/path/on/device/

2. 无线连接设置

无线连接提供了更大的灵活性,但可能受网络环境影响:

设置Wi-Fi连接

  1. 确保设备和电脑在同一网络
  2. 在设备上查看IP地址:设置 -> Wi-Fi -> 点击网络名称旁的(i)图标
  3. 通过SSH连接:
    ssh root@<设备IP地址>
    

保持SSH连接稳定

# 在~/.ssh/config中添加以下配置
Host ios-device
    HostName <设备IP地址>
    User root
    ServerAliveInterval 30
    ServerAliveCountMax 3

3. USB与Wi-Fi互转

有时你可能需要在USB和Wi-Fi连接间切换:

从USB切换到Wi-Fi

  1. 通过USB连接设备并SSH登录
  2. 启动SSH服务:
    launchctl load /Library/LaunchDaemons/com.openssh.sshd.plist
    
  3. 断开USB,通过Wi-Fi连接

从Wi-Fi切换到USB
直接使用iproxy和USB连接即可

高级分析工具安装与配置

除了基础工具外,以下高级工具能大幅提升逆向分析效率:

1. Cydia Substrate/Substitute

Cydia Substrate或Substitute是iOS上的代码注入框架,是开发Tweak的基础:

安装方法

  • 在大多数越狱工具中已预装
  • 如需手动安装,在Cydia中搜索"Cydia Substrate"或"Substitute"

基础配置

  • Substrate默认已配置完成,无需额外设置
  • 安装PreferenceLoader以支持插件设置功能

2. Filza文件管理器

Filza是iOS上最强大的文件管理器,支持查看和编辑大多数文件类型:

增强配置

  1. 在Filza设置中启用"显示隐藏文件"
  2. 启用"应用程序管理器"功能
  3. 设置文本编辑器语法高亮

使用技巧

  • 长按应用图标->点击"i"按钮查看应用信息和目录
  • 进入/var/containers/Bundle/Application/查看应用包
  • 进入/var/mobile/Containers/Data/Application/查看应用数据

3. Cycript

Cycript是一个允许在运行时探索和修改Objective-C应用的工具:

安装方法

# 在Cydia中搜索并安装Cycript
# 或通过命令行安装
apt-get update
apt-get install cycript

基本用法

# 附加到进程
cycript -p <进程名或PID>

# 查看应用中的视图层次结构
cy# UIApp.keyWindow.recursiveDescription().toString()

# 查看类的所有方法
cy# Object.keys(SomeClass.prototype)

# 调用方法
cy# [SomeObject someMethod:argument]

实用脚本:创建~/.cycript/目录,添加自定义脚本:

// 文件:~/.cycript/common.cy
function printMethods(className) {
    var count = 0;
    var methods = [];
    for(var member in eval(className).prototype) {
        methods.push(member);
        count++;
    }
    methods.sort();
    for(var i = 0; i < methods.length; i++) {
        console.log(methods[i]);
    }
    return count + " methods";
}

// 在cycript中加载
cy# @import common

4. Reveal

Reveal是一个可视化调试工具,能够实时查看iOS应用的视图层次:

安装步骤

  1. 在Mac上下载并安装Reveal:https://revealapp.com/
  2. 在Cydia中搜索并安装"Reveal Loader"
  3. 在设置中启用目标应用的Reveal支持
  4. 在Mac上启动Reveal并连接到设备

使用方法

  1. 在Reveal中,点击"File" -> “Connect to…”
  2. 选择你的设备和应用
  3. 成功连接后,可以浏览应用的完整视图层次结构
  4. 选择任意元素查看详细属性
  5. 可实时修改视图属性并观察效果

5. 网络分析工具

网络分析工具对于理解应用的通信机制非常重要:

5.1 Charles Proxy

Charles是一款功能强大的HTTP代理,可以监控和修改网络请求:

安装步骤

  1. 在Mac上下载并安装Charles:https://www.charlesproxy.com/
  2. 启动Charles,允许它自动配置网络设置
  3. 在设备上设置代理:
    a. 设置 -> Wi-Fi -> 点击连接的网络
    b. 滚动到底部,点击"配置代理"
    c. 选择"手动",输入Mac的IP地址和Charles的端口(默认8888)
  4. 在设备访问任何网站时,Charles会弹出提示,点击"Allow"

HTTPS解密配置

  1. 在Charles中,选择"Help" -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device”
  2. 按照提示在设备上访问chls.pro/ssl安装证书
  3. 在设备上,前往设置 -> 通用 -> 关于本机 -> 证书信任设置,启用Charles证书
  4. 在Charles中,选择"Proxy" -> “SSL Proxying Settings”,添加以下配置:
    • Host: *
    • Port: 443
5.2 SSL Kill Switch

某些应用使用SSL Pinning技术防止HTTPS流量被解密。SSL Kill Switch可以绕过这一机制:

安装方法

  1. 在Cydia中搜索并安装"SSL Kill Switch 2"
  2. 重启设备或重启目标应用
  3. 现在Charles应该能够解密之前无法解密的流量
5.3 HTTP Toolkit (替代方案)

如果你需要更现代的替代方案,可以考虑HTTP Toolkit:

配置步骤

  1. 在Mac上安装HTTP Toolkit:https://httptoolkit.tech/
  2. 按照应用内的指南设置设备代理
  3. 与Charles类似,安装并信任证书

6. BundleIDs查看工具

应用的Bundle ID是逆向工程中的重要标识,以下是查看方式:

从越狱设备查看

# 列出所有已安装应用的Bundle ID
find /var/containers/Bundle/Application -name Info.plist -exec plutil -p {} \; | grep CFBundleIdentifier

使用AppList
在Cydia中安装AppList,然后从设置中查看所有应用的Bundle ID。

7. Theos - Tweak开发框架

Theos是最流行的iOS Tweak开发框架,支持直接在设备上或在电脑上开发:

在Mac上安装Theos

# 安装依赖
brew install dpkg ldid

# 克隆Theos仓库
git clone --recursive https://github.com/theos/theos.git $THEOS

# 设置环境变量(添加到~/.zshrc或~/.bash_profile)
echo 'export THEOS=~/theos' >> ~/.zshrc
echo 'export PATH=$THEOS/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

创建第一个Tweak项目

# 创建新项目
nic.pl  # 选择iphone/tweak

# 编辑Tweak.x文件
# 编辑control文件和Makefile

# 编译
make

# 安装到设备
make package install THEOS_DEVICE_IP=<设备IP地址>

我们会在后续专门的Tweak开发章节详细介绍Theos的使用方法。

应用获取与分析准备

要进行逆向分析,我们首先需要从设备上提取应用:

1. 应用下载与安装

从App Store安装
直接在设备上从App Store下载并安装应用。

使用App Store++降级应用(可选):

  1. 在Cydia中搜索并安装"App Store++"
  2. 在App Store中长按应用的"获取"或"更新"按钮
  3. 选择"升级/降级",然后选择需要的版本

2. 应用解密(砸壳)

App Store的应用都经过加密,需要解密后才能分析:

2.1 使用frida-ios-dump

安装frida-ios-dump

# 确保已安装Frida
pip3 install frida-tools

# 克隆frida-ios-dump
git clone https://github.com/AloneMonkey/frida-ios-dump.git
cd frida-ios-dump
pip3 install -r requirements.txt

在设备上安装Frida

  1. 在Cydia中添加源:https://build.frida.re
  2. 安装Frida

使用frida-ios-dump解密应用

# 列出设备上的应用
python3 dump.py -l

# 解密特定应用
python3 dump.py <应用名称或Bundle ID>
2.2 使用bfdecrypt(替代方法)

如果frida-ios-dump不适用,可以尝试bfdecrypt:

  1. 在Cydia中搜索并安装"bfdecrypt"
  2. 在设置中启用目标应用的bfdecrypt
  3. 打开应用,等待几秒后退出
  4. 解密后的IPA文件会保存在/var/mobile/Containers/Data/Application/[UUID]/Documents/

3. 应用传输到Mac

将解密后的应用传到Mac进行分析:

# 通过SCP传输文件
scp -P 2222 root@localhost:/path/to/decrypted.ipa ~/iOSRE/dumps/

# 或使用Filza分享功能,通过AirDrop发送

4. 应用分析准备

  1. 解压IPA文件

    unzip decrypted.ipa -d app_analysis
    
  2. 提取头文件

    class-dump -H app_analysis/Payload/App.app/App -o app_analysis/headers
    
  3. 查看二进制文件

    otool -L app_analysis/Payload/App.app/App  # 查看依赖库
    otool -h app_analysis/Payload/App.app/App  # 查看Mach-O头信息
    
  4. 导入到IDA/Hopper/Ghidra
    将解密的二进制文件导入你选择的反汇编工具。

完整工作流程示例

下面通过一个完整示例,展示iOS逆向工程的基本工作流程:

示例:分析一个简单的计算器应用

  1. 获取和解密应用

    # 使用frida-ios-dump解密
    python3 dump.py "Calculator"
    
  2. 解压并提取头文件

    unzip Calculator.ipa -d calculator_analysis
    class-dump -H calculator_analysis/Payload/Calculator.app/Calculator -o calculator_analysis/headers
    
  3. 查找关键类和方法

    # 搜索可能的计算相关类
    grep -r "calculate" calculator_analysis/headers
    grep -r "result" calculator_analysis/headers
    
  4. 使用Hopper分析二进制
    加载解密的二进制文件,搜索关键字符串和函数。

  5. 使用Frida进行动态分析
    创建以下Frida脚本(calculator_hook.js):

    // 假设CalculationManager是处理计算的类
    Interceptor.attach(ObjC.classes.CalculationManager["- calculateResult:withOperator:"].implementation, {
      onEnter: function(args) {
        var firstNumber = new ObjC.Object(args[2]).doubleValue();
        var operator = new ObjC.Object(args[3]).toString();
        console.log("[+] 计算: " + firstNumber + " " + operator + " ...");
        this.firstNumber = firstNumber;
        this.operator = operator;
      },
      onLeave: function(retval) {
        var result = new ObjC.Object(retval).doubleValue();
        console.log("[+] 结果: " + this.firstNumber + " " + this.operator + " ... = " + result);
        
        // 修改结果(例如,总是加1)
        if (result != 42) {
          var modifiedResult = result + 1;
          console.log("[*] 修改结果为: " + modifiedResult);
          retval.replace(ObjC.classes.NSNumber.numberWithDouble_(modifiedResult));
        }
      }
    });
    
  6. 注入并测试

    frida -U -l calculator_hook.js Calculator
    
  7. 创建Tweak(可选)
    使用Theos创建永久修改:

    nic.pl  # 创建新的Tweak项目
    

    编辑Tweak.x:

    %hook CalculationManager
    - (id)calculateResult:(id)arg1 withOperator:(id)arg2 {
        id originalResult = %orig;
        double value = [originalResult doubleValue];
        return [NSNumber numberWithDouble:(value + 1)];
    }
    %end
    
  8. 安装Tweak

    make package install
    

这个完整流程涵盖了从应用获取、静态分析、动态修改到创建永久Tweak的整个过程。

环境维护与更新

维护一个稳定且最新的逆向工程环境是长期工作的关键:

1. 定期更新工具

# 更新Homebrew和工具
brew update
brew upgrade

# 更新Python包
pip3 list --outdated
pip3 install --upgrade frida frida-tools

# 更新Theos
cd $THEOS
git pull --rebase

2. 越狱稳定性维护

  • 避免安装不兼容或不稳定的插件
  • 定期重启设备保持系统稳定
  • 谨慎对待越狱工具更新,通常等待社区反馈后再更新

3. 创建环境快照

对于虚拟机环境,建议定期创建快照,以便在出现问题时快速恢复:

# 对于VMware或VirtualBox环境
# 在稳定配置后创建快照

对于物理机器,可以考虑使用Time Machine备份。

4. 文档和笔记管理

建立一个系统化的笔记系统记录:

  • 工具安装和配置细节
  • 常用命令和参数
  • 问题解决方案
  • 项目分析记录

推荐使用工具如Notion、Obsidian或简单的Markdown文件管理这些知识。

提高工作效率的脚本和工具

以下是一些提高逆向工程效率的自定义脚本和工具:

1. 应用快速解密脚本

#!/bin/bash
# 文件名: dumper.sh
# 使用方法: ./dumper.sh <应用名称或Bundle ID>

if [ -z "$1" ]; then
    echo "请提供应用名称或Bundle ID"
    exit 1
fi

echo "正在解密应用: $1"
cd ~/iOSRE/tools/frida-ios-dump
python3 dump.py "$1"

echo "正在解压IPA..."
mkdir -p ~/iOSRE/dumps/"$1"
unzip -o *.ipa -d ~/iOSRE/dumps/"$1"

echo "正在提取头文件..."
class-dump -H ~/iOSRE/dumps/"$1"/Payload/*.app/* -o ~/iOSRE/dumps/"$1"/headers

echo "完成! 文件保存在: ~/iOSRE/dumps/$1"

2. 快速查找特定API使用

#!/bin/bash
# 文件名: find_api.sh
# 使用方法: ./find_api.sh <API名称> <应用目录>

if [ -z "$1" ] || [ -z "$2" ]; then
    echo "使用方法: $0 <API名称> <应用目录>"
    exit 1
fi

echo "搜索API: $1$2"
echo "头文件中的引用:"
grep -r "$1" "$2/headers" --include="*.h"

echo "二进制字符串中的引用:"
strings "$2/Payload/"*.app/* | grep "$1"

3. 批量更新所有工具

#!/bin/bash
# 文件名: update_tools.sh

echo "===== 更新环境工具 ====="

echo "1. 更新Homebrew..."
brew update
brew upgrade

echo "2. 更新Python包..."
pip3 list --outdated | tail -n +3 | awk '{print $1}' | xargs -n1 pip3 install --upgrade

echo "3. 更新Theos..."
cd $THEOS
git pull --rebase

echo "4. 更新自定义工具..."
cd ~/iOSRE/tools/frida-ios-dump
git pull

echo "===== 更新完成 ====="

排错与常见问题解决

在环境搭建和使用过程中,可能会遇到各种问题,这里提供一些常见问题的解决方法:

1. 设备连接问题

问题:无法通过SSH连接到设备

解决方案

  • 确认设备和电脑在同一网络
  • 检查设备IP地址是否正确
  • 确认OpenSSH已安装并启动
  • 尝试重启设备
  • 如使用USB连接,检查iproxy是否正确运行

2. 应用解密问题

问题:frida-ios-dump失败或崩溃

解决方案

  • 确保Frida在设备上运行:frida-ps -U应能列出进程
  • 检查设备和电脑上Frida版本是否匹配
  • 尝试使用bfdecrypt作为替代
  • 对于特定应用可能需要修改脚本绕过保护

3. 工具兼容性问题

问题:某些工具报错或无法正常工作

解决方案

  • 检查工具是否支持当前macOS版本
  • 尝试安装旧版本工具:brew install --version=X.Y tool_name
  • 搜索社区提供的补丁或替代方案
  • 考虑使用虚拟机安装特定版本的macOS

4. 越狱稳定性问题

问题:设备频繁崩溃或重启

解决方案

  • 卸载可能不兼容的插件
  • 在越狱应用中禁用部分功能
  • 在无法解决的情况下,考虑恢复设备并降级到更稳定的iOS版本

总结与下一步

通过本文的详细介绍,我们已经完成了iOS逆向开发环境的全面搭建,包括:

  • 越狱设备的选择与配置
  • 远程连接工具的安装与使用
  • 高级分析工具的配置与调试
  • 应用获取与解密的完整流程
  • 实际工作流程演示和脚本工具

至此,我们已经拥有了一个完整、强大的iOS逆向工程环境,为后续的实际分析和修改工作打下了坚实基础。记住,工具只是手段,关键是掌握使用这些工具的方法和原理。

一个好的逆向工程师不仅需要了解各种工具的使用,还需要对iOS系统有深入理解,这样才能在分析过程中知道该查找什么,该如何修改。我们在前两篇文章中介绍的iOS系统架构知识,与本文和上一篇介绍的工具环境相结合,已经为你提供了开始iOS逆向工程所需的基本条件。

在下一篇文章中,我们将开始介绍iOS基础开发知识速览,包括Objective-C/Swift基础回顾、iOS应用生命周期以及UI与系统API调用机制等内容。这些基础知识将帮助我们更好地理解iOS应用的工作原理,为后续的逆向分析奠定基础。

如果你在环境搭建过程中遇到任何问题,或者对特定工具有更深入的疑问,欢迎在评论区留言交流!


作者:自学不成才
本文为iOS逆向工程专栏的第4篇文章,版权所有,未经许可请勿转载。


http://www.kler.cn/a/570021.html

相关文章:

  • 蓝桥杯4T平台(串口控制LD状态)
  • 【Java项目】基于vue的地方美食分享系统
  • Spring配置文件
  • iPhone 镜像 连接错误
  • 2024 ChatGPT大模型技术场景与商业应用视频精讲合集(45课).zip
  • 51单片机课综合项目
  • 京准电钟:NTP校时服务器于安防监控系统应用方案
  • K8S学习之基础五:k8s中node节点亲和性
  • 创建者——建造者模式
  • 直流减速电机控制实验:实验介绍
  • 机器学习数学通关指南
  • AI赋能企业协作4-NL2Sql技术路线
  • 【uniapp】离线打包uniapp为apk详细步骤
  • 碰一碰矩阵发视频源码:从 NFC 触发到 AI 矩阵剪辑
  • Excel文件中物件PPT文档如何保存到本地
  • MindIE 长文本推理
  • pat甲级1002 A+B for Polynomials
  • netty 与 websocket
  • JavaScript阻塞
  • eMMC存储器详解(存储区域结构、EXT_CSD[179]、各分区介绍、主要引脚、命令格式与类型等)