1. getevent命令

我们首先是根据adb shell getevent命令获取到被点击位置的信息。

这里要说明的是,不同的手机手机获得的点击输出是不一样的。以我的真机为例,输出如下

本文原创,转载请注明出处:Android开发——后台获取用户点击位置坐标(可获取用户支付宝密码)_SEU_Calvin的博客-CSDN博客_安卓获取点击坐标

/dev/input/event0 3 39 3e1
/dev/input/event0 1 14a 1
/dev/input/event0 1 145 1
/dev/input/event0 3 35 406  //x坐标
/dev/input/event0 3 54 1083  //y坐标
/dev/input/event0 0 0 0
/dev/input/event0 3 39 ffffffff
/dev/input/event0 1 14a 0
/dev/input/event0 1 145 0
/dev/input/event0 0 0 

我看到网上很多人的输出很简单,这样分析起来还比较简单。因厂家而异吧,我的输出就有些复杂,通过我的大量点击测试分析,在本机上,上面除了xy坐标,其他指令是固定的,当然我也获得很多其他指令(每一行的倒数第二个数),因为不是必须的,所以没列出来。经过查阅资料,其他信号的对应信息如下。

#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
#define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */
#define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */
#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */

2. sendevent实现模拟长按

我很好奇如果把输出的这些指令原封不动地给系统返还回去会有什么结果,我以为会是简单的重复点击,可是把1中获得的信号全部通过shell命令输入,获得的竟然是长按的效果。很意外,具体是因为什么我也不清楚。可能在其他手机上就不是这个效果了。

这里需要注意的是,我们获得的是16进制,输入必须是10进制,需要自行转换一下。

根据不同的分辨率,获得的16进制如何转换为真实的坐标值,这篇博文已经讲述的很详细了。

其他的比如模拟点击,滑动,输入等操作已经在前面使用ADB进行模拟点击的文章里介绍过了。

3. 密码获取

通过2中的链接文,已经介绍过了如何通过代码形式执行Shell命令。

这里当然是将“getevent”作为命令写入脚本啦。注意要开启子线程,否则会引起ANR。

然后就开启了用户点击,我们只要拿到Runtime.getRuntime().exec("su").getInputStream()流并分析“35”以及“36”后的16进制数,即可得到用户的点击位置。这个流是错误流和正确流分开的,注意处理不当会阻塞。可按照以下几种方法避免阻塞。

(1)可以通过将redirectErrorStream 属性设置为true合并错误流和正确流。

(2)显然可以想到两种流,开启两个线程去接收。

(3)在已知输出顺序的情况下,调整处理流的代码顺序。(不通用)

具体的如何从用户大量的点击事件中获取密码。便是根据算法来决定的了,算法越精密,获取到用户密码的可能性越大。

这里可以提供一个思路:

1. 通过Accessibility机制只监听支付宝。具体如何配置已经在Accessibility机制实现模拟点击中介绍过了。

2. 在获取到点击坐标之后,可以通过判断连续6个点均处于屏幕的下方来认为这是一组密码(当然是不准确的),具体的筛选密码的条件可以通过你的聪明才智去实现。

拿到密码之后,便可以通过模拟点击去实现自动转账了。这个前面已经使用ADB Shell命令实现模拟点击中介绍过了。

