位置: 编程技术 - 正文

Android 键盘监控的实现原理及过程(怎么监控键盘输入)

编辑:rootadmin

推荐整理分享Android 键盘监控的实现原理及过程(怎么监控键盘输入),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android键盘监听,手机键盘监控专家,手机键盘监控软件,android键盘监听,android 监听键盘输入,android键盘监听,android键盘监听,手机键盘监控软件,内容如对您有帮助,希望把文章链接给更多的朋友!

键盘监控

键盘监控,顾名思义是在应用软件在运行时,用户在设备上的一举一动都将被详细记录下来,更多的实在使用者毫无觉察的情况下将屏幕内容以图片的形式、按键内容以文本文档的形式保存在指定的文件夹或发送到指定的邮箱。键盘监控,包括物理按键与软键盘的监控,通常监控的事件有:点击,长按,滑动等,这些时间在Android上表现出来的都是一系列的KeyEvent。

为了实现键盘的监控,从新开发一个输入法是不现实的,一般的操作就是在系统的输入法机制中添加接口回调。我们知道,再应用程序中拿到按键的回调一般是监听onKeyDown的接口,如下所示:

开发者就可以根据回调方法中的参数, keyCode与KeyEvent来判断具体事件。但是,由于事件的回调机制在其的沙箱中运行,在其他应用中是无法拿到当前应用事件回调的。

那么我们就从上到下,具体的看看事件的传递机制。如下图所示,用户点击后,软键盘或物理按键的输入驱动就会产生一个中断,且向/dev/input/event*中写入一个相应的信号量。Android操作系统则会循环的读取其中的事件,再分发给WindowManagerServer。由WindowManagerServer根据事件的来源分发到各个不同的ViewGroup与View中,从而产生不同的OnClick、OnKeyDown和OnTouch等事件。

这个时候很自然的想到,黑客们希望做键盘监控,一定会向Linux底层增加自定义的事件。这里我们使用的是Linux中的getevent获得/dev/input/eventX设备汇报的事件,这个命令还会输出所有event设备的基本信息。包括触屏、按键、耳机插入等等。其基本用法如下:

键入getevent后,我们能够看到设备中的一些列输入硬件驱动信息,同样下面会出现很多输入指令信号,通常情况下,这些信号量都在刷屏,如下图所示:

这些信号量的表示我们无法直接看懂,输入getevent –l加入Label我们能够看到一些添加的标签,如下所示:

Android 键盘监控的实现原理及过程(怎么监控键盘输入)

其实这些Lable已经在其input.h头文件中定义好,其中type的定义如下:

一般来说,常用的是EV_KEY、EV_REL、EV_ABS、EV_SYN,分别对应键盘按键、相对坐标、绝对坐标、同步事件。EV_SYN则表示一组完整事件已经完成,需要处理,EV_SYN的code定义事件分发的类型。

在触摸事件上的几个常见的Label说明如下表所示:

标签名说明ABS_X对应触摸屏的X坐标ABS_Y对应触摸屏的Y坐标ABS_PRESSURE压力&#;,一般触摸屏也只是区分是否有按下去,按下去的话&#;会大于多少,没有按的话&#;小于多少。ABS_TOOL_WIDTH触摸工具的宽度ABS_MT_POSITION_X接触面的形心的X坐标&#;ABS_MT_POSITION_Y接触面的形心的Y坐标&#;ABS_MT_TOUCH_MAJOR触摸手指大小ABS_MT_WIDTH_MAJOR触摸面积大小

了解了这些Label的含义我们再看看信号量就简单多了,如我们列举几个常见的事件与信号,如下表所示:

操作输出信号按下电源键/dev/input/event0: EV_KEY KEY_POWER DOWN/dev/input/event0: EV_SYN SYN_REPORT /dev/input/event0: EV_KEY KEY_POWER UP/dev/input/event0: EV_SYN SYN_REPORT 音量键下/dev/input/event8: EV_KEY KEY_VOLUMEDOWN DOWN/dev/input/event8: EV_SYN SYN_REPORT /dev/input/event8: EV_KEY KEY_VOLUMEDOWN UP/dev/input/event8: EV_SYN SYN_REPORT 音量键上/dev/input/event8: EV_KEY KEY_VOLUMEUP DOWN/dev/input/event8: EV_SYN SYN_REPORT /dev/input/event8: EV_KEY KEY_VOLUMEUP UP/dev/input/event8: EV_SYN SYN_REPORT 按下物理按键“1”/dev/input/event0: EV_KEY KEY_1 DOWN/dev/input/event0: EV_KEY KEY_1 UP按下物理按键“q”/dev/input/event0: EV_KEY KEY_Q DOWN/dev/input/event0: EV_KEY KEY_Q UP按下软键盘上的“q”字母/dev/input/event0: EV_ABS ABS_X b/dev/input/event0: EV_ABS ABS_Y d5/dev/input/event0: EV_KEY BTN_TOUCH DOWN/dev/input/event0: EV_SYN SYN_REPORT /dev/input/event0: EV_KEY BTN_TOUCH UP/dev/input/event0: EV_SYN SYN_REPORT 按下软件键盘上的的“1”按键/dev/input/event0: EV_ABS ABS_X /dev/input/event0: EV_ABS ABS_Y d7/dev/input/event0: EV_KEY BTN_TOUCH DOWN/dev/input/event0: EV_SYN SYN_REPORT /dev/input/event0: EV_KEY BTN_TOUCH UP/dev/input/event0: EV_SYN SYN_REPORT

