基于xposed框架对native层函数进行hook的方法、装置及电子装置制造方法及图纸

技术编号:21224360 阅读:24 留言:0更新日期:2019-05-29 05:06
本发明专利技术提供了一种基于xposed框架对native层函数进行hook的方法、装置及电子装置,其中,该方法包括:基于xposed框架对native层函数进行hook的方法,包括:利用xposed框架的目标接口捕获应用被加载的时机;在应用被加载时,利用应用的类加载器反射查找用于加载so库的目标函数;利用目标函数加载用于hook目标native层函数的目标so库。通过本发明专利技术,解决了现有技术中xposed框架无法在native层hook的技术问题,并且改善了安卓系统中针对native层的hook技术兼容性和稳定性不足的问题。

Hook method, device and electronic device for native layer function based on xposed framework

The invention provides a method, device and electronic device for hooking native layer functions based on xposed framework, which includes: a method for hooking native layer functions based on xposed framework, including: capturing the time when an application is loaded by using the target interface of xposed framework; and searching for the so library by using the reflection of the class loader of the application when the application is loaded Objective function; target so library for hook target native layer function is loaded by objective function. The invention solves the technical problem that the xposed framework can not hook in the native layer in the prior art, and improves the problem of insufficient compatibility and stability of hook technology for the native layer in Android system.

【技术实现步骤摘要】
基于xposed框架对native层函数进行hook的方法、装置及电子装置
本专利技术涉及计算机
,具体而言,涉及一种基于xposed框架对native层函数进行hook的方法、装置及电子装置。
技术介绍
现有技术中,安卓的hook技术有Plt-Got替换hook技术、Xposed框架hook技术和substrate等native层内联hook框架。其中,Plt-Got替换hook技术由于对应用内存直接操作,只适用于hook应用自身native层函数,并不适用对全局(安卓系统中全部应用)的hook;Xposed框架仅在Java层hook,缺少native层hook的相关功能;而substrate等native层内联hook框架则兼容性、稳定性不高。相比较pc端的hook技术,安卓的hook技术还不够成熟,难以兼顾控制范围、稳定性和兼容性。针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。
技术实现思路
本专利技术实施例提供了一种基于xposed框架对native层函数进行hook的方法、装置及电子装置,以至少解决现有技术中xposed框架无法在native层hook的技术问题。根据本专利技术的一个实施例,提供了一种基于xposed框架对native层函数进行hook的方法,包括:利用xposed框架的目标接口捕获应用被加载的时机;在应用被加载时,利用应用的类加载器反射查找用于加载so库的目标函数;利用目标函数加载用于hook目标native层函数的目标so库。进一步地,应用的信息包括应用的apk包名,根据应用的信息判断应用是否为目标应用,包括:利用应用的apk包名与目标应用的包名进行匹配,以判断应用是否为目标应用。进一步地,在利用应用的类加载器反射查找用于加载so库的目标函数之前,该方法还包括:利用目标接口获取被加载的应用的信息;根据应用的信息判断应用是否为目标应用,其中,在目标应用被加载时,利用目标应用的类加载器反射查找java.lang.system.load函数。进一步地,目标so库在被加载之后,通过操作应用的内存,将got表中目标native层函数的地址替换为hook函数的地址。根据本专利技术的另一个实施例,提供了一种基于xposed框架对native层函数进行hook的装置,包括:捕获模块,用于利用xposed框架的目标接口捕获应用被加载的时机;查找模块,用于在应用被加载时,利用应用的类加载器反射查找用于加载so库的目标函数;加载模块,用于利用目标函数加载用于hook目标native层函数的目标so库。进一步地,该装置还包括:替换模块,用于目标so库在被加载之后,通过操作应用的内存,将got表中目标native层函数的地址替换为hook函数的地址。进一步地,该装置还包括:获取模块,用于在利用所述应用的类加载器反射查找用于加载so库的目标函数之前,利用所述目标接口获取被加载的所述应用的信息;判断模块,用于根据所述应用的信息判断所述应用是否为目标应用,其中,在所述目标应用被加载时,利用所述目标应用的类加载器反射查找java.lang.system.load函数。进一步地,应用的信息包括应用的apk包名,判断模块包括:匹配单元,用于利用应用的apk包名与目标应用的包名进行匹配,以判断应用是否为目标应用。根据本专利技术的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。根据本专利技术的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。通过本专利技术,在监听到应用加载时,通过应用的类加载器反射查找加载so库的函数,注入所需的so库,以利用so库实现在native层hook函数的效果,并且,利用了xposed框架的全局hook能力,通过xposed框架对孵化器进程流程的改动实现了对所有应用的hook,进而实现了针对native层的全局hook,提高了xposed框架在native层的适用性,解决了现有技术中xposed框架无法在native层hook的技术问题。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1是根据本专利技术实施例的一种可选的基于xposed框架对native层函数进行hook的方法的流程图;图2是根据本专利技术实施例的另一种可选的基于xposed框架对native层函数进行hook的方法的流程图;图3是根据本专利技术实施例的基于xposed框架对native层函数进行hook的装置的示意图。具体实施方式为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。实施例1本实施例提供了一种基于xposed框架对native层函数进行hook方法,可以应用于客户端侧,其中,客户端可以运行中移动终端、手持终端或类似的运算设备之中。运行在不同的运算设备仅是方案在执行主体上的差异,本领域人员可预见在不同运算设备中运行能够产生相同的技术效果。可选的,本专利技术实施例提供的方法可以通过xposed框架模块形式实现。本实施例提供的基于xposed框架对native层函数进行hook方法,如图1所示,包括如下步骤:步骤101,利用xposed框架的目标接口捕获应用被加载的时机。本专利技术实施例需要应用在安装有xposed框架的安卓系统中,在执行步骤101之前,需要在安卓系统中刷入(安装)xposed框架,以利用xposed框架所提供的功能。具体的,xposed框架提供了用于捕获应用被加载的时机的目标接口(IXposedHookLoadPackage接口),该接口在应用被加载的时候调用,以用于对应用进行hook。本专利技术实施例以目标接口作为hook入口,开始执行步骤102~步骤103的流程。xposed框架通过更改安卓系统中的源码app_proccess中的app_main.c,以对zygote孵化器的文件进行替换。在安卓系统中每个apk(安卓安装包)在启动过程中,都会分裂(或者说复制)一个新的zygote孵化器进程,通过对安卓本文档来自技高网
...

