前言:本文主要讲述使用hook方式实现红包插件,涉及到tweak相关知识,如果你不想了解具体实现细节可直接到我的Github地址参考安装(包含越狱和非越狱两种方法)

  转眼间2017即将过去,又到了领红包拿到手软的时候。年会上少不了几百上千的红包,真是稍不留神就错过几个亿额... 你是否还是一直死死盯着屏幕,等待着随时来临的红包雨?有没有想过放下手机随便玩耍自动领红包?

  本文所讲述的红包插件不同于市面上存在的一些红包助手,原理是检测到红包消息到达后,直接模拟用户点击红包去领取。这种方式相对来说更加安全,更不易被微信系统检测出存在作弊行为。而且支持微信于后台运行以及iPhone锁屏状态下自动抢红包,真正做到无忧无虑领红包。

抢红包效果预览:

功能特性

  • 支持微信在后台和锁屏状态下自动抢红包
  • 支持自定义延迟抢红包
  • 完全模拟用户点击红包,可有效防止微信发现作弊封号
  • 兼容最新版本微信,跟随微信更新及时更新迭代
  • 支持修改微信运动步数

实现方式

  1. hook红包消息,检测有新的红包到达后,用代码模拟用户点击领取红包
  2. hook红包消息,当有新的红包时,调用微信的红包组件领取红包

本文主要讲述方式1的实现方法,相对方式2稍微复杂一点,但是被微信检测出的风险更小一点。

首先来看看源文件目录



这个Tweak.xm就是我们今天的重头戏啦

项目完整代码,已托管到Github,如果欢迎Star

源码分析

首先要拦截红包消息,红包消息的m_uiMessageType为49,检测到红包消息后先做一个标记

- (void)MainThreadNotifyToExt:(NSDictionary *)ext{
%orig;
if([LLRedEnvelopesMgr shared].isOpenRedEnvelopesHelper){
CMessageWrap *msgWrap = ext[@"3"];
if (msgWrap && msgWrap.m_uiMessageType == 49){
//红包消息
[LLRedEnvelopesMgr shared].haveNewRedEnvelopes = YES;
}
}
}

当有消息到达后,微信会自动调用列表页面的reloadSession方法,我们在这个方法里判断是否是红包消息造成的reloadSession调用。如果是,直接回调打开红包的block

%hook NewMainFrameViewController

- (void)viewDidLoad{
%orig;
[LLRedEnvelopesMgr shared].openRedEnvelopesBlock = ^{
if([LLRedEnvelopesMgr shared].isOpenRedEnvelopesHelper && [LLRedEnvelopesMgr shared].haveNewRedEnvelopes){
[LLRedEnvelopesMgr shared].haveNewRedEnvelopes = NO;
[LLRedEnvelopesMgr shared].isHongBaoPush = YES;
[[LLRedEnvelopesMgr shared] openRedEnvelopes:self];
}
};
} - (void)reloadSessions{
%orig;
if([LLRedEnvelopesMgr shared].isOpenRedEnvelopesHelper && [LLRedEnvelopesMgr shared].openRedEnvelopesBlock){
[LLRedEnvelopesMgr shared].openRedEnvelopesBlock();
}
} %end

在block内部模拟用户点击到聊天界面,这里先做了一个检测,判断当前导航控制器是否已经push了聊天的控制器,如果有直接拿来用。

- (void)openRedEnvelopes:(NewMainFrameViewController *)mainVC{
NSArray *controllers = mainVC.navigationController.viewControllers;
UIViewController *msgContentVC = nil;
for (UIViewController *aController in controllers) {
if ([aController isMemberOfClass:NSClassFromString(@"BaseMsgContentViewController")]) {
msgContentVC = aController;
break;
}
}
if (msgContentVC) {
[mainVC.navigationController PushViewController:msgContentVC animated:YES];
} else {
[mainVC tableView:[mainVC valueForKey:@"m_tableView"] didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];
}
}

hook导航控制器的PushViewController方法, 先找到红包Cell上面的WCPayC2CMessageCellView后直接调用tapAppNodeView方法触发红包点击事件(tapAppNodeView方法就是用户点击红包的处理方法)

[baseMsgVC tapAppNodeView:payC2CView];

最后再hook红包WCRedEnvelopesReceiveHomeView(就是用户点击红包弹出的View)的初始化方法,调用OnOpenRedEnvelopes方法领取红包

[view OnOpenRedEnvelopes];

大功告成,坐等红包雨,打开微信锁上屏幕即可抢红包,岂不是爽歪歪

