神器「金手指」,第3站-搶紅包軟體換個角度解析

一、前言

紅包應用越來越多,關於搶紅包插件/外掛,你想知道些實用知識嗎?

神器“金手指”,第3站-搶紅包軟件換個角度解析

二、分析

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

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

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

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

神器“金手指”,第3站-搶紅包軟件換個角度解析

三、實戰

1、新建一個繼承AccessibilityService的類,如QiangHongBaoService,然後在AndroidManifest.xml裡聲明組件,在meta-data裡聲明的是輔助配置,這個是Android4.0之後才支持的寫法,在4.0之前的系統要在代碼裡聲明。

2、在res/xml目錄下生成輔助服務的配置文件qianghongbao_service_config.xml

android:description 這個是設置服務的描述,在用戶授權的界面可以看到。

android:accessibilityEventTypes 這個是配置要監聽的輔助事件,我們只需要用到typeNotificationStateChanged(通知變化事件)、typeWindowStateChanged(界面變化事件)

android:packageNames 這個是要監聽應用的包名,如果要監聽多個應用,則用,去分隔,這裡我們只需要監聽微信的就可以了

android:accessibilityFeedbackType 這個是設置反饋方式

FeedbackType描述

feedbackSpoken 語音反饋

feedbackHaptic 觸感反饋

feedbackAudible 表示聲音(不是語音)反饋

feedbackVisual 視覺反饋

feedbackGeneric 通用反饋

feedbackAllMask 所有以上的反饋

神器“金手指”,第3站-搶紅包軟件換個角度解析

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();

//連接服務後,一般是在授權成功後會接收到

}


分享到:


相關文章: