准备工具
· yololib (注入神器,终端直接注入.dylib到微信的Mach-O)
· dumpdecrypted.dylib (砸壳神器)
· iOSOpenDev (越狱开发环境,编写业务逻辑)
· PP助手 - iTools - iTunes (安装ipa工具)
· class-dump (dump破壳后可执行文件中的所有.h文件)
· Xcode (IOS开发工具)
· 企业证书 (重签名)
· Cycript (命令行下和应用交互)
· OpenSSH (远程连接越狱机器)
砸壳
1.首先App Store下载最新版微信,安装到已经越狱手机上面。
2.打开Mac的终端,用ssh进入连上越狱机器(确保越狱机器和Mac在同一个网段,笔者iPad(9.2)的IP地址为192.168.34.238)。OpenSSH的root密码默认为alpine。
这个时候我们已经顺利获取了iPad的root权限(root相当于Windows中的administrator,权限最高 可读写)
3.接下来就是要获取iPad当前的进程了 控制台输入 ps ax 或者 ps -e
4.通过Cycript与进程交互获取应用的沙盒路径,通过 NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0] 动态获取
ps: 手机端貌似是用 [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomans:NSUserDomainMask][0] 获取沙盒路径的
5. 拷贝dumpdecrypted.dylib到iPad沙盒的Documents 动态破壳
5.1: 终端执行 scp ./dumpdecrypted.dylib [email protected]:沙盒路径
5.2 开始砸壳
dumpdecrypted.dylib的具体用法是:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 应用安装路径
到这里基本就已经砸壳完毕了 直接在当前终端目录 ls 查看
WeChat.decrypted 这个就是砸壳之后微信的可执行文件(Mach-O) 用class-dump可以导出微信所有的头文件 通过头文件可以看到微信所有公共函数的定义
- (void)AsyncOnAddMsg:(id)arg1 MsgWrap:(id)arg2; 微信消息函数的主入口
- (void)OpenRedEnvelopesRequest:(id)arg1; 抢红包函数
这两个参数就是自动抢红包的主角~~~~~
讲WeChat.decrypted拷贝的桌面 等待注入
编写动态库(.dylib)
打开安装了iOSOpenDev的XCode 选择Coco Touch Library
Hook消息函数 红包的Type值是49 语音 图片 文字各不一样
注入动态库(yololib)
将桌面的WeChat.decrypted改名为WeChat
终端通过 yololib 注入
注入成功之后 可以查看可执行文件的结构信息
这个就是刚刚编写的动态库的路径 自动抢红包功能全靠它~
@executable_path//Users/LBG/Desktop/libautoGetRedEnv.dylib (compatibility version 1.0.0, current version 1.0.0)这个路径是绝对路径 安装到手机之后会因为找不到这个动态库而程序闪退(尼玛~ 这个坑硬是爬了几天才爬出来 )
我们要做的就是修改路径
install_name_tool -change 原来的路径 新的路径 可执行文件
install_name_tool -change @executable_path//Users/LBG/Desktop/libautoGetRedEnv.dylib @executable_path/libautoGetRedEnv.dylib /Users/LBG/Desktop/WeChat
之后将 注入过动态库的可执行文件 embedded.mobileprovision entitlements.plist libautoGetRedEnv.dylib一起放入微信app 签名打包之后就可以安装了~
重签名(企业证书)
下章详细讲解重签名过程,淘宝有卖签名工具 价格500到2000不等 ,有时间我也打算用脚本或者swift写一个。