iOS微信自动抢红包插件(支持后台和锁屏下抢红包)的更多相关文章

  1. 一步一步实现iOS微信自动抢红包

    微信红包 前言:最近笔者在研究iOS逆向工程,顺便拿微信来练手,在非越狱手机上实现了微信自动抢红包的功能.   此教程所需要的工具/文件 yololib class-dump dumpdecrypte ...

  2. iOS音频的后台播放 锁屏

    初始化AudioSession和基本配置 音频播放器采用的AVPlayer ,在程序启动的时候需要配置AudioSession,AudioSession负责应用音频的设置,比如支不支持后台,打断等等, ...

  3. iOS 微信消息拦截插件系列教程-(总目录)

    微信iOS消息拦截插件教程 标签: 越狱开发 背景介绍 本教程所有内容免费 本教程来源于一次知识分享,如果有需要了解更多的 请联系QQ:480071411 iOS逆向高级开发群:375024882 1 ...

  4. iOS 微信消息拦截插件系列教程-附录(服务端成果展示)

    微信iOS消息拦截插件教程 标签: 越狱开发 背景介绍 本教程所有内容免费 本教程来源于一次知识分享,如果有需要了解更多的 请联系QQ:480071411 iOS逆向高级开发群:375024882 服 ...

  5. ios微信自动播放音乐

    <!DOCTYPE html> <html> <head lang="en">     <meta charset="UTF-8 ...

  6. iOS开发——使用技术OC篇&简单九宫格锁屏功能的实现与封装

    简单九宫格锁屏功能的实现与封装 首先来看看最后的实现界面. 在这开始看下面的内容之前希望你能先大概思考活着回顾一下如果 你会怎么做,只要知道大概的思路就可以. 由于iphone5指纹解锁的实现是的这个 ...

  7. iOS微信运动 刷分

    修改 iOS微信运动的数据  很简单,这里记录下实现步骤. 首先要安装Theos,具体安装步骤就不说了.网上很多. 大体安装步骤: sudo brew install dpkg sudo brew i ...

  8. IOS AudioServicesPlaySystemSound 后台锁屏播放

    AudioServicesPlaySystemSound 想在锁屏后台播放报警提示音. 添加了UIBackgroundModes,audio,官方审核不通过! IOS的闹钟是怎么实现的,锁屏不能播放声 ...

  9. 不会吧,这也行?iOS后台锁屏监听摇一摇

    目录 背景介绍 探索过程 其他 APP 有没有类似功能 系统提供的摇一摇回调能否满足 其他方法能否实现 利用 CoreMotion 框架,监听加速计原始数据 通过加速计监听摇一摇 控制器相关逻辑和代码 ...

随机推荐

  1. shell 踩坑记

    变量赋值时,等号两边不能有空格: 在判断表达式中,不论是 [ -n "$1" ] 还是 [ -f  "$1" ] 都要在变量两侧加上双引号: 在使用与或非判断式 ...

  2. Sublime Text 2 Plugin Installation

    For Package Control installation, see the Installation Guide.   To install Emmet(ex Zen Coding), do ...

  3. js 停止事件冒泡 阻止浏览器的默认行为(阻止a标签跳转 )

    在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到"停止事件冒泡"和"阻止浏览器默认行为". 1..停止事件冒泡 JavaScript代码 //如果提供了 ...

  4. errcode 4103 invalid page hint 小程序模板消息推送遇到的坑

    invalid page hint一直提示这个坑爹的就是,我的小程序没发布之前,也就是测试版本用这个格式是可以的 /pages/myGroup/myGroup?groupid=22***但是发布成功以 ...

  5. windows c++ 错误汇总

    1.fatal error C1900 错误:fatal error C1900: “P1”(第“20081201”版)和“P2”(第“20080116”版)之间 Il 不匹配 检查之后发现jepgl ...

  6. Python day02 三元运算

     type  查看数据类型.2 **32  :2的32次方 .浮点的表示类型是小数,但是小数不仅仅包括浮点 浮点数用来处理实数,即带有小数的数字 三元运算:  result = 值1 if 条件 el ...

  7. Jenkins:基于linux构建ivy项目

    Jenkins:基于linux构建ivy项目 (二) 基于以上<Jenkins:VMware虚拟机Linux系统的详细安装和使用教程(一)>的配置再进行对ivy项目构建: 启动tomcat ...

  8. 解决ios微信页面回退不刷新的问题

    在回退后需要刷新的页面加以下js $(function () {   var isPageHide = false;   window.addEventListener('pageshow', fun ...

  9. android自定义文本框,后面带清空按钮

    android常见的带清空按钮的文本框,获得焦点时如果有内容则显示,否则不显示 package com.qc.health.weight; import com.qc.health.R; import ...

  10. JMeter插件之 BlazeMeter's XMPP----测试Openfire等

    JMeter也可以测试XMPP协议了,之前一直使用Tsung或者是直接写java代码结合Java request来进行,现在可以用BlazeMeter提供的插件来进行XMPP测试,无需过多编码. 首先 ...