论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
移动端开发
›
IOS
›
iOS应用手动脱壳砸壳教程
iOS应用手动脱壳砸壳教程
九天猎人
论坛元老
|
6 天前
|
显示全部楼层
|
阅读模式
楼主
主题
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
# 配置镜像源加速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详细操作流程
Apple ID身份验证
ipatool auth login -e example@example.com -p 密码
复制代码
注意事项:
使用手机号登录需加国际区号(如86)
启用了两因素认证(2FA)的账户须要输入验证码
初次登录大概须要处理Apple ID安全提示
假如遇到验证失败,建议在App Store应用中先手动登录
检索目标应用
# 基本搜索
ipatool --format json search -l 5 "目标应用名称"
# 高级搜索(按Bundle ID)
ipatool --format json search -l 5 --bundle-id com.example.app
复制代码
下载应用包
# 常规下载
ipatool download -b com.example.bundleid
# 如需确认购买或下载免费应用
ipatool download -b com.example.bundleid --purchase
# 指定下载路径
ipatool download -b com.example.bundleid -o ~/Downloads/Apps/
复制代码
从越狱设备获取应用
假如ipatool方法无效或受限,可直接从设备提取:
通过SSH连接设备
ssh root@<设备IP地址>
# 默认密码:alpine
复制代码
定位应用路径
# 方法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
复制代码
拷贝应用二进制文件
# 从设备拷贝到计算机
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
复制代码
启动远程调试服务
在iOS设备上启动debugserver
# 在越狱的iOS设备终端中
debugserver 0.0.0.0:1234 -a 应用名称
复制代码
参数说明:
0.0.0.0:1234: 监听所有网络接口的1234端口
-a 应用名称: 附加到指定应用
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
九天猎人
论坛元老
这个人很懒什么都没写!
楼主热帖
从洞察到决策,一文解读标签画像体系建 ...
C# 使用流读取大型TXT文本文件 ...
袋鼠云平台代码规范化编译部署的提效性 ...
Flink的API分层、架构与组件原理、并行 ...
Redis命令手册
打穿你的内网之三层内网渗透 ...
SpringBoot(八) - 统一数据返回,统一 ...
JVM
小程序【第一期】
微服务(三)之负载均衡(服务端和客户端) ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
Java
快速回复
返回顶部
返回列表