adb shell input注入事件的底层实现与INJECT_EVENTS一致,但由于需要ADB连接,可以通过检测ADB相关环境状态来辅助识别:
检测ADB是否开启:通过Settings.Global.ADB_ENABLED系统设置项判断ADB调试是否启用
检测USB连接状态:通过ACTION_BATTERY_CHANGED广播获取充电类型,判断是否通过USB供电(BATTERY_PLUGGED_USB)
检测ADB端口是否打开:扫描本地常见ADB端口(5555、5554-5560等),尝试Socket连接判断端口是否监听中,适用于无线调试和模拟器场景
检测调试器状态:通过android.os.Debug.isDebuggerConnected()判断是否有调试器连接
检测USB ADB状态:通过反射读取sys.usb.state系统属性,判断USB状态是否包含"adb"字样
这些ADB环境信息结合操作事件发生的时间点进行关联分析,可以有效评估当前应用存在非人操作的可能性。