微信自动抢红包
获取砸壳版本的微信 ipa
注意,标(备用)的文件,主要就是他们。百度分享链接 密码:yt4y
因为在 AppStore 上面下载得到的应用都是经过加密的,可以执行文件上已经被加过一层壳,所以我们需要先拿到砸过壳版本的微信应用。
有两种方法:
- 直接在 PP 助手下载
- 使用 Clutch 对越狱手机上应用进行砸壳 (具体方法连接)
这里直接使用第一种方法百度网盘分想连接(备用)
第二种有点麻烦,所以先不搞,有时间在研究
准备dylib动态链接库
这步就很简单了,直接到 WechatRedEnvelop 上把源码 clone 下来,然后执行 make 命名,就能拿到 dylib文件。
1 | $ git clone https://github.com/buginux/WeChatRedEnvelop.git |
将生成的 WeChatRedEnvelop.dylib 文件拷贝到桌面,跟刚刚砸过壳的微信应用放到一个目录层级。 (备用)
检查依赖项
使用 macOS 自带的 otool 工具就可以进行依赖项检查:
1 | $ otool -L WeChatRedEnvelop.dylib |
可以看到除了 substrate 库,其它依赖的都是系统自带的库。我们将 libsubstrate.dylib 拷出。
如果你的系统中不是 /usr/lib/libsubstrate.dylib 而是 /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate 的话解决方案如下
我的就是这种,其实这个文件是在越狱手机里面才有,我的做法是通过USB来连接越狱手机,然后把里面的这个文件拷出来,具体链接方法如下:
如果你能通过WiFi连接到越狱手机直接用如下命令考出文件
$ scp root@<your.device.ip>:/usr/lib/libsubstrate.dylib ~/Desktop
我的通过WiFi连接不到,所以用的USB方法。
通过ssh连接越狱手机
WiFi 连接
$ ssh root@<越狱手机的IP地址>
输入默认密码:alpine
USB连接
通过brew来安装
$ brew install usbmuxd
usbmuxd 自带工具iproxy,iproxy 可以快捷的操作连接iPhone等操作。由于Mac上只支持4位的端口号,所以需要把iPhone的默认端口22映射到Mac上,相当于建立一个Mac和iPhone之间的通道。
$ iproxy 6666 22
以上命令就是把当前连接设备的22端口(SSH端口)映射到电脑的6666端口,那么想和设备22端口通信,直接和本地的6666端口通信就可以了。
终端提示 waiting for connection ,表示这两个端口之间已经可以通信了,保留当前终端(如果关闭就停止端口之间的通信了),新建另一个终端输入,默认密码:alpine
$ ssh -p 6666 root@localhost
从越狱手机里面拷文件出来
查看Mac的sshd服务状态,终端输入以下命令:
$ sudo launchctl list | grep ssh
输入密码后,如果显示
0 com.openssh.sshd
提示为开启状态,什么都没有为关闭状态。开启sshd服务命令:
$ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
关闭sshd服务命令:
$ sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
文件拷贝
下面以相册中照片拷贝到电脑为例:
1.ssh链接到越狱手机后,cd到相册所在目录
/private/var/mobile/Media/DCIM
2.DCIM可能会有子目录,查找到文件后执行以下命令拷贝:
$ scp IMG_0026.PNG shibosun@192.168.1.106:/Users/shibosun/Desktop/WeChatRed
介绍:
IMG_0010.PNG: 图片名,
shibosun@xxx.xxx.xxx.xxx:Mac用户名@Mac的IP
/Users/shibosun/Desktop/WeChatRed: 拷贝到电脑的目标路径
所以我用到的命令是如下:
1
2
3$ scp /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate shibosun@192.168.1.106:/Users/shibosun/Desktop/xxx
xxx 为你的文件目录
注意:拷出来的CydiaSubstrate文件,改名成 libsubstrate.dylib(配用)
然后使用 install_name_tool
命令修改动态库的路径,指向 app 二进制文件的同级目录。
1 | $install_name_tool -change /usr/lib/libsubstrate.dylib @loader_path/libsubstrate.dylib WeChatRedEnvelop.dylib |
然后在 -change 后面把 /usr/lib/libsubstrate.dylib 改成你的
/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate。其它不变。
1 | $install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib WeChatRedEnvelop.dylib |
检查一下看看路径有没有改
1 | $ otool -L WeChatRedEnvelop.dylib |
到目前为止你的文件夹里面应该有这些文件
其实越狱手机我们要的只是 CydiaSubstrate 这个文件,然后改名为 libsubstrate.dylib,
还有砸壳微信ipa文件,WeChat.ipa
将动态链接库注入二进制文件中
接下来,就需要将我们的库注入到微信的二进制文件中,可以使用开源的 optool 工具。
编译安装 optool 工具:
1 | # 因为 optool 添加了 submodule,因为需要使用 --recuresive 选项,将子模块全部 clone 下来(我也不知道什么意思,先用) |
如果碰到类似 “error: There is no SDK with the name or path ‘/path/to/optool/macosx10.9’” 的错误,请使用 Xcode 打开工程,在 Build Setting 中选择正确的 SDK 版本(我没有碰到问题,一下编译过)
这个过程会生成一个optool文件,把他拷贝出来放到那些文件夹中, 目录build/Release/optool(备用)
现在你的文件夹里面应该有
将砸壳过的 ipa 文件解压,然后将 libsubstrate.dylib 与 WeChatRedEnvelop.dylib 拷贝到解压后的 WeChat.app 目录下。
1 | $ unzip WeChat.ipa -d wechat |
使用 optool 把 WeChatRedEnvelop.dylib 注入到二进制文件中:
1 | $ ./optool install -c load -p "@executable_path/WeChatRedEnvelop.dylib" -t wechat/Payload/WeChat.app/WeChat |
注意:在开始打包之前,请先将 WeChat.app 里面的 Watch 目录删除,这个目录是跟 Watch 有关的,如果不删除的话,会导致后继的安装步骤出问题。出现 A WatchKit app within this app is not a valid bundle
的错误。
打包并重签名
打包 ipa 与重签名可以直接使用图形化工具 ios-app-signer 来完成。
这个工具可以自动加载出本机的证书以及 Provisioning Profile 文件,使用起来十分方便,当然也可以手动选择证书文件。
如果是使用个人开发者证书,需要先将设备的 UUID 加到 Provisioning Profile 中。
点击 start 后,指定保存路径,iOS App Signer 就会帮你搞定所有事情。重签名的ipa就可以在非越狱上安装了。
安装
参考这里吧,不想重复了 链接地址