Android开发——后台获取用户点击位置坐标(可获取用户支付宝密码)相关推荐

  1. Android点击按钮显示密码,Android 开发仿简书登录框可删除内容或显示密码框的内容...

    简书App 是我很喜欢的一款软件.今天就模仿了一下他的登录框.先上图: 好了下面上代码,自定义ImgEditText 继承与EditText.重写一些方法. package lyf.myimgedit ...

  2. android 仿简书评论,Android 开发仿简书登录框可删除内容或显示密码框的内容

    简书App 是我很喜欢的一款软件.今天就模仿了一下他的登录框.先上图: 好了下面上代码,自定义ImgEditText 继承与EditText.重写一些方法. package lyf.myimgedit ...

  3. 新大陆物联网Android开发实战(一)通过接入API文档获取新大陆物联网官网Logo-GETPOST多线程实战-网络资源下载

    目录 一.背景 二.思路与实施 权限配置: 布局设计: 布局代码: 接口类实现代码: DownLoad类代码: 三.文章总结 四.源码下载 一.背景 本文章是针对新大陆物联网竞赛,其中Android开 ...

  4. Android开发之百度地图经纬度转换地址(以及获取详细地址的方法自测成功)

    方法一: 直接粘贴代码 GeoCoder mSearch = GeoCoder.newInstance();mSearch.setOnGetGeoCodeResultListener(new OnGe ...

  5. Android开发笔记(一百四十四)高仿支付宝的头部伸缩动画

    Android5.0推出的MaterialDesign库包含了处理头部工具栏的多个控件,不但允许自定义顶部导航栏,而且导航栏高度是可以伸缩的.如此一来,一方面导航栏能够放得下更多控件,另一方面在用户想 ...

  6. 前端 vue 使用高德地图组件:(二)获取鼠标点击位置坐标 和 图标覆盖物拖动后的坐标

    上一篇文章,我们已经成功加载了地图并设置了自定义的图标覆盖物,但是在业务开发中,对地图的运用肯定不是到此为止,对地图组件的操作经常需要坐标值的参与,这篇文章就是简单介绍下坐标值的获取 一:我们可以给地 ...

  7. Cesium获取当前点击位置坐标

    获取点击坐标一般情况下有三种,分别是获取椭球面上的坐标,或者开启地形图以后的坐标,以及拾取模型上面的坐标. ps:如果当前点无法获取到坐标,会返回undefined. 下面提供三种情况下的点击事件代码 ...

  8. Android开发:recycleView页面点击跳转

    对带有recycleView的页面进行点击跳转 比如,某一tab页是新闻列表,则点击某一行能跳转到新闻详情页面 主要步骤 一.设计recycleView页面 1.因为我们需要在消息界面建一个消息列表, ...

  9. Android开发之和风天气篇:1、获取天气信息

    TIME:2020年7月6日 :1.获取天气信息 和风天气API使用方法: step1 申请天气接口 step2 天气接口初始化 step3 选择服务模式 step4 通过URL请求数据 step5解 ...

最新文章

  1. Session原理、安全以及最基本的Express和Redis实现
  2. 基于成像激光雷达的鲁棒位置识别
  3. 条件随机场的矩阵表示
  4. python画笑脸-python 利用turtle库绘制笑脸和哭脸的例子
  5. 一个自定义 HBase Filter -“通过RowKeys来高性能获取数据”
  6. 数据库 创建 / 查看/ 删除
  7. MFC- OnIdle空闲处理
  8. 三星开出的57619美元年薪 却还是留不住千禧一代
  9. Js与flash交互:在html页面中用js与MyReport插件交互
  10. POJ - 1008 Maya Calendar
  11. TZOJ 1545 Hurdles of 110m(01背包dp)
  12. html5妇女节游戏,三八妇女节趣味小游戏
  13. eclipse报错 错误: 找不到或无法加载主类
  14. 使用redis的setnx可以非同一线程进行加锁和解锁(附源码)
  15. ubuntu更新镜像源
  16. python进程已结束 退出代码0_PyCharm:进程以退出代码0结束
  17. 解决硬盘自动休眠问题
  18. 公众号服务器配置如何不显示,公众号服务器配置信息怎么设置
  19. 凤凰刷机 教你S40刷机,原来刷机和破权不一样!!
  20. Rust的前景怎么样?值不值的学—Rust对比、特色和理念

热门文章

  1. recyclerview 添加头部脚步
  2. 中国自动驾驶行业研究——商业化落地脚步加速
  3. hujingwei oracle_Oracle高水位线(HWM)及性能优化
  4. 插入图片和背景图片区别
  5. 记录一下常见的网络连接问题及解决方案
  6. 购物管理系统(管理员,客户)
  7. N5105小主机/软路由-AIDA64监控模板分享
  8. Windows Vista Sample Credential Providers Overview 中文翻译
  9. 将数据库的数据传输到另一个数据库
  10. 【JAVA项目实战】【图书管理系统】用户添加功能【Servlet】+【Jsp】+【Mysql】