adb模拟快速点击屏幕


我们经常调试Android设备的时候, 会有类似打开Android开发选项中这种需要点击多次去点击才能触发后门的操作, 如果我们去做一些测试, 每次都要手动去做, 很麻烦, 我们可以考虑使用脚本完成.

我们一般去模拟去触摸屏幕上的某个点, 通常是利用getevent -l tp事件来拿到那个触摸的坐标值, 然后使用命令adb shell input tap x y来实现点击操作, 这种操作单次可以, 但是如果需要快速多次点击的话, 即使你死循环这个命令, 你还是会发现速度跟不上. 这是因为adbjava环境的, 发送到手机后, 系统需要去写文件, 然后响应事件, 所以会很慢.

这里假设tp的的事件是dev/input/event6, 通过命令cat dev/input/event6 > sdcard/event6, 点击一次, 将产生的数据重定向到sdcard/event6这个文件里, 按ctrl+c结束, 去cat这个文件会发现是乱码.

接下来就可以通过脚本实现快速点击了

adb shell "while : ; do dd if=/sdcard/event6 of=/dev/input/event6 ;sleep 0.1; done"  //可加0.1s的延时, 防止机器反应不过来

执行后你会发现点击速度很快.那么又有一个问题, 如果我们只需要快速点击20次就行, 不要一直快速点击该如何实现呢?

第一种方式:

adb shell "for i in `seq 1 20`; do dd if=/sdcard/event6 of=/dev/input/event6;sleep 0.1; done"

这种命令使用powershell执行是可以的, 但是bat就不行, 具体原因目前我还不清楚. 至于bash是否可以, 还没尝试. 理论上可行.

第二种方式:

我们将记录的单次数据改为记录多次就可, 还是利用命令cat dev/input/event6 > sdcard/event6, 快速点击直到触发隐藏界面, 按ctrl+c结束. 利用命令:

adb shell "dd if=/sdcard/event6 of=/dev/input/event6"

这个命令在batpowershell下都是可以成功执行的. 稍微难以控制的点就是你在快速点击的时候, 点击次数可能会过多, 这个需要稍微注意一下.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM