请问 AndroidApp 如何监听 ADB 信息?

2020-03-02 00:06:38 +08:00
 zhbzhbzhbz

RT,因为有时候 App 会被自动化脚本操作,而很多脚本(尤其群控)都是通过 ADB 来执行指令的,所以在自动化工具没有 Service 无法检测的情况下,就想通过检测 ADB 指令来检测。

通过 https://stackoverflow.com/questions/12692103/read-logcat-programmatically-within-application 这类文章知道了用 Runtime + BufferReader 的方式来读 Logcat,但是只能读到自己的和少量的系统全局的 Logcat,所以请问有办法实时获取 ADB 的日志 /执行的指令么?谢谢大家~

10391 次点击
所在节点    Android
5 条回复
gam2046
2020-03-02 01:10:12 +08:00
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,角方向一直没有任何变化,显然不符合用户使用场景。内网发广播,自主发现等,判断异常环境。
calloc
2020-03-02 06:59:26 +08:00
如果有 root 权限,hook adbd 进程或者自己编译个修改过的 adbd 放入系统可以读到 adb 执行了什么命令
hhhsuan
2020-03-02 15:34:47 +08:00
我是没看懂你的目的是什么, 为什么要读 adb 指令? 难道是 app 想知道脚本发了什么指令? 由脚本告诉 app 不行吗?
frantic
2020-03-02 16:48:07 +08:00
@hhhsuan 脚本不是自己的,可能是想防黑产吧
zhbzhbzhbz
2020-03-02 21:20:50 +08:00
@gam2046 谢谢~前面几个我也想到了,请问内网发广播是指?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/648974

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX