iOS应用手动脱壳砸壳教程

打印 上一主题 下一主题

主题 1648|帖子 1648|积分 4944

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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

  1. # 配置镜像源加速Homebrew(国内网络环境推荐)
  2. export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"
  3. export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"
  4. export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"
  5. # 安装ipatool
  6. brew tap majd/repo
  7. brew install ipatool
复制代码
ipatool详细操作流程


  • Apple ID身份验证
  1. ipatool auth login -e example@example.com -p 密码
复制代码
注意事项:


  • 使用手机号登录需加国际区号(如86)
  • 启用了两因素认证(2FA)的账户须要输入验证码
  • 初次登录大概须要处理Apple ID安全提示
  • 假如遇到验证失败,建议在App Store应用中先手动登录

  • 检索目标应用
  1. # 基本搜索
  2. ipatool --format json search -l 5 "目标应用名称"
  3. # 高级搜索(按Bundle ID)
  4. ipatool --format json search -l 5 --bundle-id com.example.app
复制代码

  • 下载应用包
  1. # 常规下载
  2. ipatool download -b com.example.bundleid
  3. # 如需确认购买或下载免费应用
  4. ipatool download -b com.example.bundleid --purchase
  5. # 指定下载路径
  6. ipatool download -b com.example.bundleid -o ~/Downloads/Apps/
复制代码
从越狱设备获取应用

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

  • 通过SSH连接设备
  1. ssh root@<设备IP地址>
  2. # 默认密码:alpine
复制代码

  • 定位应用路径
  1. # 方法1:列出所有应用
  2. find /var/containers/Bundle/Application -type d -name "*.app"
  3. # 方法2:查找特定应用(适用于较新iOS版本)
  4. find /var/containers/Bundle/Application -type d -name "*.app" | grep -i "应用名称"
  5. # 方法3:通过进程查找(需要目标应用正在运行)
  6. ps -e | grep Application
复制代码

  • 拷贝应用二进制文件
  1. # 从设备拷贝到计算机
  2. scp root@<设备IP>:/var/containers/Bundle/Application/<UUID>/应用名称.app/应用二进制文件 ~/Downloads/
复制代码
Mach-O文件加密分析

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

  1. unzip 应用名称.ipa -d 目标文件夹
复制代码
提取并分析加密段信息

  1. cd 目标文件夹/Payload/应用名称.app
  2. otool -arch arm64 -l ./应用二进制文件 | grep -A8 -B2 LC_ENCRYPTION
复制代码
更详细的分析下令:
  1. # 查看文件架构
  2. lipo -info ./应用二进制文件
  3. # 查看所有加载命令
  4. otool -l ./应用二进制文件
  5. # 检查是否包含__RESTRICT段(可能导致调试困难)
  6. otool -l ./应用二进制文件 | grep -A5 -B5 __RESTRICT
  7. # 检查代码签名信息
  8. codesign -d -vv ./应用二进制文件
复制代码
加密参数详解

从输出效果中提取的关键加密信息示例:
  1. Load command 12
  2.           cmd LC_ENCRYPTION_INFO_64
  3.       cmdsize 24
  4.      cryptoff 16384       # 加密数据起始偏移量
  5.     cryptsize 58654720    # 加密数据大小
  6.       cryptid 1           # 1=已加密,0=未加密
  7.           pad 0
复制代码
关键参数解释:


  • cmd: 加载下令类型,LC_ENCRYPTION_INFO_64表现64位应用的加密信息
  • cryptoff: 加密数据在文件中的起始偏移量(通常为16384字节,即16KB)
  • cryptsize: 加密数据的大小(字节数)
  • cryptid: 加密状态标记(1=已加密,0=未加密)
这些值对后续脱壳过程至关紧张,务必准确记录。
实行脱壳操作

设备端准备

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


  • OpenSSH(用于远程连接)
  • Cydia Substrate或Substitute(越狱根本框架)
  • debugserver(用于远程调试)
假如debugserver不可用,可通过以下步骤安装:
  1. # 在iOS设备上
  2. apt update
  3. apt install com.autopear.installipa
  4. apt install --reinstall cy+cpu.arm64
复制代码
启动远程调试服务


  • 在iOS设备上启动debugserver
  1. # 在越狱的iOS设备终端中
  2. debugserver 0.0.0.0:1234 -a 应用名称
复制代码
参数说明:


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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表