iOS逆向-手把手教你写支付宝蚂蚁森林收集能量助手
前言
发现iOS支付宝逆向的分析并不多,蚂蚁森林基于H5应用 套着UIWebView 基本也没这类JS和原生交互分析的帖子,就拿此练手吧 作技术分享
去掉 ptrace 和 __RESTRICT section 两个保护
脱壳和dump头文件
分析和调试
编写Tweak
总结
环境
MacBook,iPhone6,iOS 9.3.3越狱, iOS支付宝10.1.5
工具
theos
Tweak制作工具
xcode
用lldb来附加调试
class-dump
导出头文件
dumpdecrypted
> 脱appstore的壳
iHex
二进制编辑器
去掉 __RESTRICT section 和 ptrace 两个保护
去掉 __RESTRICT section 步骤
ssh到手机 执行命令 ps -e
找到 /var/containers/Bundle/Application/DD6D8BA3-95F2-4C6D-BFD7-0E20420A6E9C/AlipayWallet.app/AlipayWallet
切换到mac电脑 使用scp命令 把执行文件拷到电脑上scp root@192.168.2.2:/var/containers/Bundle/Application/C6F2DD99-6450-4838-98B8-2899E8EBC1A4/AlipayWallet.app/AlipayWallet /Users/hack/Desktop/wz
打开iHex 查找command+f 把 RESTRICT和restrict替换为其他值(比如:RRRRRRRR和rrrrrrrr。保证长度不变就行啦)看图1
拷贝文件回去scp /Users/hack/Desktop/wz/AlipayWallet root@192.168.2.2:/var/containers/Bundle/Application/C6F2DD99-6450-4838-98B8-2899E8EBC1A4/AlipayWallet.app/AlipayWallet
如果打开闪退 请Cydia中安装 AppSync
去除ptrace保护
使用theos 创建Tweak 代码如下 安装到手机就可以
#import
#import
static int (*orig_ptrace) (int request, pid_t pid, caddr_t addr, int data);
static int my_ptrace (int request, pid_t pid, caddr_t addr, int data){
if(request == 31){
NSLog(@"[AntiAntiDebug] - ptrace request is PT_DENY_ATTACH");
return 0;
}
return orig_ptrace(request,pid,addr,data);
}
%ctor{
MSHookFunction((void *)MSFindSymbol(NULL,"_ptrace"),(void*)my_ptrace,(void**)&orig_ptrace);
NSLog(@"[AntiAntiDebug] Module loaded!!!");
}
脱壳和dump头文件
执行命令 cycript -p AlipayWallet 注入支付宝进程
执行命令 [[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
看到返回 /var/mobile/Containers/Data/Application/5E744C4A-5B05-4280-A21C-9E6EFE8EF51D/Documents/
执行命令 cd /var/mobile/Containers/Data/Application/5E744C4A-5B05-4280-A21C-9E6EFE8EF51D/Documents/
把 dumpdecrypted.dylib拷贝进去scp /Users/cardlan