微信搶紅包外掛

源碼下載地址:https://github.com/lendylongli/qianghongbaophp

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

前言

Codeboy微信搶紅包是我在2015年春節過年期間編寫的一個開源的興趣項目,只要是將整個核心搶紅包的流程編寫出來,至於再複雜的一些操做就沒深刻研究。當這個項目發佈後,也是反應挺大的,不少網友也找到我了與交流,也有作淘寶的人給錢讓我去增長一些功能,固然我是拒絕的。html

做者聲明

在這裏,我聲明一下,我所作的是本身有興趣的事情,只是經過開源的方式讓你們去學習相關技術,並非爲了營利,而我也知道淘寶上有人直接拿個人應用去售賣,這些都是沒通過個人容許,我也沒有半點收益,我留下聯繫方式是爲了方便開發者之間的討論與學習,因此請商業合做的與小白不要加我QQ,謝謝。android

技術詳述

一開始你們都會以爲作一個Android外掛會汲取不少東西或者底層的東西,但當發現Android裏有一個叫AccessibilityService的服務時,一切都變得很簡單。git

關於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...github

Android官網詳解accessibility安全

上面大概的意思就是Accessibility是一個輔助服務,主要是面向一些使用Android手機的用戶有相關障礙(年齡、視覺、聽力、身體等),這個功能能夠更容易使用手機,能夠幫用戶在點擊屏幕或者顯示方面獲得幫助等等。接下來就是查找相關API,看能作到哪一個地步。微信

Accessibility相關API描述app

固然accessibility除了能夠輔助點擊界面的事件外,還能夠用做自動化測試,或者一鍵返回,是一個很是強大與實用的功能,具體實例能夠看我另外一個App虛擬按鍵助手 請往下載 GooglePlay市場 或 應用寶ide

關於搶紅包的流程

在有以上的一些關於輔助服務的基礎知識後,咱們就能夠分析怎樣自動化搶紅包。 你們使用過微信都知道,若是不是在微信的可見界面範圍(在桌面或者在使用其它應用時),在收到新的消息,就會在通知欄提醒用戶。而在微信的消息列表界面,就不會彈出通知欄,因此能夠區分這兩種狀況。而後抓取相關關鍵字做進一步處理。工具

一、在非微信消息列表界面,收到通知消息的事件,判斷通知欄裏的文本是否有[微信紅包]的關鍵字,有則能夠判斷爲用戶收到紅包的消息(固然,你能夠故意發一條包括這個關鍵字的文本消息去整蠱你的朋友)。而後,咱們就自動化觸發這個消息的意圖事件(Intent);

二、在通知欄跳進微信界面後,是去到com.tencent.mm.ui.LauncherUI這個Activity界面。咱們知道,紅包的消息上,包括了關鍵字領取紅包或者Viewid,那咱們就根據這個關鍵字找到相應的View,而後再觸發ACTION_CLICK(點擊事件);

三、在點擊紅包後,會跳到com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI這個拆紅包的Activity,固然老方法,找關鍵字拆紅包id,而後觸發自動化點擊事件。

這樣就能夠完成整個自動化完成搶紅包的流程了,因此核心就是找關鍵字,而後模擬用戶點擊事件,就這麼簡單。如下詳細說一下代碼的實現。

如下是經過DDMS工具裏的Dump View Hierarchy For UI Automator 去分析微信UI結構。

使用AccessibilityService去一步步監聽微信的動做

一、新建一個繼承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以前的系統要在代碼裏聲明。

二、在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類文檔描述

三、在以上都配置好後,咱們就能夠在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

相關文章
相關標籤/搜索