前言
本帖记录了一次完整的iOS逆向分析过程,从抓包到最终编写越狱插件。以夸克网盘为例,实现VIP用户解锁SVIP画质和音效。
声明:本教程仅供技术交流学习,请勿用于非法用途。
环境准备
- Mac电脑
- 已越狱iPhone
- Charles Proxy(抓包)
- Hopper Disassembler(逆向分析)
- Theos(插件开发)
一、抓包分析
1. 配置Charles
iPhone设置代理:设置 → Wi-Fi → 配置代理 → 手动(填Mac的IP和8888端口)
安装证书:手机浏览器访问 chls.pro/ssl,安装后在"证书信任设置"中启用
2. 抓取会员接口
打开夸克App,进入"我的"页面,Charles中找到:
https://drive-m.quark.cn/1/clouddrive/member
3. 分析响应
{
"data": {
"member_type": "VIP",
"member_status": {
"VIP": "PAID",
"SUPER_VIP": "UNPAID"
}
}
}
关键点:member_type 决定会员等级,修改响应即可欺骗客户端。
二、砸壳导出
使用frida-ios-dump:
pip3 install frida-tools
git clone https://github.com/AloneMonkey/frida-ios-dump
cd frida-ios-dump
pip3 install -r requirements.txt
# USB连接
iproxy 2222 22
# 砸壳
python3 dump.py com.quark.drive
解压IPA提取可执行文件:
unzip com.quark.drive.ipa -d QuarkApp
cd QuarkApp/Payload/QuarkDrive.app/
三、静态分析
1. Hopper分析
打开Hopper,拖入 QuarkDrive 文件,搜索 AFHTTPSessionManager
2. 找到Hook点
关键方法:
- URLSession:dataTask:didReceiveData:
这个方法接收服务器响应数据,Hook它就能修改响应内容。
四、编写插件
1. 安装Theos
brew install ldid xz
git clone --recursive https://github.com/theos/theos.git ~/theos
echo "export THEOS=~/theos" >> ~/.zshrc
source ~/.zshrc
2. 创建项目
$THEOS/bin/nic.pl
# 选择 iphone/tweak
# Bundle filter: com.quark.drive
3. 编写代码
Tweak.xm:
%hook AFHTTPSessionManager
- (void)URLSession:(NSURLSession *)session
dataTask:(NSURLSessionDataTask *)dataTask
didReceiveData:(NSData *)data {
NSString *urlString = dataTask.currentRequest.URL.absoluteString;
if ([urlString containsString:@"clouddrive/member"]) {
NSString *fakeJSON = @"{\"status\":200,\"code\":0,\"data\":{\"member_type\":\"SUPER_VIP\",\"super_vip_exp_at\":253392455349000,\"total_capacity\":6597069766656}}";
NSData *fakeData = [fakeJSON dataUsingEncoding:NSUTF8StringEncoding];
%orig(session, dataTask, fakeData);
return;
}
%orig;
}
%end
4. 编译打包
make clean
make
make package
五、安装测试
安装
# SSH安装
export THEOS_DEVICE_IP=你的iPhone_IP
make package install
# 或手动安装
scp packages/*.deb root@iPhone_IP:/var/root/
ssh root@iPhone_IP
dpkg -i /var/root/*.deb
killall -9 SpringBoard
验证
打开夸克App → 我的 → 查看会员状态 → 播放视频查看画质选项
常见问题
Q:插件不生效?
检查Bundle ID和dylib:
ssh root@iPhone_IP
ps aux | grep Quark
ls /Library/MobileSubstrate/DynamicLibraries/
Q:App闪退?
查看崩溃日志:
cd /var/mobile/Library/Logs/CrashReporter
cat QuarkDrive-*.ips
添加异常处理:
@try {
// Hook逻辑
}
@Catch (NSException *exception) {
NSLog(@"Exception: %@", exception);
}
总结
逆向流程:抓包找接口 → 砸壳分析 → 找Hook点 → 写插件 → 测试
核心思路:拦截网络响应,修改会员状态字段,欺骗客户端判断逻辑。
本帖仅供吾爱破解论坛技术交流使用,请勿传播或用于商业用途。
如有问题欢迎回帖讨论!