通过INJECT_EVENTS注入的事件虽然发生在系统底层较难被应用层检测,但仍有一些可识别的特征:
事件属性缺失:
- 注入事件可能缺少压力值(pressure为0)
- 缺少触摸面积(size为0)
- 工具类型为TOOL_TYPE_UNKNOWN
事件标志位异常:
- flags中包含
FLAG_IS_GENERATED_GESTURE(0x08000000),表示是程序生成的手势
事件来源异常:
- 事件source为
InputDevice.SOURCE_UNKNOWN
检测代码逻辑通常综合以上三种方法:先检查基本属性是否缺失,再检查标志位是否异常,最后检查事件来源。但需要注意,没有非常可靠的单一方法可以100%检测出注入事件,因为高级注入可以伪造这些属性。建议采用多维度综合检测方式,结合行为特征和环境特征提升识别成功率。