文档章节

ios-微信自动抢红包插件

余成海
 余成海
发布于 2016/03/22 10:51
字数 632
阅读 2102
收藏 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


© 著作权归作者所有

共有 人打赏支持
余成海
粉丝 61
博文 57
码字总数 29577
作品 0
杭州
iOS工程师
BUF早餐铺 微软取代Facebook成为网络钓鱼者伪装的首选公司;iOS 12 beta 4:解锁才能使用USB配件;美女因窃取瑟琳娜戈麦斯账户信息被指控

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

FreeBuf
07/19
0
0
如何做好iOS应用安全?这有一把行之有效的“三板斧”

本文由 网易云 发布 iOS应用面临很多破解问题,常见的有IAP内购破解、山寨版本、破解版本等;大众应用上,微信抢红包、微信多开等;而在iOS游戏上,越来越泛滥的外挂问题也不断困扰着游戏厂商...

wangyiyungw
05/15
0
0
苹果与微信“短兵相接” “神仙打架”不能让用户买单

苹果与微信此次“短兵相接”,更多反映出两大巨头关于游戏规则的一场“暗战”。即便如此,也绝不能将绑架用户利益、通过随意更改产品功能,作为自己占领高地的“撒手锏”。无论苹果还是微信,...

六库科技
06/08
0
0
iOS逆向篇之微信抢红包(下)

上文已经知道收到红包消息与开红包方法,那么只需在收到红包消息时,调用开红包方法,就可以完成自动抢红包 完整的工程地址 一 红包消息时调用开红包方法 上篇hook到了收到红包消息的方法就是...

meryin
05/29
0
0
iOS使用Objective-c自定义cordova插件(-)

本系列教程为博主初次使用开发,内容如有差错,欢迎指正,敬请谅解。 博客地址:http://blog.img421.com/iosshi-yong-object-czi-ding-yi-cordovacha-jian/ Mac安装ionic和cordova我们已经熟悉,...

Michaelyn
2017/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

可爱的python测试开发库(python测试开发工具库汇总)

欢迎转载,转载请注明来源: github地址 谢谢点赞 本文地址 相关书籍下载 测试开发 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装。 链接 selenium - web UI自动化测试。 链...

python测试开发人工智能安全
52分钟前
2
0
Shiro | 实现权限验证完整版

写在前面的话 提及权限,就会想到安全,是一个十分棘手的话题。这里只是作为学校Shiro的一个记录,而不是,权限就应该这样设计之类的。 Shiro框架 1、Shiro是基于Apache开源的强大灵活的开源...

冯文议
今天
1
0
linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
今天
2
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
今天
3
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部