前言:本文主要讲述使用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. Lucene分词停用词库stopwords

    ! " $ % & ' ( ) * + , - -- . .. ... ...... ................... ./ .一 .数 .日 / // 0 1 2 3 4 5 ...

  2. Ajax 的用法

    1.什么是 Ajax? Ajax,英文名 Asynchronous JavaScript and XML,也就是异步的 JavaScript 和 XML.它不是一门新的语言,而是一种使用现有标准的新方 ...

  3. Webpack 2 视频教程 018 - 使用可视化图表进行统计分析打包过程

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  4. Nifi自定义processor

    有关nifi的基本介绍和架构可以参考nifi官网 一下介绍nifi的一些比较重要的类和自己的一些理解,我刚刚接触nifi: nifi的数据流可以表示为一个flow这是一个队列,每个数据包被封装在flo ...

  5. 在Ubuntu下安装OpenJDK的方法

    最近在看<深入理解Java虚拟机>就想试一下在ubuntu下安装一个自己的虚拟机,说实话还是废了些功夫的. 首先我的ubuntu版本是Ubuntu 14.04.5, 于是我就去OpenJD ...

  6. delphi各种错

    1. 保存文件form_spml时出上面的错,点yes后还是会出错. 解决:有时间要关闭delphi2006软件才会跳出“remove/redirect the links to another mo ...

  7. Java框架之Spring MVC(二)

    一.Spring MVC 验证 JSR 303 是ajvaEE6 中的一项子规范 ,叫 Bean Validation 用于对javaBean中的字段进行校验. 官方的参考实现是: Hibernate ...

  8. c语言贪吃蛇详解4.食物的投放与蛇的变长

    c语言贪吃蛇详解4.食物的投放与蛇的变长 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识 ...

  9. Oracle loop循环无法插入数据

    以下的测试基于scott用户下的emp表 首先用while循环进行测试,向emp表插入999条数据 declare i emp.empno; begin loop insert into emp(em ...

  10. TypeScript体验

    TypeScript 在线玩 http://www.typescriptlang.org/play/index.html ts最终编译成js  网站最终还是要引用js.  ts面向对象的感念更加直观, ...