检测 ADB 服务器是否在 Android 上 运行?
Detect if ADB server is running on Android?
我正在尝试检测 Android 设备上的 adb server
是否为 运行,作为我的免费游戏的反作弊实施的一部分。
具体来说,我想停止使用 adb shell input tap x,y
,因为该游戏是一款多人益智竞技游戏。
我尝试过的事情:
使用电池信息我可以检测USB是否插入。嗯,这也是合法的使用。
使用 Settings.Secure
或 Settings.Global
,我可以查询 ADB_ENABLED
,但如果启用了 adb,那总是 returns 1
。它不考虑 adb 连接与否!
正在查询所有系统服务,但我看不到任何看起来像 adb 服务的东西。
在这一点上,我没主意了。希望其他人知道该怎么做?
您可以检查 运行 adbd
进程或查询 init.svc.adbd
系统 属性:
$ ps adbd
USER PID PPID VSIZE RSS WCHAN PC NAME
root 14947 1 4596 208 ffffffff 00019358 S /sbin/adbd
$ getprop init.svc.adbd
running
在 Android 中,adb
驱动程序作为通用 usb
驱动程序的功能实现。您可以检查当前启用的 usb
函数的(逗号分隔)列表,看看它是否包括 "adb"
:
$ cat /sys/devices/virtual/android_usb/android0/functions
mtp,adb
但是当您的应用 运行 完全在用户控制的设备上时,您将无法停止作弊。
我正在尝试检测 Android 设备上的 adb server
是否为 运行,作为我的免费游戏的反作弊实施的一部分。
具体来说,我想停止使用 adb shell input tap x,y
,因为该游戏是一款多人益智竞技游戏。
我尝试过的事情:
使用电池信息我可以检测USB是否插入。嗯,这也是合法的使用。
使用
Settings.Secure
或Settings.Global
,我可以查询ADB_ENABLED
,但如果启用了 adb,那总是 returns1
。它不考虑 adb 连接与否!正在查询所有系统服务,但我看不到任何看起来像 adb 服务的东西。
在这一点上,我没主意了。希望其他人知道该怎么做?
您可以检查 运行 adbd
进程或查询 init.svc.adbd
系统 属性:
$ ps adbd
USER PID PPID VSIZE RSS WCHAN PC NAME
root 14947 1 4596 208 ffffffff 00019358 S /sbin/adbd
$ getprop init.svc.adbd
running
在 Android 中,adb
驱动程序作为通用 usb
驱动程序的功能实现。您可以检查当前启用的 usb
函数的(逗号分隔)列表,看看它是否包括 "adb"
:
$ cat /sys/devices/virtual/android_usb/android0/functions
mtp,adb
但是当您的应用 运行 完全在用户控制的设备上时,您将无法停止作弊。