CN109558728A - 一种Android应用内输入关键字拦截的方法 - Google Patents
一种Android应用内输入关键字拦截的方法 Download PDFInfo
- Publication number
- CN109558728A CN109558728A CN201811310875.6A CN201811310875A CN109558728A CN 109558728 A CN109558728 A CN 109558728A CN 201811310875 A CN201811310875 A CN 201811310875A CN 109558728 A CN109558728 A CN 109558728A
- Authority
- CN
- China
- Prior art keywords
- input
- keyword
- android
- intercepted
- content
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
- G06F3/0233—Character input methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
本发明公开了一种Android应用内输入关键字拦截的方法,包括以下步骤:步骤1:启动Android应用;步骤2:初始化输入环境;步骤3:在拦截点对应用程序获取的通道进行代理,然后提交到系统输入法管理系统;步骤4:用户在输入法应用端输入内容;步骤5:通过拦截通道来获取到用户输入的内容;步骤6:获取输入内容后,对输入的关键字进行处理;步骤7:将关键字处理后的内容提交进系统输入法管理系统,并通过控件进行显示。本发明采用上述方法,能够实现应用内关键字拦截,无需修改应用的源码,适配性强,且拦截效率高,用户体验好。
Description
技术领域
本发明属于关键字拦截领域,具体涉及一种Android应用内输入关键字拦截的方法。
背景技术
目前,android智能手机已经十分普及了,对于一些行业对关键信息比较看重的领域,或者对用户输入信息进行大数据审计分析的领域,信息的输入显得特别重要。怎样才能在不改变输入法源码的状态下,安全、快速实现关键字拦截,成为了眼下的一个研究课题。目前,现有的一些现成方案或多或少都存在一定的缺陷:
1)OnKeyListener,实现EditText的OnKeyListener并不能拦截EditText的输入,OnKeyListener只能够监听到一些按物理键事件,例如菜单键、返回键、音量键等,而输入法作为一个单独的进程,EditText与输入法的通讯显然是OnKeyListener所无能为力的;
2)TextWatcher,相信很多人做这个功能的第一反应都是使用TextWatcher,因为TextWatcher可以监听到EditText输入前后内容的变化,但那也只是监听到而已它并没有办法真正拦截到输入,而只是在某一字符输入发生后,对EditText做一个事后的处理。典型的例子如下,假设我监听到了”s“的输入,但实际上我是不允许”s“输入的,那么我在TextWatcher中监听到”s“输入了以后,重新设置EditText的内容。但这样做的恶果就是重设EditText的内容后,又会回调TextWatcher的那几个方法,造成死循环。当然您可以设置一个标志位来停止这个循环,但麻烦不止于此。因为你是先让字符输入,然后再手动把它删除,那么这其中涉及到的光标位置调整,漏洞百出。
发明内容
为了克服现有技术的不足,本发明提出一种Android应用内输入关键字拦截的方法,解决现有的拦截方法没法真正实现输入拦截,而要实现输入拦截需要进行各种修改,不仅会导致各种漏洞,而且适配性较差、用户体验不好的问题。
本发明为实现上述目的,采用以下技术方案实现:
一种Android应用内输入关键字拦截的方法,包括以下步骤:
步骤1:启动Android应用;
步骤2:初始化输入环境;
步骤3:在拦截点对应用程序获取的通道进行代理,然后提交到系统输入法
管理系统;
步骤4:用户在输入法应用端输入内容;
步骤5:通过拦截通道来获取到用户输入的内容;
步骤6:获取输入内容后,对输入的关键字进行处理;
步骤7:将关键字处理后的内容提交进系统输入法管理系统,并通过控件进行显示。
进一步地,作为优选技术方案,所述步骤3中,hook机制下,代理输入法与Android应用的交互通道interface InputConnection的接口。
进一步地,作为优选技术方案,所述步骤5中,通过android API拦截InputMethodManager的调用,接着通过InputMethodManager服务获取mServedInputConnectionWrapper的connection,再通过反射IInputConnectionWrapper类获取mInputConnection的变量,实现获取用户的输入。
进一步地,作为优选技术方案,所述步骤6中,对关键字的处理包括替换、过滤、记录及上报。
进一步地,作为优选技术方案,所述步骤6中,通过本地实现一个类implementsInputConnection接口重写,以替换应用的InputConnection对象而进行关键字的拦截替换。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明通过android API拦截InputMethodManager的调用,接着通过InputMethodManager服务获取mServedInputConnectionWrapper的connection,再通过反射IInputConnectionWrapper类获取mInputConnection的变量,并通过本地实现一个类implements InputConnection接口重写,以替换应用的InputConnection对象而进行关键字的拦截替换,从而实现了真正意义上的关键字拦截,且不需要修改应用的源码,适配性强。
(2)本发明对于企业管理者来说,对应企业管理者来说,可以在员工处于无感知的状态下,监控员工的输入内容,且对一些敏感词汇进行替换、记录或者上报等操作,可以对员工的输入行为、使用词汇及输入习惯进行分析,起到辅助了解员工的目的。
(3)本发明可以准确记录整个手机或者平板电脑上的应用的用户输入信息,并对用户输入信息进行过滤、统计、分析,并可进一步分析用户行为,另外,对高频词汇的收集及研究也有非常重要的意义。
附图说明
图1为本发明的方法流程图;
图2为本发明的应用内拦截某个输入的过程示意图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例:
如图1、图2所示,本实施例所述的一种Android应用内输入关键字拦截的方法,包括以下步骤:
步骤1:启动Android应用;
步骤2:初始化输入环境;
步骤3:在拦截点对应用程序获取的通道进行代理,然后提交到系统输入法
管理系统;
步骤4:用户在输入法应用端输入内容;
步骤5:通过拦截通道来获取到用户输入的内容;
步骤6:获取输入内容后,对输入的关键字进行处理,比如替换、过滤、记录及上报等;
步骤7:将关键字处理后的内容提交进系统输入法管理系统,并通过控件进行显示。
在本实施例中,对于android系统而言,应用、输入法、系统三者相互依赖,相辅相成地工作,在大量的开发中我们发现InputConnection.java是连接用户应用的桥梁,该接口还有commitText这个重要的方法,事实证明只要代理InputConnectionWrapper相关的InputConnection,而这个类的实现方法中有多个极为可靠的方法,比如提交文本和按键事件,继承于InputConnectionWrapper,实现自己的InputConnection并且再替换返回。在自定义的InputConnectionWrapper类中,可实现输入法输入和按键时间的相关方法的拦截。在某些方法中,如果执行父类的某些方法后返回true,那么表示不拦截;如果返回false,则表示拦截;至此拦截输入控件view与输入法的通讯已经成功实现。
本实施例中,由于interface InputConnection是输入法与Android应用的交互通道,通过动态代理该交互通道的接口并重写该接口,即可实现输入法提交的相关文本的关键字的拦截,并将拦截处理后的文本再次提交到文本域。因此,只需要选择合适的hook点,即可达到拦截的目的。
本实施例通过android API拦截InputMethodManager的调用,当应用启动时,调用某些方法时通过接着通过InputMethodManager服务而获取mServedInputConnectionWrapper的connection,再通过反射IInputConnectionWrapper类获取mInputConnection的变量,本地实现一个类implements InputConnection接口重写其方法方法,达到替换应用的InputConnection对象,进而获取用户的输入去进行关键字的拦截替换。
本实施例的InputManager由UI控件(View,TextView,EditText等)调用,用来操作输入法,比如,打开、关闭、切换输入法等。
本实施例中,InputMethodManagerService.java是整个系统的总控制中心,它通过管理三个模块来实现系统的输入法框架,分别是WindowManagerService、InputMethodService以及InputManager,WindowManagerService负责显示输入法,接收用户事件;InputMethodService负责输入法内部逻辑,键盘布局,选词等,并最终把选出的字符显示出来,具体地,最终把选出的字符通过commitText提交出来;InputManager由UI控件(View、TextView、EditText等)调用,用来操作输入法,比如打开、关闭、切换输入法等。
本发明通过采用上述方法,对应企业管理者来说,可以在员工处于无感知的状态下,监控员工的输入内容,且对一些敏感词汇进行替换、记录或者上报等操作。
上述方法还能够针对一些特殊情况进行规避,比如军队人员等特殊机构不允许人员向网络发送敏感词汇或者关键信息,运用本发明,可很好地解决这一问题。
对于企业管理者来说,可以监控某个应用的输入信息,对员工的输入内容进行管控、监控,避免企业机密的泄露,当然,管理者还可以对员工的输入行为、使用词汇及输入习惯进行分析,起到辅助了解员工的目的。
更进一步地,上述方法还可以准确记录整个手机或者平板电脑上的应用的用户输入信息,并对用户输入信息进行过滤、统计、分析,并可进一步分析用户行为,另外,对高频词汇的收集及研究也有非常重要的意义。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。
Claims (5)
1.一种Android应用内输入关键字拦截的方法,其特征在于,包括以下步骤:
步骤1:启动Android应用;
步骤2:初始化输入环境;
步骤3:在拦截点对应用程序获取的通道进行代理,然后提交到系统输入法管理系统;
步骤4:用户在输入法应用端输入内容;
步骤5:通过拦截通道来获取到用户输入的内容;
步骤6:获取输入内容后,对输入的关键字进行处理;
步骤7:将关键字处理后的内容提交进系统输入法管理系统,并通过控件进行显示。
2.根据权利要求1所述的一种Android应用内输入关键字拦截的方法,其特征在于,所述步骤3中,hook机制下,代理输入法与Android应用的交互通道interfaceInputConnection的接口。
3.根据权利要求1所述的一种Android应用内输入关键字拦截的方法,其特征在于,所述步骤5中,通过android API拦截InputMethodManager的调用,接着通过InputMethodManager服务获取mServedInputConnectionWrapper的connection,再通过反射IInputConnectionWrapper类获取mInputConnection的变量,实现获取用户的输入。
4.根据权利要求1所述的一种Android应用内输入关键字拦截的方法,其特征在于,所述步骤6中,对关键字的处理包括替换、过滤、记录及上报。
5.根据权利要求4所述的一种Android应用内输入关键字拦截的方法,其特征在于,所述步骤6中,通过本地实现一个类implements InputConnection接口重写,以替换应用的InputConnection对象而进行关键字的拦截替换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811310875.6A CN109558728B (zh) | 2018-11-06 | 2018-11-06 | 一种Android应用内输入关键字拦截的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811310875.6A CN109558728B (zh) | 2018-11-06 | 2018-11-06 | 一种Android应用内输入关键字拦截的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109558728A true CN109558728A (zh) | 2019-04-02 |
CN109558728B CN109558728B (zh) | 2021-09-10 |
Family
ID=65865684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811310875.6A Active CN109558728B (zh) | 2018-11-06 | 2018-11-06 | 一种Android应用内输入关键字拦截的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558728B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073542A (zh) * | 2010-12-22 | 2011-05-25 | 浙大网新科技股份有限公司 | Linux应用在Android手机上运行时整合中文输入法的方法 |
CN104111977A (zh) * | 2014-06-24 | 2014-10-22 | 小米科技有限责任公司 | 信息匹配方法、装置及终端 |
CN104320693A (zh) * | 2014-11-11 | 2015-01-28 | 浪潮软件集团有限公司 | 一种Android系统的智能电视上实现输入法外发光的方法 |
CN105898740A (zh) * | 2016-06-12 | 2016-08-24 | Tcl集团股份有限公司 | 一种基于移动设备通讯的信息加密解密方法及系统 |
US20170228041A1 (en) * | 2012-05-17 | 2017-08-10 | Mediatek Singapore Pte. Ltd. | Input error-correction methods and apparatuses, and automatic error-correction methods, apparatuses and mobile terminals |
-
2018
- 2018-11-06 CN CN201811310875.6A patent/CN109558728B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073542A (zh) * | 2010-12-22 | 2011-05-25 | 浙大网新科技股份有限公司 | Linux应用在Android手机上运行时整合中文输入法的方法 |
US20170228041A1 (en) * | 2012-05-17 | 2017-08-10 | Mediatek Singapore Pte. Ltd. | Input error-correction methods and apparatuses, and automatic error-correction methods, apparatuses and mobile terminals |
CN104111977A (zh) * | 2014-06-24 | 2014-10-22 | 小米科技有限责任公司 | 信息匹配方法、装置及终端 |
CN104320693A (zh) * | 2014-11-11 | 2015-01-28 | 浪潮软件集团有限公司 | 一种Android系统的智能电视上实现输入法外发光的方法 |
CN105898740A (zh) * | 2016-06-12 | 2016-08-24 | Tcl集团股份有限公司 | 一种基于移动设备通讯的信息加密解密方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109558728B (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11853290B2 (en) | Anomaly detection | |
US12032637B2 (en) | Single click delta analysis | |
US11580680B2 (en) | Systems and interactive user interfaces for dynamic retrieval, analysis, and triage of data items | |
US11258693B2 (en) | Collaborative incident management for networked computing systems | |
CN111092852B (zh) | 基于大数据的网络安全监控方法、装置、设备及存储介质 | |
US11442802B2 (en) | Linking related events for various devices and services in computer log files on a centralized server | |
CN110278097B (zh) | 一种基于Android系统的服务器运维系统及方法 | |
US8707336B2 (en) | Data event processing and application integration in a network | |
US20180091535A1 (en) | Snapshot of a forensic investigation for enterprise threat detection | |
US10616254B2 (en) | Data stream surveillance, intelligence and reporting | |
CN111352921A (zh) | 基于elk的慢查询监控方法、装置、计算机设备及存储介质 | |
EP2608041B1 (en) | Monitoring user activity on smart mobile devices | |
US9477574B2 (en) | Collection of intranet activity data | |
US9953100B2 (en) | Automated runtime command replacement in a client-server session using recorded user events | |
US10262133B1 (en) | System and method for contextually analyzing potential cyber security threats | |
US20230259647A1 (en) | Systems and methods for automated discovery and analysis of privileged access across multiple computing platforms | |
US9054969B2 (en) | System and method for situation-aware IP-based communication interception and intelligence extraction | |
CN116894019A (zh) | 事件数据处理 | |
US20140143221A1 (en) | Data Access Logging | |
Steinhauer et al. | Topic modeling for anomaly detection in telecommunication networks | |
US20140122163A1 (en) | External operational risk analysis | |
US10083246B2 (en) | Apparatus and method for universal personal data portability | |
CN109558728A (zh) | 一种Android应用内输入关键字拦截的方法 | |
US20140337728A1 (en) | Operating oracle forms using a web service | |
CN116894018A (zh) | 事件数据处理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |