文|李伊洋 易易盾 Android 安全工程师
群控功能:区别于模拟点击工具,群控系统一般由多个部分组成,例如在手机端运行的服务、在手机端用于模拟输入的输入法、在 PC 端用来对所有设备操作与监控的中控台、在服务器中运行的连接所有设备的服务端等。
群控系统的组成:作为一个系统,群控系统由 PC 中控模块、手机通信模块、功能实现模块三部分组成,但是不一定每个模块都是独立或是独一的,用某智控产品举例,只有 PC 中控软件与一个 APK 安装包两个软件,而某助手软件包含 PC 中控软件、输入法 APK、通信 APK、UIAutomator 功能 APK 四个软件。
一、PC 中控模块
PC 中控软件是整个系统的核心。核心功能可以分为对设备的监控与控制、对脚本的编写与控制两个部分。
对设备的监控是指会有大量的设备屏幕在这里被展示,通过颜色或是一些小标志,可以看到对应设备的手机通信模块是否正常运转。当指令下发时,没有正确执行指令的设备,由于屏幕不一致就会显现出来。黑灰产厂商能够快速排查问题,保证设备墙正常运转。这部分功能依赖于 adb 或是 络通信,做法可以根据手机内的通信模块而改变。
同时部分中控软件也支持脚本市场的功能,可以直接编写脚本开发人员已经编写好的脚本。
二、手机通信模块
主要用于对 PC 中控软件的指令进行解析,以及将屏幕图像传递给 PC 中控软件。以某老牌群控软件为例。
接受指令:
三、功能实现模块
每个群控系统都有他们特有的做法用来实现具体的功能。在整个群控系统中,这个模块是最接近被保护应用的,目前的检测思路主要也是围绕功能模块进行。下文会对这里提到的各个功能进行更具体的分析。
获取 Activity 结构:脚本开发和使用中,都需要获取到 View 的信息。为了获取这个信息,需要手机内的功能模块辅助完成。
功能模块原理
模拟点击:模拟点击的具体内容可以查看之前发过的 Android 模拟点击研究相关文章。
控件查找:控件查找对于任何一个群控系统与自动点击工具来说都是必备功能。除开通过 opencv 库做到的找图和 OCR 找字之外,对于控件查找更重要的能力在于对其属性的获取。例如一个界面中若是有两个都是长得一模一样的按钮,那么不论是找图还是 OCR 都只会返回第一个值,后一个按钮就失效了。
于是出于脚本稳定性考虑,群控系统和自动点击工具都会想方设法去获得控件的属性,例如唯一标识的 ID。
以现有的样本为例,群控系统获得控件属性的办法有两种,分别是类 Auto.js 做法与类 UIAutomator 做法。
类 Auto.js :该做法依赖于无障碍服务,所以需要注册无障碍服务,但并非所有软件都需要注册该服务
*/com.stardust.autojs.core.accessibility.AccessibilityService
优点:开发容易且稳定。缺点:依赖无障碍服务,通过获取无障碍服务列表可以检测。
大致思想是将 UIAutomator 调试桥植入设备,然后可以通过 adb shell uiautomator dump 命令,将当前的 activity 的树状结构 dump 成一个 xml 形式,然后解析该 xml,就可以得到 activity 中的所有控件属性。
可以看到在没有使用无障碍服务的情况下,获得了所有的 View 信息。
模拟点击:模拟点击方式通过 adb 权限,MotionEcent.obtain 模拟,injectInputEvnet 注入,易盾 Android 反外挂能力已经拥有了对这种模拟行为的检测能力。点击免费试用 易易盾反外挂产品

安装包:在上文中提到过的相关模块,都可以作为检测的依据。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!