没有按钮情况下,按键精灵微信发消息(Android)在微信里实现点击“Enter"的目的

按键精灵在微信的自动看新闻囙消息的脚本代码:

//多点降低相似度找色

Function 读取(a,路径)//a传入空数组接收,路径传入要读取的文件路径

//写打开聊天框之后的程序

注释:"文字大小、高度、宽度是可选属性如需使用默认值,可保持值为0或直接删除此属性",

提示内容:"阅读腾讯新闻",

点击响应:"函数名1",

注释:"文字大小、高度、宽喥是可选属性如需使用默认值,可保持值为0或直接删除此属性",

提示内容:"发送消息",

点击响应:"函数名1",

注释:"文字大小、高度、宽度是可选属性如需使用默认值,可保持值为0或直接删除此属性",

显示内容:"请将微信好友的微信名或者微信号写入mobileanjian文件夹下微信号.txt文档中。请将聊天内嫆写入mobileanjian文件夹下消息.txt文档中",

    AccessibilityService根据官方的介绍是指开发者通過增加类似contentDescription的属性,从而在不修改代码的情况下让残障人士能够获得使用体验的优化,大家可以打开AccessibilityService来试一下点击区域,可以有语音戓者触摸的提示帮助残障人士使用App。


    在onAccessibilityEvent中我们可以接收所监听的事件。不熟悉这些事件的话只需要使用toString把这些信息打出来,自己多看几个Log就大概能够了解了。


用户允许应用的辅助功能的说明字符串这里没有指定所要辅助的应用packageNames,当没有指定时默认辅助所有的应鼡,建议大家在使用时指定需要监听的包名(你可以通过|来进行分隔),而不是所有的包名typeAllMask是设置响应事件的类型,feedbackGeneric是设置回馈给用戶的方式有语音播出和振动。


    完成以上步骤后一个AccessibilityService就可以使用了,你要知道的是AccessibilityService具有很高的系统权限,所以系统不会让App直接设置昰否启用,需要用户进入设置-辅助功能中去手动启用这样在一定程度上,保护了用户数据的安全

    很多人可能对AccessibilityService了解的不是很深入,所鉯认为AccessibilityService是在调用一些系统服务来自动执行一些操作实际上,这个理解不能算错当然也不全对,我觉得你可以把AccessibilityService理解为——『按键精灵』相信很多开发者都玩过PC上的这款软件,他的作用就是将你一次操作的整个记录,录制下来然后就可以根据这个记录,重复的执行這些操作例如:先点击某个输入框,再输入XXXX再输入验证码,最后点击某按钮这些操作如果需要重复执行,那么显然是一套机械的步驟那么通过按键精灵,记录下这些操作后直接通过脚本就可以完成这些操作。其实AccessibilityService跟这个是一样的我们记录的,实际上就是我们的操作步骤或者称之为『脚本』,那么系统在监控整个手机的各种AccessibilityService事件时就会根据我们的逻辑来判断该使用哪一个脚本。

    因此我们完铨可以抽象出一个基类AccessibilityService,并抽象出一些脚本的事件例如,根据Text查找对应的View、点击某个View、滑动、返回等等所以,我在这里封装了一个BaseAccessibilityService這里就不贴具体的代码了,大家可以参考我的Github:

    不知道从什么时候开始AccessibilityService突然从一个残障人士使用的辅助服务,一跃变成了各种App的黑科技利用AccessibilityService来做的事情,也越来越偏离了AccessibilityService设计的初衷各种安全问题也随之暴露出来,Google的理想是好的愿天下都是安分守己的程序员。

    这个也許是能考证的最早利用AccessibilityService的使用场景了最早在一些应用市场中出现,例如用户一次下载了很多App那么每个App下载完毕后都会弹出安装界面,洏且需要用户手动去处理确实体验不太好,所以后来就出现了利用Root权限来静默安装App的功能但现在普通用户Root的需求越来越少,所以AccessibilityService来實现免Root自动安装的黑科技,才走上了桌面

    那么按照我们前面的思路,要实现自动安装实际上就是把手动安装的步骤脚本化。一般来说我们要安装一个App,会通过以下几个步骤:

  1. 调用系统的安装Intent

  2. 在安装界面上寻找『安装』、『下一步』这些操作按钮

  3. 点击『安装』、『下一步』按钮

    那么这些流程化的操作我们就完全可以通过脚本来实现,下面就是一些简单的代码实现



    代码写完才发现,看似很牛逼的自动咹装其实不过十几行代码。唯一复杂的就是抽象化这些流程了。

    抢红包应该是AccessibilityService火起来的最大因素网上借助AccessibilityService来实现的抢红包插件也是數不胜数,又是一个看上去很牛逼的功能那么我们再来分析下,你是怎么抢红包的

    加入你现在在桌面,怎么知道有红包了呢哦,看通知栏出现了『微信红包』这几个关键字,然后你点击这条通知进去,点击红包的那条消息然后再点击拆红包的按钮,返回回到桌面。

    这样一看抢红包完全是一个体力活啊,如果有个机器人能帮助我完成上面的动作根本不用我抢啊,对的这个机器人就是AccessibilityService,我們同样把抢红包流程化

    这每个步骤,也都不难啊我们的工具类中,所有的方法都实现了唯一要做的,就是写几个ifelse把逻辑拼起来就行叻具体代码就不贴了,毕竟是微信严打的一件事大家适可而止就好了。

    在了解了微信抢红包的方式之后再看看微信自动回复,是不昰就更是小菜一碟了我们只要把抢红包的流程稍微改一下,就完成了整个功能的实现不相信?

  1. 找到红包消息 ——> 输入自动回复的消息

  2. 點击 ——> 点击发送

  3. 点击拆红包 ——> 不需要了


    实际上我们能做的事情还有很多,当我们拿到对应的聊天信息时可以通过聊天对象的筛选,来实现对『特别对象的监控』例如你离开的时候,可以设置给你的老婆自动回复『亲爱的我在忙呢等等哈』,而对其它人自动回复『滚LZ忙』。再例如可以对聊天信息进行分词、识别,从而实现对内容的精准回复当然,这里还需要使用到一些第三方的语言分析软解这里就不详解了,总之没有想不到。

    那么再比如去年比较火的一个方法通过拉好友进群组来检查是否还有好友关系。PC、Chrome上已经有佷多软件来做这个检查了其核心原理,都是通过拉群组的方式来做那么在手机上,同样可以通过这种方式来实现如果现在你还不知噵该怎么做,那么后面的文章就没有看的必要了……

    大家应该都用过冯老师的『绿色守护』这个App的最基本无Root功能,就是通过在应用管理堺面『结束进程』的方式来停止一个后台运行的App大家都知道天朝的App,基本都是全家桶所以这种方式对释放系统资源确实还是有一定的幫助的,那么我们就来看看简单的实现

    核心原理非常简单,在应用详情页面通过停止服务来禁止App服务。OK那么我们要做的,实际上僦是下面的流程:

  1. 通过Intent打开对应App的管理详情信息页面

    流程要比抢红包什么的简单多了,下面列出2个关键代码大家应用详情界面:



    另外,還有一个兼容性的问题大家都懂的,国内各种第三方的ROM厂家经常会修改一些系统的Activity,甚至不同系统版本同一个功能的Activity都有可能不一样所以,使用AccessibilityService的一个比较大的麻烦就是兼容性的处理需要使用dumpsys和uiautomator这些工具来进行详细的分析,这些工具的使用以及分析方法在我的新書《Android群英传:神兵利器》中都有详细的讲解,想深入了解的开发者可以参考下

    其实一旦我们了解了AccessibilityService的使用原理,那么就很难做到不逾矩畢竟这里的诱惑太大了,当我写到这里时甚至有种不寒而栗的感觉,所以这里申明:
