文档章节

微信抢红包外挂

KingMing
 KingMing
发布于 2015/10/22 15:50
字数 1667
阅读 6480
收藏 34
点赞 1
评论 1

源码下载地址:https://github.com/lendylongli/qianghongbao

apk下载地址  : 百度云下载 http://pan.baidu.com/s/1qWBZwUK

前言

Codeboy微信抢红包是我在2015年春节过年期间编写的一个开源的兴趣项目,只要是将整个核心抢红包的流程编写出来,至于再复杂的一些操作就没深入研究。当这个项目发布后,也是反应挺大的,很多网友也找到我了与交流,也有做淘宝的人给钱让我去增加一些功能,当然我是拒绝的。

作者声明

在这里,我声明一下,我所做的是自己有兴趣的事情,只是通过开源的方式让大家去学习相关技术,并不是为了营利,而我也知道淘宝上有人直接拿我的应用去售卖,这些都是没经过我的允许,我也没有半点收益,我留下联系方式是为了方便开发者之间的讨论与学习,所以请商业合作的与小白不要加我QQ,谢谢。

技术详述

一开始大家都会觉得做一个Android外挂会汲取很多东西或者底层的东西,但当发现Android里有一个叫AccessibilityService的服务时,一切都变得很简单。

关于AccessibilityService

先看看官网的介绍Accessibility
Many Android users have different abilities that require them to interact with their Android devices in different ways. These include users who have visual, physical or age-related limitations that prevent them from fully seeing or using a touchscreen, and users with hearing loss who may not be able to perceive audible information and alerts...

Android官网详解accessibility

上面大概的意思就是Accessibility是一个辅助服务,主要是面向一些使用Android手机的用户有相关障碍(年龄、视觉、听力、身体等),这个功能可以更容易使用手机,可以帮用户在点击屏幕或者显示方面得到帮助等等。接下来就是查找相关API,看能做到哪个地步。

Accessibility相关API描述

当然accessibility除了可以辅助点击界面的事件外,还可以用作自动化测试,或者一键返回,是一个非常强大与实用的功能,具体实例可以看我另一个App虚拟按键助手 请往下载 GooglePlay市场 或 应用宝

关于抢红包的流程

在有以上的一些关于辅助服务的基础知识后,我们就可以分析怎样自动化抢红包。 大家使用过微信都知道,如果不是在微信的可见界面范围(在桌面或者在使用其它应用时),在收到新的消息,就会在通知栏提醒用户。而在微信的消息列表界面,就不会弹出通知栏,所以可以区分这两种情况。然后抓取相关关键字作进一步处理。

1、在非微信消息列表界面,收到通知消息的事件,判断通知栏里的文本是否有[微信红包]的关键字,有则可以判断为用户收到红包的消息(当然,你可以故意发一条包括这个关键字的文本消息去整蛊你的朋友)。然后,我们就自动化触发这个消息的意图事件(Intent);

2、在通知栏跳进微信界面后,是去到com.tencent.mm.ui.LauncherUI这个Activity界面。我们知道,红包的消息上,包括了关键字领取红包或者Viewid,那我们就根据这个关键字找到相应的View,然后再触发ACTION_CLICK(点击事件);

3、在点击红包后,会跳到com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI这个拆红包的Activity,当然老方法,找关键字拆红包id,然后触发自动化点击事件。

这样就可以完成整个自动化完成抢红包的流程了,所以核心就是找关键字,然后模拟用户点击事件,就这么简单。以下详细说一下代码的实现。

以下是通过DDMS工具里的Dump View Hierarchy For UI Automator 去分析微信UI结构。

使用AccessibilityService去一步步监听微信的动作

1、新建一个继承AccessibilityService的类,如QiangHongBaoService,然后在AndroidManifest.xml里声明组件,如下

<service
        android:label="@string/app_name"
        android:name=".QiangHongBaoService"
        android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
        <intent-filter>
            <action android:name="android.accessibilityservice.AccessibilityService"/>
        </intent-filter>
        <meta-data
            android:name="android.accessibilityservice"
            android:resource="@xml/qianghongbao_service_config"/>
    </service>

在meta-data里声明的是辅助配置,这个是Android4.0之后才支持的写法,在4.0之前的系统要在代码里声明。

2、在res/xml目录下生成辅助服务的配置文件qianghongbao_service_config.xml

<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_description"
android:accessibilityEventTypes="typeNotificationStateChanged|typeWindowStateChanged"
android:packageNames="com.tencent.mm"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="100"
android:accessibilityFlags=""
android:canRetrieveWindowContent="true"/>

android:description 这个是设置服务的描述,在用户授权的界面可以看到。

android:accessibilityEventTypes 这个是配置要监听的辅助事件,我们只需要用到typeNotificationStateChanged(通知变化事件)、typeWindowStateChanged(界面变化事件)

android:packageNames 这个是要监听应用的包名,如果要监听多个应用,则用,去分隔,这里我们只需要监听微信的就可以了

android:accessibilityFeedbackType 这个是设置反馈方式

FeedbackType 描述
feedbackSpoken 语音反馈
feedbackHaptic 触感反馈
feedbackAudible 表示声音(不是语音)反馈
feedbackVisual 视觉反馈
feedbackGeneric 通用反馈
feedbackAllMask 所有以上的反馈

