文档章节

ios-微信自动抢红包插件

余成海
 余成海
发布于 2016/03/22 10:51
字数 632
阅读 2109
收藏 6

之前分享过如何搭建theos开发环境

这次分享下用theos开发一个微信自动抢红包的插件

微信相关类参考来自http://bbs.iosre.com/ ,大家也可以自己结合静态动态分析来找到微信关于红包的几个类

---------------------------------------又是凌乱分割线----------------------------------------

大概思路:在微信聊天界面中BaseMsgContentViewController,发现有红包出现WCPayC2CMessageNodeView,自动模拟点击事件onClick,弹出红包详情页WCRedEnvelopesReceiveHomeView,自动获取红包OnOpenRedEnvelopes

问题来了:

问题1:怎么知道红包什么时候出现呢?

答:通过勾取(- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath) 方法,当红包出现的时候会通过reloadData刷出红包,ios开发都懂的,这是必走的过程。通过获取cell中contentView的subViews找到WCPayC2CMessageNodeView就是说明有红包的出现

问题2:如何过滤掉已经抢过的红包

答:其实最好的办法就是能记录下打开过的红包id,但是从上面几个类的分析中没有分析出红包id的位置,大家可以看看这个红包详情页WCRedEnvelopesReceiveHomeView的data类型,红包id肯定在data里面,只是什么结构需要继续分析下

-(id)initWithFrame:(CGRect)frame andData:(id)data delegate:(id)delegate;
-(void)refreshViewWithData:(id)data;

我目前的做法是比较low,就是只查看最后一个cell的类型,如果是红包就打开,打开后会有打开提示语放到tableView的最后,所以不会重复打个一个cell

问题3:为什么要一直打开聊天界面才能自动抢红包,在首页不行吗?可能多个群在一起抢红包呢?

答:当然可以在首页做到直接抢红包了,只是需要分析底层消息体获取解析的代码,难度可能比界面分析要难很多。

当然,大神年年有,今年特别多,看这个 https://github.com/buginux/WeChatRedEnvelop 

------------------------------------------凌乱的分割线---------------------------------------------

我自问自答也是够了,上代码让大家看看吧

%hook BaseMsgContentViewController

%new
- (id)someValue {
	return objc_getAssociatedObject(self, @selector(someValue));
}
 
%new
- (void)setSomeValue:(id)value {
	objc_setAssociatedObject(self, @selector(someValue), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

%end

%hook BaseMsgContentViewController

- (id)tableView:(id)arg1 cellForRowAtIndexPath:(id)arg2
{
	UITableViewCell *cell = %orig(arg1,arg2);
	NSIndexPath *indexpath = arg2;
 	NSString *value = [self performSelector:@selector(someValue)];
  	if(indexpath.row + 1 == [value integerValue])
  	{
  		for (id subView in cell.contentView.subviews)
  		{
  			if([NSStringFromClass([subView class]) isEqualToString:@"WCPayC2CMessageNodeView"])
    		{    	
	   			[subView performSelector:@selector(onClick)];
   			}
  		}
 	}
	return cell;
}

- (long long)tableView:(id)arg1 numberOfRowsInSection:(long long)arg2
{
	long long result = %orig(arg1,arg2);
	[self performSelector:@selector(setSomeValue:) withObject:[NSString stringWithFormat:@"%zd",result]];
	return result;
}

%end

%hook WCRedEnvelopesReceiveHomeView

- (void)refreshViewWithData:(id)arg1 {
	%orig;
	[self performSelector:@selector(OnOpenRedEnvelopes)];
	[self performSelector:@selector(OnCancelButtonDone)];
}
%end


© 著作权归作者所有

共有 人打赏支持
余成海
粉丝 62
博文 57
码字总数 29577
作品 0
杭州
iOS工程师
私信 提问
IOS抢红包APP开发

一、项目描述 1、开发一个抢红包APP,在IOS场景下使用。 2、支持IOS7、8、9、10 系统 3、支持微信版本6.2.2至6.5.5 4、支持手机、平板 二、主要功能 1、支持设置哪些群不抢、哪些关键字不抢 ...

pengboli
2017/06/27
3
3
微信群自动抢红包,红包数据统计

【业务需求】 用途:微信群自动抢红包,统计红包抢完后的结果,昵称+金额 在微信群发红包和抢红包的流程如下: 1、我发一个拼手气的红包,总额1元,一共3个; 2、我自己点开红包抢得一个,金...

初昕工作室
2017/03/17
1
0
微信群自动抢红包,红包数据统计

【业务需求】 用途:微信群自动抢红包,统计红包抢完后的结果,昵称+金额 在微信群发红包和抢红包的流程如下: 1、我发一个拼手气的红包,总额1元,一共3个; 2、我自己点开红包抢得一个,金...

初昕工作室
2017/03/20
1
0
一键转发定制苹果(非越狱版)

基于微信的内置二次开发,详细需求如下:1、一键转发朋友圈、好友相册、陌生人相册的图片、文字、视频、链接2、一键转发语音给好友或者群聊,收藏夹语音、视频可直接发送到对话框3、虚拟定位到...

别让负能量击垮你
2017/11/24
0
0
BUF早餐铺 微软取代Facebook成为网络钓鱼者伪装的首选公司;iOS 12 beta 4:解锁才能使用USB配件;美女因窃取瑟琳娜戈麦斯账户信息被指控

  各位Buffer早上好,今天是2018年7月19日星期四,农历六月初七。今天份的BUF早餐内容主要有:微软取代Facebook成为网络钓鱼者伪装的首选公司;iOS 12 beta 4:解锁才能使用USB配件;美女因...

FreeBuf
2018/07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
2
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
3
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
2
0
推荐转载连接

https://www.cnblogs.com/ysocean/p/7409779.html#_label0

小橙子的曼曼
昨天
3
0
雷军亲自打造的套餐了解下:用多少付多少

12月28日消息,小米科技创始人兼CEO雷军微博表示,小米移动任我行套餐方案,原则上就是明明白白消费,用多少付多少,不用不花钱!上网、电话和短信都是一毛钱,上网0.1元/M,电话0.1元/分钟,...

linuxCool
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部