V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhbzhbzhbz
V2EX  ›  Android

请问 AndroidApp 如何监听 ADB 信息?

  •  
  •   zhbzhbzhbz · 2020-03-02 00:06:38 +08:00 · 10194 次点击
    这是一个创建于 1745 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    5 条回复    2020-03-02 21:20:50 +08:00
    gam2046
        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,角方向一直没有任何变化,显然不符合用户使用场景。内网发广播,自主发现等,判断异常环境。
    calloc
        2
    calloc  
       2020-03-02 06:59:26 +08:00 via Android
    如果有 root 权限,hook adbd 进程或者自己编译个修改过的 adbd 放入系统可以读到 adb 执行了什么命令
    hhhsuan
        3
    hhhsuan  
       2020-03-02 15:34:47 +08:00
    我是没看懂你的目的是什么, 为什么要读 adb 指令? 难道是 app 想知道脚本发了什么指令? 由脚本告诉 app 不行吗?
    frantic
        4
    frantic  
       2020-03-02 16:48:07 +08:00
    @hhhsuan 脚本不是自己的,可能是想防黑产吧
    zhbzhbzhbz
        5
    zhbzhbzhbz  
    OP
       2020-03-02 21:20:50 +08:00
    @gam2046 谢谢~前面几个我也想到了,请问内网发广播是指?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:57 · PVG 18:57 · LAX 02:57 · JFK 05:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.