iOS启用微信自动抢红包(非越狱)
更新时间:2016年11月10日10:22:10 提交:lqh
本文主要介绍iOS(非越狱)如何自动抢微信红包的相关信息。下面是自动抢红包的详细实现步骤。有需要的朋友可以参考以下
iOS微信自动抢红包(非越狱)
现在微信红包很流行,尤其是在微信群里发红包。如果不及时抢红包,就根本抢不到,所以我就想着写一个插件来自动抢红包。经过网上查找资料,我实现了这个功能,如下:
微信红包
前言:最近笔者在研究iOS逆向工程,利用微信进行实践,在非越狱手机上实现了微信自动抢红包的功能。
题外话:本教程是一篇严肃的学术讨论文章。仅用于学习和研究。也请读者不要将其用于商业或其他非法方式。作者概不负责~~
好了,现在我们可以进入正题了!
本教程所需的工具/文件
-dump () () () 行
越狱机的开发者证书或企业证书
是的,如果你想达到不越狱自动抢红包的目的,你可能需要用到很多工具(工欲善其事,必先利其器^_^)。不过,没关系。您可以按照教程的步骤一步一步进行操作。如果不清楚步骤,可以重复实验。毕竟,天上不会掉馅饼。
解密微信可执行文件(Mach-O)
因为下载安装的应用程序都是加密的,所以我们需要使用一些工具来解密下载的App,俗称砸壳。这样以后分析App的代码结构会更容易。
首先我们需要一部已经越狱的手机(现在市面上越狱已经非常成熟,所以具体的越狱方法这里就不介绍了)。然后输入、安装、(调试程序时可以方便查看日志文件)这三个软件。
PS:笔者手机系统版本为iOS9.1。
在电脑上下载最新的微信。当时我下载的微信版本是6.3.13。下载完成后,屏幕上会显示下载的应用程序。
连接并安装您刚刚下载的微信应用程序。
打开Mac终端,使用ssh进入连接的终端(确保与Mac在同一网段,笔者的IP地址为192.168.8.54)。 root 密码默认为 。
SSH
下一步是找到微信ID。这里我有一个小技巧。我们可以关闭网上所有的应用程序,只保留微信,然后输入命令 ps -e
微信ID
这样我们就找到了微信可执行文件的具体路径。接下来我们需要找到微信的路径,输入命令-p
编译
首先记下我们刚刚获得的两条路径(和)。这时候我们就开始用它对微信二进制文件进行脱壳()。
确保我们从 中下载最新的源代码,进入源代码目录,并编译。命令如下:
。
这样我们就可以看到一个.目录下生成文件。
SCP
复制。这里我们使用 scp 命令。
scp 源文件路径 目标文件路径。详情如下:
SCP
开始破壳
的具体用法.是:S=//。 /
这说明脱壳成功,当前目录下会生成脱壳后的文件,即。还可以使用 scp 命令复制 .文件到计算机。接下来我们要正式转储微信可执行文件。
dump微信可执行文件
从 上下载最新的-dump源码,然后编译生成-dump(这里比较简单,就不详细解释了)。
导出微信的头文件
使用-dump命令导出刚刚砸下来的中的头文件。 ./-dump -s -S -H ./. -o ./.3-

导出的头文件
这里我们可以新建一个项目,将刚刚导出的头文件添加到新项目中,这样可以更方便的找到微信相关代码。
微信头文件
找到.h和gr.h这两个文件,其中我们注意到这两个方法:- (void):(id)arg1:(id)arg2;, - (void)est:(id)arg1;。没错,接下来我们就要利用这两种方法来实现微信自动抢红包功能。实现原理是,通过hook微信的新增消息功能,判断是否是红包消息。如果是,我们调用微信的开红包方法。这样就可以达到自动抢红包的目的了。哈哈,是不是很简单呢?我们来看看它是如何实现的。
新建一个项目,因为默认不支持生成,所以我们需要下载。安装完成后(环境会提示安装失败,请参考安装问题),重新打开,就可以看到新项目的选项中的选项了。
代码
选择,这样我们就创建一个新的项目,我们为其命名。
删除.h文件,将.m改为.mm,然后将.h添加到项目中
因为微信不会主动加载我们的hook代码,所以我们需要将hook逻辑写入到构造函数中。
(()) void (){ //具体钩子方法}
hook微信::方法,实现方法如下:
//声明CMessageMgr类 CHDeclareClass(CMessageMgr); CHMethod(2, void, CMessageMgr, AsyncOnAddMsg, id, arg1, MsgWrap, id, arg2) { //调用原来的AsyncOnAddMsg:MsgWrap:方法 CHSuper(2, CMessageMgr, AsyncOnAddMsg, arg1, MsgWrap, arg2); //具体抢红包逻辑 //... //调用原生的打开红包的方法 //注意这里必须为给objc_msgSend的第三个参数声明为NSMutableDictionary,不然调用objc_msgSend时,不会触发打开红包的方法 ((void (*)(id, SEL, NSMutableDictionary*))objc_msgSend)(logicMgr, @selector(OpenRedEnvelopesRequest:), params); } __attribute__((constructor)) static void entry() { //加载CMessageMgr类 CHLoadLateClass(CMessageMgr); //hook AsyncOnAddMsg:MsgWrap:方法 CHClassHook(2, CMessageMgr, AsyncOnAddMsg, MsgWrap); }
项目全部代码,(源码下载地址)。
完成具体的实现逻辑后,就可以顺利生成了。
重新封装微信App
注入微信可执行文件
如果我们希望微信应用程序运行后能够执行我们的代码,我们首先需要将微信添加到我们的应用程序中。这里我们使用一个注入神器:从网上下载源码并编译。
只需执行以下语句即可成功完成注入。在注入之前,我们首先将之前保存的.到已脱壳的可执行文件。
./ 需要注入目标可执行文件
注入成功后,你会看到如下信息:
注射
新的。
application-identifier 123456.com.autogetredenv.demo com.apple.developer.team-identifier 123456 get-task-allow keychain-access-groups 123456.com.autogetredenv.demo
这里你可能不知道你的证书和其他信息,但这并不重要。作者在这里有一个小技巧。您可以找到已经打包了开发者证书或企业证书的App(例如名为Demo),然后在终端中输入以下命令: 通过以下命令可以找到相关信息:
./ldid -e ./Demo.app/demo
重新签名微信
接下来,复制我们生成的 (.)、我们刚刚注入的那个以及 .文件(可以在之前打包的App中找到)转换成.app。
命令格式:-f -s 证书名称 目标文件
PS:证书名称可以在钥匙串中找到
在微信中使用命令对相关文件进行签名。具体实现如下:
辞职
打包成ipa
重新签名微信后,我们就可以用它来生成ipa了。具体实现如下:
-sdk -v .app -o ~/.ipa
安装微信抢红包功能
如果以上步骤都成功的话,那么万事俱备,只需要东风了~~~
我们可以使用工具来安装改进的微信(这个ID需要添加到证书中)。
工作完成了! !
好了,我们可以看看挂钩微信抢红包的效果啦~
自动抢红包
项目全部代码,(源码下载地址)。
哈哈,是不是感觉很幸福,“妈妈再也不用担心我抢红包了”。如果你有兴趣,可以继续hook微信的其他功能,这不仅可以加强你的学习,还可以满足你自己的特殊需求。
感谢您的阅读,希望对大家有所帮助,也感谢您对本站的支持!