【技术保护点】
1.一种基于xposed框架对native层函数进行hook的方法,其特征在于,所述方法包括:利用xposed框架的目标接口捕获应用被加载的时机;在所述应用被加载时,利用所述应用的类加载器反射查找用于加载so库的目标函数;利用所述目标函数加载用于hook目标native层函数的目标so库。

【技术特征摘要】
1.一种基于xposed框架对native层函数进行hook的方法,其特征在于,所述方法包括:利用xposed框架的目标接口捕获应用被加载的时机;在所述应用被加载时,利用所述应用的类加载器反射查找用于加载so库的目标函数;利用所述目标函数加载用于hook目标native层函数的目标so库。2.根据权利要求1所述的方法,其特征在于,所述目标so库在被加载之后,通过操作所述应用的内存,将got表中所述目标native层函数的地址替换为hook函数的地址。3.根据权利要求1所述的方法,其特征在于,在利用所述应用的类加载器反射查找用于加载so库的目标函数之前,所述方法还包括:利用所述目标接口获取被加载的所述应用的信息;根据所述应用的信息判断所述应用是否为目标应用,其中,在所述目标应用被加载时,利用所述目标应用的类加载器反射查找java.lang.system.load函数。4.根据权利要求3所述的方法,其特征在于,所述应用的信息包括所述应用的apk包名,根据所述应用的信息判断所述应用是否为目标应用,包括:利用所述应用的apk包名与所述目标应用的包名进行匹配,以判断所述应用是否为所述目标应用。5.一种基于xposed框架对native层函数进行hook的装置,其特征在于,所述装置包括:捕获模块,用于利用xposed框架的目标接口捕获应用被加载的时机;查找模块,用于在所述应用被...

【专利技术属性】
技术研发人员:张振国罗斌熊超超
申请(专利权)人:三六零企业安全技术珠海有限公司北京奇安信科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1