CN107577955A - 一种Android系统应用Hook方法及应用锁 - Google Patents

一种Android系统应用Hook方法及应用锁 Download PDF

Info

Publication number
CN107577955A
CN107577955A CN201710727142.1A CN201710727142A CN107577955A CN 107577955 A CN107577955 A CN 107577955A CN 201710727142 A CN201710727142 A CN 201710727142A CN 107577955 A CN107577955 A CN 107577955A
Authority
CN
China
Prior art keywords
hook
application
android system
file
java
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
Application number
CN201710727142.1A
Other languages
English (en)
Other versions
CN107577955B (zh
Inventor
周荆
陈钟
李青山
关志
李洪生
冯向军
吴琛
王晓青
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Guoxin Cloud Clothing Technology Co Ltd
Peking University
Original Assignee
Beijing Guoxin Cloud Clothing Technology Co Ltd
Peking University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Guoxin Cloud Clothing Technology Co Ltd, Peking University filed Critical Beijing Guoxin Cloud Clothing Technology Co Ltd
Priority to CN201710727142.1A priority Critical patent/CN107577955B/zh
Publication of CN107577955A publication Critical patent/CN107577955A/zh
Application granted granted Critical
Publication of CN107577955B publication Critical patent/CN107577955B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提出一种Android系统应用Hook方法及应用锁;该方法包括:根据功能需求为Android系统实现Java Hook类;将Java Hook类和Hook文件打包到Android应用安装包中;对应用启动流程Hook时从安装包文件中提取出Hook文件;生成Java Hook类的Hook文件执行需要的参数,并通过文件的方式传递;执行注入可执行文件时,根据传递的执行时需要的参数注入到目标进程中,在目标进程中加载动态链接库文件;动态链接库文件加载安装包文件,解析出Java Hook类并执行。所述Android系统应用锁包括:Hook模块、加锁模块、解锁模块。在首次启动Android系统应用锁时执行Hook模块,拦截应用启动流程,将启动应用变为执行应用锁的解锁模块,无需在其他平台上执行,在Android系统直接实现对应用的加解锁。

Description

一种Android系统应用Hook方法及应用锁
技术领域
本发明属于移动互联网网络安全技术领域,具体涉及一种Android系统应用Hook方法及应用锁。
背景技术
应用锁APP是一种能将手机中的应用加锁的APP,用户选择加锁的应用并设置密码之后,再次点击应用图标,需要先输入解锁密码才能进入应用。
现有技术中,已有微锁屏和MaxLock应用锁APP。微锁屏是一款手机锁屏APP,主要功能是为手机提供丰富,美观的锁屏主题,在其工具箱中包含应用锁功能。微锁屏的应用锁功能的技术原理是调用系统接口,不断轮询当前运行的应用,若为加锁应用,则展示锁屏界面。用户正确输入密码之后再撤回锁屏界面。MaxLock是基于Xposed框架的应用锁。用户在使用MaxLock之前,需要先下载并安装Xposed框架,然后才能安装使用MaxLock对应用进行加锁。MaxLock作为Xposed的一个模块运行,原理是利用了Android Java虚拟机中JNI机制的不足,变相实现了Hook。
这些已有的锁屏APP有一定的技术缺陷。微锁屏采用轮询的方式虽然简单,但是需要后台不断侦听,对手机电量,性能存在损耗。另外由于微锁屏是通过界面的替换实现的假加锁,如果用户按下返回键,就可以绕过解锁;如果微锁屏屏蔽返回键,用户按下返回键时系统无响应,降低了用户友好性。MaxLock需要先安装Xposed框架,针对性不强,且用户安装麻烦,难以使用。
发明内容
针对现有应用锁的不足,本发明提出一种Android系统应用Hook方法及应用锁。
本发明的技术方案是:
一种Android系统应用Hook方法,包括:
步骤1:根据功能需求为Android系统实现Java Hook类;
步骤2:将Java Hook类和Hook文件打包到Android应用安装包中;
步骤3:对应用启动流程Hook时从Android系统自动备份的安装包文件中提取出Hook文件;
步骤4:生成Java Hook类的Hook文件执行需要的参数,并通过文件的方式传递;
步骤5:执行注入可执行文件时,注入可执行文件根据传递的执行时需要的参数注入到目标进程中,在目标进程中加载动态链接库文件;动态链接库文件加载安装包文件,解析出Java Hook类并执行,完成对应用启动流程的Hook。
所述步骤1,具体是通过阅读Android系统应用启动部分的源代码,找到其中能够被拦截的点,使用Java反射和代理原理,实现为Java Hook类,拦截应用启动流程,将启动应用变为执行解锁操作。
所述步骤2,所述Hook文件包括注入可执行文件和动态链接库文件,分别用作注入可执行文件和注入目标进程,动态链接库文件在目标进程中加载Java Hook类。
所述步骤3,使用Android系统命令unzip,解压安装包文件,提取出Hook文件并增加Java Hook类的Hook文件的可执行权限。
所述步骤4,使用Android系统命令ps,获取Android系统桌面进程的进程号,调用Android系统API获取安装包的安装路径,并将这些作为执行需要的参数按照指定的格式写入文件,传递执行时需要的参数。
基于所述的Android系统应用Hook方法实现的Android系统应用锁,包括:
Hook模块,基于上述Android系统应用Hook方法实现,在首次启动Android系统应用锁时执行,拦截应用启动流程,使得点击桌面图标的操作不启动应用,而是将启动应用变为执行解锁模块;
加锁模块;根据用户的加锁请求对Android系统的多个应用执行加锁操作,并将密码存储在密码文件中;
解锁模块:在加锁模块存储的密码文件中搜索判断当前启动应用是否已经执行加锁操作:若已经执行加锁操作,则根据用户输入的正确密码启动该应用;若未执行加锁操作,则直接启动该应用。
所述加锁模块能为不同的应用设置不同的密码,将用户设置的密码根据不同类型的密码样式编码,并使用MD5算法加密存储在密码文件中。
本发明的优点:
本发明的Hook方法,基于Hook机制避免了基于轮询的缺点,具有用户友好,几乎不影响系统性能,安装简单,使用方便的特点。本发明的Hook方法不仅限于应用与本发明的应用锁,开发者可以根据自己的需求定制不同功能Hook模块,且不需要依靠其他框架,即可达到Hook的目的,提高了开发的效率。在首次启动Android系统应用锁时执行基于上述Android系统应用Hook方法实现的Hook模块,拦截应用启动流程,使得点击桌面图标的操作不启动应用,而是将启动应用变为执行应用锁的解锁模块,无需在其他平台上执行,在Android系统直接实现对应用的加解锁。
附图说明
图1为本发明具体实施方式的Android系统应用Hook方法流程图;
图2为本发明具体实施方式的Android应用锁流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
一种Android系统应用Hook方法,如图1所示,包括:
步骤1:根据功能需求为Android系统实现Java Hook类;
本实施方式中,为实现拦截应用启动功能需求,通过阅读Android系统应用启动部分的源代码,找到其中能够被拦截的点,使用Java反射和代理原理,实现为Java Hook类,功能是拦截应用启动流程,将启动应用变为执行解锁操作。
步骤2:将Java Hook类的Hook文件打包到Android应用的安装包中;
所述Java Hook类的Hook文件是固定的两个文件,包括注入可执行文件和动态链接库文件,分别用作注入可执行文件和注入目标进程,动态链接库文件在目标进程中加载Java Hook类;这两个文件用于支持Java Hook类的正常运行,若缺少这两个Hook文件,JavaHook类将不能发挥效果。
步骤3:从Android系统自动备份的安装包文件中提取出Java Hook类的两个Hook文件;
本实施方式中使用Android系统命令(unzip),解压安装包文件,提取出Java Hook类的两个Hook文件并增加Java Hook类的两个Hook文件的可执行权限。
步骤4:生成Java Hook类的两个Hook文件执行需要的参数,并通过文件的方式传递;
本实施方式中使用Android系统命令(ps),获取Android系统桌面进程的进程号,调用Android系统API获取安装包的安装路径,并将这些作为执行需要的参数按照指定的格式写入Hook文件,传递执行时需要的参数。
步骤5:执行所述注入可执行文件时,注入可执行文件根据传递的执行时需要的参数注入到目标进程中,在目标进程中加载动态链接库文件;动态链接库文件加载安装包文件,解析出Java Hook类并执行,完成对应用启动流程的Hook。
使用本实施方式所提供的Hook方法,开发者只需要依照本Hook方法步骤中的规则编写少量代码,即可实现Hook。基于本Hook方法,软件开发者可以快速开发,实现不同Hook功能,降低开发成本,缩短开发周期。在下面介绍的Android系统应用锁中,使用此Hook方法实现了Hook模块,并且使用此Hook方法,使得Hook模块正常运行,在应用锁中实现其功能。
基于上述Android系统应用Hook方法实现的Android系统应用锁,如图2所示,包括:
Hook模块,基于上述Android系统应用Hook方法实现,在首次启动Android系统应用锁时执行,拦截应用启动流程,使得点击桌面图标的操作不启动应用,而是将启动应用变为执行应用锁的解锁模块;所述Hook模块的实现方法是:根据功能需求为Android系统实现Java Hook类;具体是为实现拦截应用启动功能需求,通过阅读Android系统应用启动部分的源代码,找到其中能够被拦截的点,使用Java反射和代理原理,实现为Java Hook类,功能是拦截应用启动流程,将启动应用变为执行应用解锁操作。将Java Hook类和两个Hook文件(注入可执行文件和动态链接库文件)打包到Android应用锁app的安装包中;安装应用锁app之后,执行应用锁Hook模块。Hook模块从Android系统自动备份的安装包文件中提取出Java Hook类和两个Hook文件,生成Java Hook类的两个Hook文件执行需要的参数,并通过文件的方式传递;执行所述注入可执行文件时,注入可执行文件根据传递的执行时需要的参数注入到目标进程中,在目标进程中加载动态链接库文件;动态链接库文件加载安装包文件,解析出Java Hook类,执行其所实现的Hook模块,完成对应用启动流程的Hook。
加锁模块;根据用户的加锁请求对Android系统的多个应用执行加锁操作,能为不同的应用设置不同的密码,将用户设置的密码根据不同类型的密码样式编码,并使用MD5算法加密存储在密码文件中;支持多种密码样式,如数字密码,手势密码,指纹密码;
解锁模块:在加锁模块存储的密码文件中搜索判断当前启动应用是否已经执行加锁操作:若已经执行加锁操作,则根据用户输入的正确密码启动该应用;若未执行加锁操作,则直接启动该应用。
应用锁的Hook模块成功执行之后,所有点击桌面图标的启动应用操作都会先到达解锁模块。解锁模块在加锁模块中存下的密码文件中搜索匹配,若发现启动的应用为加锁应用,则弹出解锁界面,输入正确的密码之后再启动应用。若发现要启动的应用未加锁,直接启动应用。

Claims (7)

1.一种Android系统应用Hook方法,其特征在于,包括:
步骤1:根据功能需求为Android系统实现Java Hook类;
步骤2:将Java Hook类和Hook文件打包到Android应用安装包中;
步骤3:对应用启动流程Hook时从Android系统自动备份的安装包文件中提取出Hook文件;
步骤4:生成Java Hook类的Hook文件执行需要的参数,并通过文件的方式传递;
步骤5:执行注入可执行文件时,注入可执行文件根据传递的执行时需要的参数注入到目标进程中,在目标进程中加载动态链接库文件;动态链接库文件加载安装包文件,解析出Java Hook类并执行,完成对应用启动流程的Hook。
2.根据权利要求1所述的方法,其特征在于,所述步骤1,具体是通过阅读Android系统应用启动部分的源代码,找到其中能够被拦截的点,使用Java反射和代理原理,实现为JavaHook类,拦截应用启动流程,将启动应用变为执行解锁操作。
3.根据权利要求1所述的方法,其特征在于,所述步骤2,所述Hook文件包括注入可执行文件和动态链接库文件,分别用作注入可执行文件和注入目标进程,动态链接库文件在目标进程中加载Java Hook类。
4.根据权利要求1所述的方法,其特征在于,所述步骤3,使用Android系统命令unzip,解压安装包文件,提取出Hook文件并增加Java Hook类的Hook文件的可执行权限。
5.根据权利要求1所述的方法,其特征在于,所述步骤4,使用Android系统命令ps,获取Android系统桌面进程的进程号,调用Android系统API获取安装包的安装路径,并将这些作为执行需要的参数按照指定的格式写入文件,传递执行时需要的参数。
6.一种基于权利要求1所述的Android系统应用Hook方法实现的Android系统应用锁,其特征在于,包括:
Hook模块,基于权利要求1所述Android系统应用Hook方法实现,在首次启动Android系统应用锁时执行,拦截应用启动流程,使得点击桌面图标的操作不启动应用,而是将启动应用变为执行解锁模块;
加锁模块;根据用户的加锁请求对Android系统的多个应用执行加锁操作,并将密码存储在密码文件中;
解锁模块:在加锁模块存储的密码文件中搜索判断当前启动应用是否已经执行加锁操作:若已经执行加锁操作,则根据用户输入的正确密码启动该应用;若未执行加锁操作,则直接启动该应用。
7.根据权利要求6所述的Android系统应用锁,其特征在于,所述加锁模块能为不同的应用设置不同的密码,将用户设置的密码根据不同类型的密码样式编码,并使用MD5算法加密存储在密码文件中。
CN201710727142.1A 2017-08-23 2017-08-23 一种Android系统应用Hook方法及应用锁 Active CN107577955B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710727142.1A CN107577955B (zh) 2017-08-23 2017-08-23 一种Android系统应用Hook方法及应用锁

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710727142.1A CN107577955B (zh) 2017-08-23 2017-08-23 一种Android系统应用Hook方法及应用锁

Publications (2)

Publication Number Publication Date
CN107577955A true CN107577955A (zh) 2018-01-12
CN107577955B CN107577955B (zh) 2019-10-25

Family

ID=61034894

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710727142.1A Active CN107577955B (zh) 2017-08-23 2017-08-23 一种Android系统应用Hook方法及应用锁

Country Status (1)

Country Link
CN (1) CN107577955B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110262813A (zh) * 2019-06-25 2019-09-20 上海连尚网络科技有限公司 用于安装应用的方法和装置
WO2021098354A1 (zh) * 2019-11-20 2021-05-27 广州大学 一种基于无障碍服务实现缄默安装的安卓渗透方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104751028A (zh) * 2013-12-25 2015-07-01 北京壹人壹本信息科技有限公司 应用程序加密、解密的方法及装置
CN105095746A (zh) * 2015-07-02 2015-11-25 北京奇虎科技有限公司 应用程序启动鉴权方法及装置
CN106355060A (zh) * 2016-10-31 2017-01-25 Tcl集团股份有限公司 一种基于安卓系统的应用锁实现方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104751028A (zh) * 2013-12-25 2015-07-01 北京壹人壹本信息科技有限公司 应用程序加密、解密的方法及装置
CN105095746A (zh) * 2015-07-02 2015-11-25 北京奇虎科技有限公司 应用程序启动鉴权方法及装置
CN106355060A (zh) * 2016-10-31 2017-01-25 Tcl集团股份有限公司 一种基于安卓系统的应用锁实现方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘井强等: "基于Android系统免Root主防方法的研究", 《网络与信息安全学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110262813A (zh) * 2019-06-25 2019-09-20 上海连尚网络科技有限公司 用于安装应用的方法和装置
CN110262813B (zh) * 2019-06-25 2020-11-17 上海连尚网络科技有限公司 用于安装应用的方法和装置
WO2021098354A1 (zh) * 2019-11-20 2021-05-27 广州大学 一种基于无障碍服务实现缄默安装的安卓渗透方法和装置
US11960869B2 (en) 2019-11-20 2024-04-16 Guangzhou University Android penetration method and device for implementing silent installation based on accessibility services

Also Published As

Publication number Publication date
CN107577955B (zh) 2019-10-25

Similar Documents

Publication Publication Date Title
Blanchet et al. ProVerif 2.00: automatic cryptographic protocol verifier, user manual and tutorial
CN108845812B (zh) 插件更新方法、装置、计算机设备和存储介质
Vidas et al. All your droid are belong to us: A survey of current android attacks
EP2831790B1 (en) Secured execution of a web application
Blanchet et al. Proverif 1.86 pl3: Automatic cryptographic protocol verifier, user manual and tutorial
CN108491235B (zh) 结合动态加载和函数Native化的DEX保护方法
US20210209221A1 (en) System for securing software containers with encryption and embedded agent
KR20120032477A (ko) 화이트박스 암호화를 사용하는 연동 바이너리 보호 방법
CN105205401A (zh) 基于安全密码芯片的可信计算机系统及其可信引导方法
Yang et al. Finding consensus bugs in ethereum via multi-transaction differential fuzzing
CN109863475A (zh) 一种安全元件中的应用的升级方法及相关设备
CN111209558A (zh) 基于区块链的物联网设备身份认证方法以及系统
CN103544434A (zh) 用于确保应用程序安全运行的方法和终端
CN105825131A (zh) 一种基于uefi的计算机安全启动防护方法
CN107577955B (zh) 一种Android系统应用Hook方法及应用锁
US10771462B2 (en) User terminal using cloud service, integrated security management server for user terminal, and integrated security management method for user terminal
CN108322458B (zh) Web应用入侵检测方法、系统、计算机设备和存储介质
CN105187410A (zh) 一种应用的自升级方法及其系统
CN112199208B (zh) 一种在安卓系统上提供额外功能接口的方法与终端
WO2007000660A1 (en) Imparting digital uniqueness to the types of a programming language using a unique digital sequence
JP5962671B2 (ja) 情報処理装置、情報処理方法およびコンピュータプログラム
CN106778193B (zh) 一种客户端和ui交互方法
CN113407198A (zh) 智能合约部署方法和装置
US20220078176A1 (en) Method for connecting a computer application to a secure computer resource
CN106485105A (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