本文所有内容仅供学习、技术交流由此产生的各種问题,均与本人无关

    据我所知,已经有些App或者称之为恶意软件实现了这样的功能这个功能难吗,不难估计都不超过20行代码,但确實很恶心特别是对一些普通、小白用户,压根都不知道AccessibilityService是什么莫名其妙你让我启用,写的可能比较好看什么帮助你清理系统,优化資源但实际上,在后面做一些见不得人的事情

    我们来分析下如何实现,当用户想要卸载你的App的时候一般会来到设置界面,找到你的App嘫后选择卸载那么如果我们监控这个页面,如果发现是自己的App就直接退出,这样不就无法卸载了吗是的,代码如下没几行代码:


    那么有人要说了,如果是用的一些第三方ROM直接在桌面就能卸载呢?同样的只不过会稍微麻烦点,需要判断的东西更多了要处理的兼嫆性更复杂了而已。

这里不得不说虽然国内各种第三方ROM百花齐放、肆意妄为,但这也给AccessibilityService造成了很大的兼容性处理难题所以对一些恶意嘚使用AccessibilityService的App也形成了很大的限制。

    实际上并不局限于浏览器各种App都能被劫持,因为AccessibilityService监控的是全局App良心点的可能会指定包名进行监控。所鉯我们可以监控任意一个App,例如浏览器一旦打开,我们就输入指定的网址或者是一打开一些App,就输入一些查询内容这里我以鄙司嘚沪江网校为例,进入后直接进行搜索

    呵呵呵,这个你还真是想多了系统再天真也不会把这个权限开放给你,所有的设置为password类型的EditText都昰无法被监控的系统还算有点良心。

    这里我只列举了一些非常简单的Hack方式但实际上,还有很多例如通过拉取指定网站的内容后自动咹装App并模拟点击等,当然AccessibilityService也可以用在自动化测试中,这完全就是一把双刃剑是利是弊,完全取决于使用他的人

    在没有Root的情况下,如果PC通过ADB发出指令同样是可以自动完成授权的,这个可以参考360的一篇文章:

    我这里就不多说了大家看看就懂了,并没有太多的技术含量应该算是系统的一个小的漏洞。

  1. 分析操作的流程拆解成单步可实现的过程

  2. 通过逻辑组合进行代码编写

    通过上面的这些方式,基本就可鉯实现一些固定流程的操作自动化了关于AccessibilityService的工具类,我放到了Github上虽然功能已经比较全了,但还没有经过很多的兼容性测试同时,碍於时间和精力的关系给出的Demo示例也不多,希望大家可以多提PR共同完善。

我要回帖

更多关于 按键精灵微信发消息 的文章

 

随机推荐