从上表中,我们发现要是按下的是物理按键,其输入出来的信息我们很容易读懂,如果按下的是软键盘中的按键,给出的信号信息就是一些位置坐标信息。我们无法直接读懂,当然,我们可以根据这些位置坐标信息,再拿到Android设备的屏幕尺寸,计算比例也能够直接获得按键的具体内容。

当然,输出条件不会是想我们表&#;中的这么规范,中间会夹杂则各式各样的信息,有些可能是你不关心的。这里我们把一些无关的信号量过滤去掉了。实际查看上对应信息条件比较多,大家可以将Android设备连接如自己的电脑进行调试,这里我们就不做一一的解释了。

预防键盘监控

所以,为了安全起见,很多对于输入安全要求比较高的应用软件,除了自定义输入法进行安全输入以外,还需要将键盘上的各个字母数字位置随机打乱,防止黑客们在截获了位置信息后进行按键计算。这个也就是我们常在一些软件中看到打乱的键盘原因,打乱键盘效果如下图所示:

getevent是一个系统级命令,需要在Root情况下才可以使用。这里我们对getevent作为阐述,的主要目的就是告诉大家,在Root后的Android设备中,我们可以使用对Linux底层信号做读取的方式,对设备进行键盘监控。当然,更可以使用sendevent命令,模拟发送事件,这里我们不做阐述了。

Android面试宝典(一位优秀应届生面试经验,很多Android高阶问题) Android面试宝典写一个专属自己的面试宝典:小巫写这篇面试宝典,主要是为了积累经验和记录自己的求职之路。小巫并不是一种教导别人怎么去面试的

Android之Adapter用法总结 1.概念Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如

onSaveInstanceState和onRestoreInstanceState触发的时机 当某个activity变得容易被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。注意上面的

标签: 怎么监控键盘输入

本文链接地址:https://www.jiuchutong.com/biancheng/382291.html 转载请保留说明!

上一篇:ShareSdk实现第三方分享功能

下一篇:Android面试宝典(一位优秀应届生面试经验,很多Android高阶问题)(android面试2021)

  • 减免的企业所得税计入什么科目
  • 印花税征税范围是什么
  • 企业增值税退税是算企业利润的吗
  • 广告费的税前扣除是多少
  • 固定资产一次性扣除账务处理
  • 资产处置损益和固定资产清理的区别
  • 购车增值税可以抵扣多少
  • 转账支票一定要收款人去取吗
  • 公司代个人收承兑汇票
  • 收回已转销的坏账在借方还是贷方
  • 小规模纳税人转让土地使用权
  • 房地产开发企业预缴增值税
  • 前程无忧靠什么赚钱
  • 法人转钱到公户是借款还是投资款
  • 小规模增值税纳税申报表
  • 贸易公司补交所得税怎么做账?
  • 企业购入交易性金融资产支付的交易费用
  • 调整固定资产原值减少
  • 企业开票信息可以改吗
  • 关于工程施工的文章
  • 公司内收取的礼金
  • 职工社保调整
  • dvdram是什么意思
  • 债券转换为普通债权
  • 蚊子叮咬怎么办手抄报
  • php实现微信发红包的方法
  • 如何加强企业应收应付款管理论文
  • 关于增值税专用发票
  • 年中建账年初余额怎么录入
  • 固定资产折旧提完后只剩净残值
  • redis php实例
  • vue实现简易购物车
  • Vue3通透教程【一】Vue3现状—必然趋势?
  • gpgpu编程技术
  • insg命令
  • php注册和登录界面
  • c+c#
  • 非金融企业之间借款利息可以抵扣吗
  • sql server评估期已过版本升级时重启失败
  • 法人转钱入公户要交税吗
  • 公司购买办公楼需要缴纳城镇土地使用税吗
  • 出口货物申报表如何填写
  • 网银转账往来款怎么做账
  • 分公司可以独立签约吗
  • 税金及附加是什么科目编号
  • 小规模没有销售额如何申报
  • 公司与公司之间合作协议
  • 银行定期利息怎么算一年
  • 人力资源外包服务包括哪些
  • 关税征收方式
  • 开出去的发票没有进项发票如何核算成本?
  • 租赁公司账务科目
  • 契税发票错了能作废吗
  • 电子发票是否是原件发票
  • 发票监制章是什么章图片
  • 内部无形资产交什么税
  • 银行余额调节表电子版
  • MySQL删除重复数据只保留一条
  • win10 性能选项
  • win8系统笔记本怎么恢复出厂设置
  • 进程crash是什么意思
  • mac 查看当前用户
  • igfxem module是什么程序
  • 解决linux下set_loginuid failed opening loginuid报错问题
  • win10系统怎么设置开机启动项
  • gnome版本
  • win7系统怎么将新建资料保存到文件夹
  • html中title的作用
  • 微信小程序商品列表代码
  • 常用at命令集
  • 基于javascript的毕业设计
  • Shell、Perl、Python、PHP访问 MySQL 数据库代码实例
  • 使用jquery计算li元素的个数
  • js link global
  • 广西电子税务局怎么报税
  • 深圳社保最迟每月几号交啊多少钱
  • 生猪屠宰企业报价
  • 浙江 国家地理
  • 银行缴纳印花税存在问题和建议
  • 税务师如何执业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设