微信抢红包插件

文章主要参考 这里,本文主要记录亲自操作时遇到的坑。另外文章的原理及抢红包的代码怎么来的参考 这里

脱壳

从 AppStore 上下载下来的应用是不能直接放到 Hopper 等反汇编工具上去的。必须先脱壳,我直接从 PP助手 上下载已经被人脱过壳的微信:

下载完 .ipa 文件后,直接 unzip 解压,接着查看:

1
otool -l Payload/WeChat.app/WeChatgrep cry
cryptid 旁边显示的 0 就说明已经是脱过壳的了。

开发抢红包插件

首先先安装 iOSOpenDev,然后才能开始写动态库,网上 已经有代码了。

之前遇到老是编译不成功,一直以为是 iOSOpenDev 没有安装全,耗费了很长时间,根据编译的错误提示,直接掩耳盗铃一气之下删掉了 User-Defined 的配置:

照样编过,后来在写这篇记录时,又删掉整个工程重新 git clone 后,并没有管 User-Defined 的配置,却又能一次性编译成功,诡异…

重新签名

在用 yololib 把红包动态库注入微信之前,先试着尝试直接给微信重新签名。

像参考的文章一样,也是删掉了微信里的部分文件,我这里只删掉了 Watch 文件夹

然后第一次用 AppResignideviceinstaller 等命令行工具重签名和安装到手机时用的公司的相关帐号,一直在最后安装那一步校验不过,卡在40%处: file

也是折腾很久,后来抱着试一试的态度换了另外一个开发者帐号就OK了: file 也是没搞懂为什么…

总之终于是成功了,但是如果不删微信里面 Watch 文件夹而用 AppResign 直接重签的话是不能最后安装成功的,估计重签逻辑还是有一些遗漏吧。反正 Watch 多半也是跟 iWatch 相关的功能,我也用不上就没细看了。

最后就是真枪实弹操作了,先编译出抢红包的 dylib,然后按照上面的操作顺利安装到手机上,这时手机会同时出现两个微信,看不出任何差别: file

后续

update0

在重签名这里,因为每次搞一个软件后都要用新的 bundleid,得新建一些证书或者 PP 文件什么的,比较麻烦,而且如果没有开发者帐号,就因为搞这个就要花 99 刀买一个的话应该不大可能。所以可以仿照 参考文章 里提到的方法,花 15 块钱去淘宝上搞一个证书和PP文件用来签名

update1

经过猜测和验证,现在可以不用再一个应用搞一个 bundle id 了,直接创建一个通配符的 PP 文件即可,前提是这个 PP 文件得包含你的证书以及你的设备,重签的时候会要求你设置具体的 bundle id,乱设一个不要跟手机上的 app 重名的就行了。

update2

第二天给另外一哥们装完后,再装就不行了,而且给那哥们装的版本不会闪退但是不能抢红包。后来多次安装,都可以装到手机上,但是点击就会闪退,操作步骤完全没变,也是搞不懂为什么。。。打开 XCode 查看设备 log: file

网上一顿瞎搜在加上凭字面意思理解,猜测问题多半出在 yololib 工具的注入上,目前暂时无解。

update3

闪退果然是 yololib 的问题,下了另外一个注入动态库的工具 insert_dylib,该工具提供了一个参数 --weak 这就是我想要的东西。拿去一测,果然不闪退。 file

但是抢红包插件不管用。。。

update4

妈蛋,终于知道什么原因了。原来在用 yololib 注入的时候一定要在 xxx.app 文件夹里面去操作,只有在里面操作,注入的动态库路径才是正确的(这个是真的坑人): file

否则就会 crash,所以查看 log 才会说加载不到。注意看 crashlog 里的动态库路径,明显是错的。

UPDATE3--weak 选项意思是:找到dylib就加载,如果找不到就算了,并不会导致程序崩溃。。。所以就不会有抢红包插件生效了。

update5

今天微信更新到 6.5.2,而且自己也想再加上一个随机延迟抢红包的逻辑(防止插件被封)。然后又重头折腾了一下,发现奇怪的问题,注入成功后 otool 居然没有查到,然后看了下:

发现从 PP 助手上下下来的微信没有被脱壳,怀疑可能是没脱壳的原因,然后又重新下一遍,还是没脱壳的。最后又去同步推上下了个,依旧未脱壳,没办法,还是用旧版的脱壳微信,然后注入新写的动态库: file

最后用很方便的iOS App Signer来签名: file

update6

本来想把“防消息撤回”和“自动抢红包”整合起来,但是始终未能成功。

当先用 hopper 修改二进制文件实现“防消息撤回”后,再注入抢红包动态库,在签名这一步时会失败: file

导致后面的安装失败: file

而且先修改后的文件格式也变了,或许这就是签名失败的原因: file

有时候也会出现 yololib 显示成功,但实际上并没有注入成功的问题: file 接着尝试反着来一遍,先实现“自动抢红包”,再修改文件实现“防消息撤回”(用vi找到正确的位置直接修改二进制数据)。虽然过程中没有出现任何问题。签名、安装、运行都 OK,但是最后测试的时候只有“自动抢红包”功能起效,“防消息撤回”并没有生效。

update7

iOS App Signer 有时候会失效,安装到 40% 就出错,后来老老实实用命令行工具就 OK 了。