RT,因为有时候 App 会被自动化脚本操作,而很多脚本(尤其群控)都是通过 ADB 来执行指令的,所以在自动化工具没有 Service 无法检测的情况下,就想通过检测 ADB 指令来检测。
通过 https://stackoverflow.com/questions/12692103/read-logcat-programmatically-within-application 这类文章知道了用 Runtime + BufferReader 的方式来读 Logcat,但是只能读到自己的和少量的系统全局的 Logcat,所以请问有办法实时获取 ADB 的日志 /执行的指令么?谢谢大家~
1
gam2046 2020-03-02 01:10:12 +08:00 1
1、要求用户手动通过 adb 启动一个 daemon ( app_process ),获取 logcat,并反馈给应用程序
2、应用获取 root 或 shell 权限后(即 uid 变更为 0 或 2000 ),通过 Runtime 执行 logcat 获取 3、将应用变更为系统应用,通过 Runtime 执行 logcat 获取(以下二选一) 3.1、应用安装位置为 system/priv-app 3.2、应用具有 platfroms 签名,并且 AndroidManifest 申明 android:sharedUserId="android.uid.system" 如果不满足以上任何一条,就可以洗洗睡了。考虑从其他角度对抗自动化操作,例如获取加速计、陀螺仪信息,加速度一直为 0,角方向一直没有任何变化,显然不符合用户使用场景。内网发广播,自主发现等,判断异常环境。 |
2
calloc 2020-03-02 06:59:26 +08:00 via Android
如果有 root 权限,hook adbd 进程或者自己编译个修改过的 adbd 放入系统可以读到 adb 执行了什么命令
|
3
hhhsuan 2020-03-02 15:34:47 +08:00
我是没看懂你的目的是什么, 为什么要读 adb 指令? 难道是 app 想知道脚本发了什么指令? 由脚本告诉 app 不行吗?
|
5
zhbzhbzhbz OP @gam2046 谢谢~前面几个我也想到了,请问内网发广播是指?
|