Android Accessibility实践 程序检查微信被删好友

xiaoxiao2021-02-28  8

原理

通过Android 无障碍辅助功能实现模拟点击控件来实现检查被删好友有两种方法:

向好友发送一条消息,如果对方已经把你删除,则消息发送失败。

建群法:新建一个不大于40人的群,如果其中有好友已经把你删除,微信会有条消息提示

整体执行步骤:启动微信->点击+号->发起群聊->选择35个联系人->点击确定->点击群里详情->删除并退出,依次轮询执行,知道所有好友轮询结束

本文采用建群的方式进行检查。

本人微信有300好友,全部检测一遍只需3分钟即可,亲测已经成功,但是建群没有超过40人 会有个别好友会受到打扰消息,可能是微信哪里的bug,具体原因未知。

说明和app预览

此软件通过无障碍辅助进行模拟点击,无任何外挂木马,无封号风险

使用方法

Android 手机一部,登录微信账号

安装辅助软件apk下载地址请点击这里(https://raw.githubusercontent.com/wlj32011/InspectWechatFriend/master/app-release.apk)

打开辅助软件-点击打开辅助功能按钮,跳转到无障碍辅助设置把辅助开关打开。

点击开始检查按钮,开始一系列的模拟点击,检查完成后会跳转到一个列表会把被删好友列表展示出来。

2

实现步骤

   

新建Android Studio 工程,新建一个Services类集成AccessibilityService,实现对应方法,详细介绍见代码注释

在manifests.xml文件中注册此服务:

新建res/xml/inspect_wechat_friend.xml文件

实现对某个控件的点击

通过getRootInActiveWindow方法获取当前窗口信息,通过findAccessibilityNodeInfosByText方法找到当前对应控件进行模拟点击

在当前页面查找文字内容并点击

检查viewId进行点击

在当前页面查找对话框文字内容并点击

监听窗口事件

获取当前窗口的classname 通过classname进行判断当前手机处于某个界面下面代码逻辑:

如果当前为微信主页面,则点击+号然后点击发起群聊

如果当前页面为创建群聊选择联系人界面,则开启一个while循环模拟滚动时间以及点击选择框,当选择用户到39人时,则模拟点击确定按钮发起群聊。

发起群聊后,微信会返回哪些用户不是你的好友,这个时候,取到当前控件的字符串并截取用户列表保存到本地。

获取到不是好友的用户后,点击右上角进入群聊详情,点击删除并退出

退出后又回到微信主页面,依次执行1 2 3 4步骤,直到滚动到联系人最底部为止。

当所有用户执行完成后,则启动检查结果界面,列出所有被删好友。

下面为对应逻辑代码:

监听手机当前窗口状态改变 比如 Activity 跳转,内容变化,按钮点击等事件

模拟创建群组步骤

退出群组步骤

模拟获取被删好友列表步骤

3

ui automator viewer的使用

   

uiautomatorviewer可以检查当前手机的布局结构,如果想更精确的找到控件位置,uiautomatorviewer必不可少!

使用方法:

搭建Android开发环境,并设置环境变量,这里就不说了。

在Android Studio 中打开 terminal 窗口,或者在终端直接执行命令

$uiautomatorviewer

整体效果图:

项目源码github地址:

https://github.com/wlj32011/InspectWechatFriend

转载请注明原文地址: https://www.6miu.com/read-2250002.html

最新回复(0)