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

请教一下,安卓用 adb 模拟点击可以被检测到吗?

  •  
  •   euph · 2023-09-08 12:02:49 +08:00 · 9021 次点击
    这是一个创建于 377 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,想写个脚本自动操作手机,比如类似钉钉打卡什么的,那么用 adb 模拟的点击能被 app 检测到不是真实点击吗?还有,如果我手机连接蓝牙外设操作的话,这个操作也可以区分出来不是真实点击吗?
    20 条回复    2024-03-07 16:45:32 +08:00
    leonme
        1
    leonme  
       2023-09-08 12:24:51 +08:00 via iPhone
    区别不出来
    x500
        2
    x500  
       2023-09-08 12:28:11 +08:00
    当然可以被检测出来
    itskingname
        3
    itskingname  
       2023-09-08 12:42:03 +08:00   ❤️ 2
    adb 模拟点击有两种方案检查:
    1. 每次点击的坐标完全一样。
    2. hook uiautomator 里面的 click 函数,被调用的时候能发现
    flyqie
        4
    flyqie  
       2023-09-08 12:57:43 +08:00 via Android
    连接蓝牙外设 + 每次随机漂移少许坐标。

    根本无法检测。
    dusu
        5
    dusu  
       2023-09-08 13:15:57 +08:00 via iPhone
    @flyqie 我最近也在研究这块,除了刷抖音的那种蓝牙按键成品外,有没有那种可开发或者 diy 的外设蓝牙产品?老哥方便给个关键词?
    QinYu0226
        6
    QinYu0226  
       2023-09-08 13:29:26 +08:00 via Android
    肯定不能分辨的,除非他被你授权了 root 权限。或者它是病毒,它自己获取了你的 root 权限,再来监控你。这个都已经属于投放病毒的性质了。
    karatsuba
        7
    karatsuba  
       2023-09-08 13:50:02 +08:00
    单论技术层面不可能被检查出来
    Vegetable
        8
    Vegetable  
       2023-09-08 13:50:09 +08:00
    @itskingname 可以加入随机,并用短 swipe 而不是 tap 来模拟点击,这些做起来很容易
    forQ
        9
    forQ  
       2023-09-08 14:10:33 +08:00
    我司已将打卡手机绑定数量限制为 1 台,不能通过此法作弊了
    InkStone
        10
    InkStone  
       2023-09-08 14:12:10 +08:00
    现在模拟点击检测都上模型了。通过分布模式识别来检测,理论上是能检测的,不过打卡这里有没有用上我很怀疑
    xingchenxf
        11
    xingchenxf  
       2023-09-08 14:31:00 +08:00   ❤️ 1
    @itskingname hook uiautomator 里面的 click 函数,是指 UiDevice 里的 click 函数? 模拟点击的时候,都调不到本进程的这个函数吧,如何能 hook ?
    SoyaDokio
        12
    SoyaDokio  
       2023-09-08 14:39:57 +08:00
    打卡的话,可以考虑用一个手机专门打卡,然后放公司用远程控制方式操作,方案成熟稳定,且回避了#9 老哥提到的限制绑定数量问题。
    当然也有带来的问题,就是下班时间给你发的消息看不到了,没法加班(逃
    hefang
        13
    hefang  
       2023-09-08 16:21:55 +08:00
    adb 模拟点击检测不出来,也没有必要去做检测,因为有更方便检测的,
    就是你的打卡经纬度数据一个月都不带变的,这很容易就判定了。
    我司用钉钉,
    行政已经发邮件警告模拟打卡的了。
    sadfQED2
        14
    sadfQED2  
       2023-09-08 17:06:21 +08:00 via Android
    要看你通过哪种方式提权,如果是通过无障碍接口提权进行点击的话是可以检测的。

    如果是 root 以后直接往设备文件里面写命令的话没法检测

    还有一种提权是通过 xposed hook 安卓系统函数,这种也没法检测
    sardina
        15
    sardina  
       2023-09-08 18:24:15 +08:00 via iPhone
    adb 模拟点击 检测不出来,但是安卓上的 adbd 进程可是会被 app 读到的,再加上一些其他的行为验证,应该就差不多可以定位你了
    euph
        16
    euph  
    OP
       2023-09-08 20:15:49 +08:00
    @hefang 那有的人就是每天坐到工位上才打卡咋办
    MLawliet
        17
    MLawliet  
       2023-09-09 11:12:43 +08:00   ❤️ 1
    adb shell input 容易被检测,因为 dispatchTouchEvent() / onTouchEvent()里接收到 event 的 deviceId==-1,是 virtual device
    root 后,直接向/dev/input/event* 里写数据应该是检测不到的
    justfun
        18
    justfun  
       2023-09-10 12:27:07 +08:00
    @dusu ios 端有个这 实现原理跟你说的一样 http://ecdoc.laoleng.vip/iosdocs/
    hefang
        19
    hefang  
       2023-09-11 09:11:01 +08:00
    @euph #15 同一个位置也会有精度差异,不是一层不变的,但是模拟的位置信息就是一层不变的,具体怎么判定是 DD 的做的逻辑,不要小看那帮 B 。
    djby
        20
    djby  
       196 天前
    推荐用 NewDesk 远程控制,可以用 adb 控制,目前使用正常,不会被检测到,但是用无障碍已经被检测到了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4760 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:51 · PVG 11:51 · LAX 20:51 · JFK 23:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.