V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhbzhbzhbz
V2EX  ›  Android

请问 AndroidApp 如何监听 ADB 信息?

  •  
  •   zhbzhbzhbz · Mar 2, 2020 · 14100 views
    This topic created in 2254 days ago, the information mentioned may be changed or developed.

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

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

    5 replies    2020-03-02 21:20:50 +08:00
    ntdll
        1
    ntdll  
       Mar 2, 2020   ❤️ 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  
       Mar 2, 2020 via Android
    如果有 root 权限,hook adbd 进程或者自己编译个修改过的 adbd 放入系统可以读到 adb 执行了什么命令
    hhhsuan
        3
    hhhsuan  
       Mar 2, 2020
    我是没看懂你的目的是什么, 为什么要读 adb 指令? 难道是 app 想知道脚本发了什么指令? 由脚本告诉 app 不行吗?
    frantic
        4
    frantic  
       Mar 2, 2020
    @hhhsuan 脚本不是自己的,可能是想防黑产吧
    zhbzhbzhbz
        5
    zhbzhbzhbz  
    OP
       Mar 2, 2020
    @gam2046 谢谢~前面几个我也想到了,请问内网发广播是指?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   917 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 18:28 · PVG 02:28 · LAX 11:28 · JFK 14:28
    ♥ Do have faith in what you're doing.