iOS应用手动脱壳砸壳教程

发布于:2025-03-05 ⋅ 阅读:(16) ⋅ 点赞:(0)

iOS应用手动脱壳教程

背景与技术挑战

现代iOS应用通常采用多层防护机制,使得传统脱壳工具难以奏效。这些保护措施包括:

  • 代码加密:应用二进制文件的TEXT段使用FairPlay DRM加密
  • 越狱检测:检测设备是否越狱,在越狱环境下触发防御措施
  • 代理检测:识别网络代理,防止中间人分析
  • 反调试机制:检测调试器附加状态
  • Frida检测:识别动态插桩框架

当常规工具如Clutch、dumpdecrypted、frida-ios-dump等失效时,需采用手动脱壳方法。本教程详细介绍了在这种复杂环境下提取iOS应用未加密二进制文件的完整流程。

环境准备

必备条件

  • 已越狱的iOS设备(建议使用checkra1n或unc0ver工具)
  • macOS计算机(用于分析和调试)
  • 设备与计算机在同一网络环境
  • SSH连接到iOS设备(默认密码:alpine
  • 目标应用的合法副本

工具列表

工具名称 用途 安装方法
ipatool 从App Store下载IPA文件 brew tap majd/repo && brew install ipatool
otool 分析Mach-O文件结构 macOS自带
debugserver 远程调试服务器 越狱设备自带或通过Cydia安装
lldb 调试器客户端 macOS自带
class-dump 提取Objective-C类信息 brew install class-dump
MachOView 可视化Mach-O文件编辑器 GitHub下载

获取目标IPA文件

配置并安装ipatool

# 配置镜像源加速Homebrew(国内网络环境推荐)
export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"

# 安装ipatool
brew tap majd/repo
brew install ipatool

ipatool详细操作流程

  1. Apple ID身份验证
ipatool auth login -e example@example.com -p 密码

注意事项:

  • 使用手机号登录需加国际区号(如86)
  • 启用了两因素认证(2FA)的账户需要输入验证码
  • 首次登录可能需要处理Apple ID安全提示
  • 如果遇到验证失败,建议在App Store应用中先手动登录
  1. 检索目标应用
# 基本搜索
ipatool --format json search -l 5 "目标应用名称"

# 高级搜索(按Bundle ID)
ipatool --format json search -l 5 --bundle-id com.example.app
  1. 下载应用包
# 常规下载
ipatool download -b com.example.bundleid

# 如需确认购买或下载免费应用
ipatool download -b com.example.bundleid --purchase

# 指定下载路径
ipatool download -b com.example.bundleid -o ~/Downloads/Apps/

从越狱设备获取应用

如果ipatool方法无效或受限,可直接从设备提取:

  1. 通过SSH连接设备
ssh root@<设备IP地址>
# 默认密码:alpine
  1. 定位应用路径
# 方法1:列出所有应用
find /var/containers/Bundle/Application -type d -name "*.app"

# 方法2:查找特定应用(适用于较新iOS版本)
find /var/containers/Bundle/Application -type d -name "*.app" | grep -i "应用名称"

# 方法3:通过进程查找(需要目标应用正在运行)
ps -e | grep Application
  1. 拷贝应用二进制文件
# 从设备拷贝到计算机
scp root@<设备IP>:/var/containers/Bundle/Application/<UUID>/应用名称.app/应用二进制文件 ~/Downloads/

Mach-O文件加密分析

解压IPA包(如使用ipatool下载)

unzip 应用名称.ipa -d 目标文件夹

提取并分析加密段信息

cd 目标文件夹/Payload/应用名称.app
otool -arch arm64 -l ./应用二进制文件 | grep -A8 -B2 LC_ENCRYPTION

更详细的分析命令:

# 查看文件架构
lipo -info ./应用二进制文件

# 查看所有加载命令
otool -l ./应用二进制文件

# 检查是否包含__RESTRICT段(可能导致调试困难)
otool -l ./应用二进制文件 | grep -A5 -B5 __RESTRICT

# 检查代码签名信息
codesign -d -vv ./应用二进制文件

加密参数详解

从输出结果中提取的关键加密信息示例:

Load command 12
          cmd LC_ENCRYPTION_INFO_64
      cmdsize 24
     cryptoff 16384       # 加密数据起始偏移量
    cryptsize 58654720    # 加密数据大小
      cryptid 1           # 1=已加密,0=未加密
          pad 0

关键参数解释:

  • cmd: 加载命令类型,LC_ENCRYPTION_INFO_64表示64位应用的加密信息
  • cryptoff: 加密数据在文件中的起始偏移量(通常为16384字节,即16KB)
  • cryptsize: 加密数据的大小(字节数)
  • cryptid: 加密状态标志(1=已加密,0=未加密)

这些值对后续脱壳过程至关重要,务必准确记录。

执行脱壳操作

设备端准备

确保iOS设备已安装以下组件:

  • OpenSSH(用于远程连接)
  • Cydia Substrate或Substitute(越狱基础框架)
  • debugserver(用于远程调试)

如果debugserver不可用,可通过以下步骤安装:

# 在iOS设备上
apt update
apt install com.autopear.installipa
apt install --reinstall cy+cpu.arm64

启动远程调试服务

  1. 在iOS设备上启动debugserver
# 在越狱的iOS设备终端中
debugserver 0.0.0.0:1234 -a 应用名称

参数说明:

  • 0.0.0.0:1234: 监听所有网络接口的1234端口
  • -a 应用名称: 附加到指定应用

网站公告

今日签到

点亮在社区的每一天
去签到