微信红包一直都是一个重点娱乐项目,最近看到大家都在玩微信自动抢红包,原来是有好心人把工具开源了,而且配有详细解说,好奇之下也手痒来玩了一下。
因为在此之前我从未接触过iOS开发,这说明自动抢红包目前来看门槛还很低,所以感兴趣的同学可以试着玩玩,过程中挺涨知识的,原理什么的我大概明白了一点,就不班门弄斧了,纯粹是娱乐。
准备工作
需要设备
iPhone一台(若已准备好未加密的微信ipa可跳过)
装好Xcode8的mac一台
需要环境
安装OpenSSH和Cycript
在越狱iPhone上的Lydia里搜索OpenSSH和Cycript,然后进行安装。OpenSSH成功安装后22端口会开启,同一局域网内可以ssh上去,默认root密码alpine,请立即修改默认密码。
>>>安装Theos和ldid
>>>编译WeChatRedEnvelop
make之前请修改WeChatRedEnvelop.plist里的Bundles为你的新应用名字(就是后面签名用的bundles值)。
>>>编译安装optool
如果git clone过程中出现权限问题,请自行修改submodule的config内容,或者添加ssh证书。
获取未加密的微信ipa
在AppStore上面下载得到的应用都是经过加密的,可以执行文件上已经被加过一层壳,重签包需要用未加密的应用。一般获取未加密应用有两种方式:
1.使用果粉迷下载
2.对越狱手机上应用进行砸壳
第二种用Clutch进行砸壳,但是Clutch暂时不支持watchOS 2,而微信包是多target的,使用Clutch砸壳的时候会出现如下提示:
com.tencent.xin contains watchOS 2 compatible application. It's not possible to dump watchOS 2 apps with Clutch 2.0.4 at this moment.
生成出来的可执行文件就在Clutch目录下,将其拷贝到手机上
成功之后在/private/var/mobile/Documents/Dumped/目录里可以得到解密后的ipa文件,改名为wx.ipa然后scp到桌面上备用。
修改未加密的微信ipa
准备依赖库
用macOS自带的otool工具进行依赖项检查:
从越狱的iOS设备中把/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate等非系统自带的库scp处理,改名后放在WeChatRedEnvelop.dylib的同级目录下,然后修改库指向。
注入Tweak至二进制文件
解压ipa文件,删除会造成问题的watch,然后向wechat中注入Tweak。
打包并重签名
打包 ipa 与重签名可以直接使用图形化工具ios-app-signer来完成。他可以自动加载本机的证书以及Provisioning Profile 文件,使用起来十分方便
点击 start 后,指定保存路径,打包成功后生成新的ipa。
安装使用
重签名打包的ipa可以通过果粉迷安装,安装成功后效果如下(请原谅我无耻地修改):
其他
微信对这种方法其实已经有所对策,主要把判断秒抢和查询bundleid,被查到一般都是直接封禁朋友圈和部分功能之类的,所以各位玩的时候尽量克制,所谓:“小撸怡情 大撸伤身 强撸…… ”
PS:本来想用dumpdecrypted砸壳,结果了解到dumpdecrypted只会砸你手机处理器对应的那个壳,fat binary 的其它部分仍然是有壳的,所以在这里不好用。不过还是记录一下折腾dumpdecrypted的过程。
下载dumpdecrypted源码并编译
编译成功之后会得到一个dumpdecrypted.dylib文件,这就是我们等下砸壳所要用到的工具。将该工具用scp复制到越狱iOS设备上的/var/root/中。
获取APP目录信息
关闭越狱iOS设备上所有的应用,然后打开微信,用ps -e命令可以获取微信的APP目录地址,如图所示,有/var/mobile/Containers/Bundle/Application/字样的结果就是微信可执行文件的全路径,记录下来(设该值为path1),待会儿要用。
获取Documents目录信息
用Cycript找出微信的Documents目录路径,如图所示有/var/mobile/Containers/Data/Application/字样的结果就是微信的Documents目录全路径,记录下来(设该值为path2),待会儿也要用。
开始砸壳
将dumpdecrypted移动到微信的Documents目录下,然后用下列命令开始砸壳{path1}和{path2}请替换成前面两步得到的路径:
效果如图:
当前目录下会生成WeChat.decrypted,即砸壳后的未加密文件,请将该文件scp到电脑上备用。