文章主要参考 这里,本文主要记录亲自操作时遇到的坑。另外文章的原理及抢红包的代码怎么来的参考 这里。
脱壳
从 AppStore 上下载下来的应用是不能直接放到 Hopper
等反汇编工具上去的。必须先脱壳,我直接从 PP助手
上下载已经被人脱过壳的微信:
下载完 .ipa 文件后,直接 unzip 解压,接着查看: 1
otool -l Payload/WeChat.app/WeChatgrep cry
开发抢红包插件
首先先安装 iOSOpenDev
,然后才能开始写动态库,网上
已经有代码了。
之前遇到老是编译不成功,一直以为是 iOSOpenDev 没有安装全,耗费了很长时间,根据编译的错误提示,直接掩耳盗铃一气之下删掉了 User-Defined 的配置:
照样编过,后来在写这篇记录时,又删掉整个工程重新 git clone 后,并没有管 User-Defined 的配置,却又能一次性编译成功,诡异…
重新签名
在用 yololib
把红包动态库注入微信之前,先试着尝试直接给微信重新签名。
像参考的文章一样,也是删掉了微信里的部分文件,我这里只删掉了 Watch 文件夹
然后第一次用 AppResign
、ideviceinstaller
等命令行工具重签名和安装到手机时用的公司的相关帐号,一直在最后安装那一步校验不过,卡在40%处:
也是折腾很久,后来抱着试一试的态度换了另外一个开发者帐号就OK了: 也是没搞懂为什么…
总之终于是成功了,但是如果不删微信里面 Watch 文件夹而用 AppResign 直接重签的话是不能最后安装成功的,估计重签逻辑还是有一些遗漏吧。反正 Watch 多半也是跟 iWatch 相关的功能,我也用不上就没细看了。
最后就是真枪实弹操作了,先编译出抢红包的 dylib,然后按照上面的操作顺利安装到手机上,这时手机会同时出现两个微信,看不出任何差别:
后续
update0
在重签名这里,因为每次搞一个软件后都要用新的 bundleid,得新建一些证书或者 PP 文件什么的,比较麻烦,而且如果没有开发者帐号,就因为搞这个就要花 99 刀买一个的话应该不大可能。所以可以仿照 参考文章 里提到的方法,花 15 块钱去淘宝上搞一个证书和PP文件用来签名
update1
经过猜测和验证,现在可以不用再一个应用搞一个 bundle id 了,直接创建一个通配符的 PP 文件即可,前提是这个 PP 文件得包含你的证书以及你的设备,重签的时候会要求你设置具体的 bundle id,乱设一个不要跟手机上的 app 重名的就行了。
update2
第二天给另外一哥们装完后,再装就不行了,而且给那哥们装的版本不会闪退但是不能抢红包。后来多次安装,都可以装到手机上,但是点击就会闪退,操作步骤完全没变,也是搞不懂为什么。。。打开 XCode 查看设备 log:
网上一顿瞎搜在加上凭字面意思理解,猜测问题多半出在
yololib
工具的注入上,目前暂时无解。
update3
闪退果然是 yololib
的问题,下了另外一个注入动态库的工具
insert_dylib
,该工具提供了一个参数 --weak
这就是我想要的东西。拿去一测,果然不闪退。
但是抢红包插件不管用。。。
update4
妈蛋,终于知道什么原因了。原来在用 yololib
注入的时候一定要在 xxx.app
文件夹里面去操作,只有在里面操作,注入的动态库路径才是正确的(这个是真的坑人):
否则就会 crash,所以查看 log 才会说加载不到。注意看 crashlog 里的动态库路径,明显是错的。
UPDATE3
的 --weak
选项意思是:找到dylib就加载,如果找不到就算了,并不会导致程序崩溃。。。所以就不会有抢红包插件生效了。
update5
今天微信更新到 6.5.2,而且自己也想再加上一个随机延迟抢红包的逻辑(防止插件被封)。然后又重头折腾了一下,发现奇怪的问题,注入成功后 otool 居然没有查到,然后看了下:
发现从 PP 助手上下下来的微信没有被脱壳,怀疑可能是没脱壳的原因,然后又重新下一遍,还是没脱壳的。最后又去同步推上下了个,依旧未脱壳,没办法,还是用旧版的脱壳微信,然后注入新写的动态库:
最后用很方便的iOS App Signer
来签名:
update6
本来想把“防消息撤回”和“自动抢红包”整合起来,但是始终未能成功。
当先用 hopper
修改二进制文件实现“防消息撤回”后,再注入抢红包动态库,在签名这一步时会失败:
导致后面的安装失败:
而且先修改后的文件格式也变了,或许这就是签名失败的原因:
有时候也会出现 yololib 显示成功,但实际上并没有注入成功的问题: 接着尝试反着来一遍,先实现“自动抢红包”,再修改文件实现“防消息撤回”(用vi找到正确的位置直接修改二进制数据)。虽然过程中没有出现任何问题。签名、安装、运行都 OK,但是最后测试的时候只有“自动抢红包”功能起效,“防消息撤回”并没有生效。
update7
iOS App Signer
有时候会失效,安装到 40%
就出错,后来老老实实用命令行工具就 OK 了。