java - 通过拦截键盘来编写Android键盘记录器?

标签 java android keylogger

背景

作为计算机安全类(class)的学校项目,我和一个 friend 将尝试编写一个 Android 键盘记录器。在查看了现有的解决方案之后,我们得出的结论是,大多数其他解决方案都是通过实现键盘来替换原来的键盘来实现这一点。我们最好避免这种解决方案。

问题

是否有可能以某种方式拦截 Android 键盘,还是我们必须找到其他解决方案?例如,在计算机上您可以拦截中断,但由于 Android 键盘是一个软件,是否有任何实际的中断可能对我们有用?

最佳答案

Android 键盘和 Windows 键盘的工作方式存在差异。

Windows:键盘在可检测到的硬件中断上工作。

Android:在 Android 键盘上通过拦截触摸事件来工作。 键盘应用程序将 View 附加到可用窗口(WindowManagerService),显示特定语言的键盘布局。 然后用户触摸“albhabet”的特定区域,窗口管理器将触摸事件分派(dispatch)给键盘应用程序,键盘应用程序通过识别来检测用户触摸的位置。 触摸evnets坐标,然后通过识别后,它发送“触摸字母表”到 View (例如EditText),该 View 通过InputMethodManagerService绑定(bind)到键盘 或已安装应用程序的自定义键盘服务。

用户在安装时验证的应用程序权限。

因此键盘应用程序在andorid中工作在沙箱中工作,并且它正在做什么,任何人都无法检测到它 由于Android的安全特性,外部应用程序。

因此,基于此,我认为除非设备有可用的硬件键盘,否则您无法检测到任何硬件中断。

关于java - 通过拦截键盘来编写Android键盘记录器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140056/

相关文章:

java - 如何将列表中的多种类型传递给函数?

java - Hibernate继承、Collections和@OrderedBy父类(super class)属性产生MySQL语法错误

android - Gradle 失败,出现 : Failed to load compiled script from classpath [. ../.gradle/caches/jars-9/.../classes.jar]

c - OSX 上的键盘输入

c# - 键盘记录程序崩溃

python - 跟踪自上次击键以来的时间?

Java ProcessBuilder 管道

java - 尝试使用 java 应用程序连接 mySQL 数据库一直遇到困难

android - Room 中的一对多关系

android - 阻止某些 fragment 中的景观可能性