android hook 第三方app_一种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文件,Java Hook类将不能发挥效果。

步骤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模块成功执行之后,所有点击桌面图标的启动应用操作都会先到达解锁模块。解锁模块在加锁模块中存下的密码文件中搜索匹配,若发现启动的应用为加锁应用,则弹出解锁界面,输入正确的密码之后再启动应用。若发现要启动的应用未加锁,直接启动应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值