详细看AccessibilityServiceInfo类文档描述

3、在以上都配置好后,我们就可以在QiangHongBaoService这个服务里进行编码了,要做的就是将整个UI跳转流程与逻辑串联起来。

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
    //接收事件,如触发了通知栏变化、界面变化等    
}

@Override
protected boolean onKeyEvent(KeyEvent event) {
    //接收按键事件
    return super.onKeyEvent(event);
}

@Override
public void onInterrupt() {
  //服务中断,如授权关闭或者将服务杀死
}

@Override
protected void onServiceConnected() {
    super.onServiceConnected();
    //连接服务后,一般是在授权成功后会接收到
}

具体内容请看源码

其它

如何防止外挂

在了解整个核心后,获取事件不外乎就是通过文本与id判断,那么就可以将文本改为图标方式,将id改为动态id(每次显示都是随机生成),这样一来就可以提高外挂的门槛。

如何发红包会安全点

现在抢红包就看谁的外挂工具反应够快,如何去干扰这些外挂,其实也有点小技巧,就是在发红包前,发送文本[微信红包],可以导致部分外挂工具失效。

版权归作者所有,转载请注明出处:http://www.happycodeboy.com/index.php/archives/10/

关于作者

英文名:Leon

个人博客:http://www.happycodeboy.com

Email:codeboy2013@gmail.com

QQ:730395591

本文转载自:http://blog.csdn.net/feifei454498130/article/details/43891781

共有 人打赏支持
KingMing
粉丝 5
博文 33
码字总数 3989
作品 0
厦门
加载中

评论(1)

4fun
4fun
好东西,mark
微信抢红包--Qianghongbao

Qianghongbao是一款微信抢红包的外挂软件。 效果预览 关于抢红包的流程 在有以上的一些关于辅助服务的基础知识后,我们就可以分析怎样自动化抢红包。大家使用过微信都知道,如果不是在微信的...

flytreeleft ⋅ 2016/03/24 ⋅ 0

微信、QQ自动抢红包外挂--QiangHongBao_

标题:微信、QQ自动抢红包外挂(绿色、无广告) 说明:该外挂仅供学习、娱乐,请勿用于其他用途,否则后果自负。 功能: 1、支持微信、QQ自动抢红包 2、支持手机待机下自动抢红包 3、优化代码...

苦逼攻城狮 ⋅ 2016/02/01 ⋅ 1

微信、QQ自动抢红包外挂(绿色、无广告--附源码)

说明:该外挂仅供学习、娱乐,请勿用于其他用途,否则后果自负。 功能: 1、支持微信、QQ自动抢红包 2、支持手机待机下自动抢红包 3、优化代码,抢红包更快、更稳 使用说明: 安装APP后,打开...

苦逼攻城狮 ⋅ 2016/01/29 ⋅ 0

Android微信抢红包外挂

这是一个自动化抢微信红包的源码,很简单的方式实现(找关键字的View然后自动点击),可以作为参考给大家看看。当然原理很简单,过程很复杂,因为主要是用到AccessibilityService这个辅助服务...

Leon李翊 ⋅ 2015/02/20 ⋅ 0

Android"挂逼"修炼之行---防自动抢红包外挂原理解析

一、前言 春节过年发个红包本来就是为了讨个喜庆,朋友亲戚之间的关系交流,但是现在随着技术变革,抢红包插件越来越多,导致现在不太愿意发红包了,特别是在一个多人群里,潜水的非常多,但...

jiangwei0910410003 ⋅ 2017/03/06 ⋅ 0

Android实现微信自动抢红包

Android实现微信自动抢红包 简介 本文介绍微信自动抢红包的实现方法,主要实现以下几个功能: 自动拆开屏幕上出现的红包 处于桌面或聊天列表时接收到红包信息时自动进入聊天界面并拆红包 日志...

oden ⋅ 2016/08/27 ⋅ 0

【码云周刊第 61 期】红包利器祝你开年大吉!

码云项目推荐 如果大家有抽奖的开源项目,也可以托管到码云上,我们会及时给予推荐。最后,如果你很喜欢以下提到的项目,别忘了分享给其他人哦! 1、项目名称:红包利器 RobRedPack 项目简介...

码云Gitee ⋅ 02/08 ⋅ 0

微信红包神设计:让人看到就想点!

     张小龙说到今年微信不会参加春节红包大战,原因一是微信作为一个工具,不应该有太多节日性的运营活动;其次微信用春节红包来带动更多人使用微信红包的使命已经完成。此举大有大侠名...

庖丁开发 ⋅ 2017/01/04 ⋅ 0

微信高并发资金交易系统设计方案——百亿红包背后的技术支撑

作者|方乐明 编辑|尾尾每年节假日,微信红包的收发数量都会暴涨,尤以除夕为最。如此大规模、高峰值的业务需要,背后需要怎样的技术支撑?百亿级别的红包规模,如何保证并发性能与资金安全...

umgsai ⋅ 2017/09/26 ⋅ 0

微信红包的随机算法是怎样实现的?

摘自知乎 ,答案来自:https://www.zhihu.com/question/22625187/answer/85530416 答案来自:https://www.zhihu.com/question/22625187/answer/85530416 有人问过微信的人,大致是这样: 先上...

北极之北 ⋅ 2016/02/23 ⋅ 3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 44分钟前 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部